Migrate to requesting Perfetto timelines containing interned strings from the VM Service
- 主要言語
- Dart
- スター
- 1.7k
- フォーク
- 404
- 平均マージ
- 6日 17時間
- マージ済み PR(30日)
- 18
説明
@mraleph has made it possible for the VM Service to return Perfetto-format timeline protos with interned strings, which can be much smaller than protos without interned strings. A measurement that he recorded showed that a timeline containing 60k slices went from 15MB to 5MB once interned strings were used. The Perfetto trace viewer knows how to decode interned strings, but since DevTools reads the data in timeline protos itself, it will need to be migrated before it can take advantage of the size reduction.
To migrate, DevTools needs to upgrade to `package:vm_service_protos 2.0.0`, and then implement deinterning as done in https://github.com/dart-lang/sdk/blob/cfeda654176d7c2cf006eeef269a458cdf977f32/pkg/vm_service/test/get_perfetto_vm_timeline_rpc_test.dart#L42. To test the migration, the VM flag `--intern-strings-when-writing-perfetto-timeline` makes it so that `getPerfettoVMTimeline` VM Service RPCs return protos with interned strings. Once the migration is complete, `--intern-strings-when-writing-perfetto-timeline` can become the VM's default behaviour.
コントリビューションガイド
調査の方向性
package:vm_service_protos 2.0.0 にアップグレードし、DevTools における getPerfettoVMTimeline RPC の処理を起点にします。deinterning 用に参照されている vm_service テストを使用し、--intern-strings-when-writing-perfetto-timeline を付けて実行します。DevTools が interned strings を含むタイムラインを正しく読み取れれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- dart
- 領域
- devtools, performance
- issue の種類
- リファクタリング
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100