On Device Tracing

Android P では on-device tracing すなわちデバイス上で Systrace をとる機能が追加された。これは性能バグ担当者からすると割と game changer である。

...というのを上司がファイルしてきた性能バグで学ぶ。この上司はもともと Android の中のひとだっただけあって色々よくわかっており、性能バグに bugreport ファイルだけでなくデバイス上で採取した ctrace ファイル(圧縮 Systrace ダンプ) を添付してくれた。たくさんのアプリを起動しまくり、かつネットワークも怪しい環境での Systrace. 今までに見たことのない現象が色々記録されている。すごい。こりゃいいわ。まあそういう厳しい環境下で怪しい挙動をする、とかいわれても直せないのだが・・・。

ところで Systrace が出力する HTML はでかい。でかすぎると Chrome が crash するため、事実上 Systrace ダンプの大きさを制限していた。自分も今まではでかい Systrace の閲覧を諦めてきたのだが上司のバグを無視するわけにもいかず重い腰をあげて回避策を調べてみた。

結論としては  V8 の heap size を大きくするフラグをわたして Chrome を起動すればよい。--js-flags="--max-old-space-size=10000" みたいな。Chrome のバグ参照のこと。

追記

500MB くらいになるとこのトリックをもってしても Chrome が死んでしまう。みんなどうしてんのこれ・・・。