こんにちは、
IMX8MP をベースにしたカスタム ボードを使用していますが、Android 11 から Android 14 にアップグレードしたときにパフォーマンスの問題がいくつか発生しました。デバイスの使用時に、トランジションやアニメーションが遅く感じることに気づきました。
評価のために、IMX8MP EVK ボードで同じテストを実行しました。デバイスの gfxinfo を調べたところ、 Janky フレーム、Number High 入力レイテンシ、および GPU パーセンタイルに大きな違いがあることがわかりました。
Android 11:
Total frames rendered: 1372
Janky frames: 204 (14.87%)
50th percentile: 7ms
90th percentile: 34ms
95th percentile: 77ms
99th percentile: 200ms
Number Missed Vsync: 91
Number High input latency: 274
Number Slow UI thread: 89
Number Slow bitmap uploads: 1
Number Slow issue draw commands: 61
Number Frame deadline missed: 145
50th gpu percentile: 2ms
90th gpu percentile: 3ms
95th gpu percentile: 3ms
99th gpu percentile: 4msAndroid 14:
Total frames rendered: 1136
Janky frames: 429 (37.76%)
Janky frames (legacy): 600 (52.82%)
50th percentile: 29ms
90th percentile: 73ms
95th percentile: 113ms
99th percentile: 250ms
Number Missed Vsync: 130
Number High input latency: 755
Number Slow UI thread: 254
Number Slow bitmap uploads: 3
Number Slow issue draw commands: 376
Number Frame deadline missed: 429
Number Frame deadline missed (legacy): 342
50th gpu percentile: 4ms
90th gpu percentile: 23ms
95th gpu percentile: 23ms
99th gpu percentile: 24msAndroid 15:
Total frames rendered: 1093
Janky frames: 318 (29.09%)
Janky frames (legacy): 639 (58.46%)
50th percentile: 18ms
90th percentile: 97ms
95th percentile: 105ms
99th percentile: 109ms
Number Missed Vsync: 221
Number High input latency: 1028
Number Slow UI thread: 145
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 317
Number Frame deadline missed: 318
Number Frame deadline missed (legacy): 309
50th gpu percentile: 11ms
90th gpu percentile: 4950ms
95th gpu percentile: 4950ms
99th gpu percentile: 4950msこれは既知の問題ですか、それともこの問題を解決する方法についてのヒントはありますか?
こんにちは@JK-dev 、
データをありがとうございます。社内で調査を行い、何か発見したらご連絡いたします。
こんにちは、 @JuanJorge_Mendoza さん、
A16とA13でテストをしました。
Android 16:
Total frames rendered: 946
Janky frames: 414 (43.76%)
Janky frames (legacy): 631 (66.70%)
50th percentile: 30ms
90th percentile: 113ms
95th percentile: 200ms
99th percentile: 350ms
Number Missed Vsync: 180
Number High input latency: 764
Number Slow UI thread: 265
Number Slow bitmap uploads: 7
Number Slow issue draw commands: 384
Number Frame deadline missed: 414
Number Frame deadline missed (legacy): 366
50th gpu percentile: 11ms
90th gpu percentile: 4950ms
95th gpu percentile: 4950ms
99th gpu percentile: 4950msAndroid 13:
Total frames rendered: 1000
Janky frames: 284 (28.40%)
Janky frames (legacy): 397 (39.70%)
50th percentile: 12ms
90th percentile: 69ms
95th percentile: 129ms
99th percentile: 250ms
Number Missed Vsync: 122
Number High input latency: 446
Number Slow UI thread: 176
Number Slow bitmap uploads: 1
Number Slow issue draw commands: 242
Number Frame deadline missed: 284
Number Frame deadline missed (legacy): 248
50th gpu percentile: 3ms
90th gpu percentile: 23ms
95th gpu percentile: 24ms
99th gpu percentile: 4950msこんにちは@JK-dev 、
はい、同じテストを実行して結果を転送してください。
よろしくお願いいたします。
フアン・ホルヘ
こんにちは、 @JuanJorge_Mendoza さん、
返信ありがとうございます!Janky フレームのテストとして、システムを起動して 1 回再起動しただけで、初回起動時の最適化によって問題が発生しないようにし、設定アプリ内を移動しました。次に、次のように gfxinfo を読み取ります。
adb shell dumpsys gfxinfoこれが有効なテストであるとおっしゃるなら、A12、A13、A16 で喜んで実行します。
こんにちは@JK-dev 、
いいえ、それは問題ではないはずです。
Janky フレームをテストするために使用したテストを共有していただけますか?また、可能であれば、A12 と A13 でも同じテストを実行していただけますか?問題がどこで発生し始めたのかを追跡するのに役立ちます。
よろしくお願いいたします。
フアン・ホルヘ
こんにちは@danielchen 、
ディスプレイは 720p の解像度のみをサポートします。これは問題ではないと思います。
こんにちは@JK-dev
どのようなディスプレイ解像度を使用していますか?これを下げると GPU/CPU 負荷が軽減され、全体的なパフォーマンスが向上するかどうかを確認してください。
@danielchen返信ありがとうございます。以前にもこの投稿を見たことがありますが、私の理解では、userdebug ビルドではなくユーザー ビルドを使用すれば問題はなくなるはずという意味ですが、実際はそうではありません。私たちにとっては、ユーザー イメージと userdebug イメージで同じようですが、システム全体でデバッグ可能をオフにする別の方法はありますか?
こんにちは@JK-dev
はい、これは Android 14 以降の i.mx8mp における既知の問題です。
Android 14 以降では、デバッグ アプリのより広範なトレースとメモリ トラッキングが有効になり、以前のバージョンと比較してレンダリングが 1.5 ~ 2 倍遅くなる CAN があります。これは、UI Thread、GPU スケジューリング、および入力レイテンシに影響します。
簡単な回避策と詳細については、以下のリンクを参照してください。
https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/Android-14 での低パフォーマンス/ta-p/1991262
よろしくお願いします。
ダニエル
こんにちは@JK-dev 、
応答が遅くなり申し訳ありません。8MP の GUI を最適化するのにしばらく時間がかかりました。
パッチ「0001-MA-22638-Update-expected-present-time-to-optimize-re.patch」は、framework/native のリフレッシュ レートを最適化するために使用されます。vendor/nxp-opensource/imx にさらに2つのパッチを適用する必要があります。
問題が解決したかどうかお知らせください
こんにちは、 @JuanJorge_Mendoza さん、
返事が遅くなってごめんなさい。休暇中でした。パッチをありがとうございます!パッチをテストしたところ、ナビゲーション時に若干の改善が見られることがわかりました。ただし、負荷が高かったり、アニメーションが増えたりすると、システムは非常に遅くなり、ほとんどのフレームが非常に遅れて到着します。これを再現するには、たとえば、「設定」->「アプリ」->「すべてのアプリ」->「システムアプリを含める」に移動して、そのリストをスクロールします。フレームの 50% 以上が遅れていることがわかります。
負荷が高かったり、アニメーションが増えたりすると
> 前より悪くなりましたか?このパッチを使用した場合と使用しない場合の具体的なパフォーマンス比較データはありますか?
こんにちは@joanxie 、
いいえ、パフォーマンスは以前より少し良くなっています。
パッチなしの場合:
Total frames rendered: 1015
Janky frames: 376 (37.04%)
Janky frames (legacy): 731 (72.02%)
50th percentile: 31ms
90th percentile: 150ms
95th percentile: 200ms
99th percentile: 400ms
Number Missed Vsync: 262
Number High input latency: 1167
Number Slow UI thread: 368
Number Slow bitmap uploads: 1
Number Slow issue draw commands: 26
Number Frame deadline missed: 376
Number Frame deadline missed (legacy): 386
50th gpu percentile: 4ms
90th gpu percentile: 11ms
95th gpu percentile: 11ms
99th gpu percentile: 12ms
パッチを適用すると:
Total frames rendered: 2078
Janky frames: 594 (28.59%)
Janky frames (legacy): 1050 (50.53%)
50th percentile: 21ms
90th percentile: 133ms
95th percentile: 200ms
99th percentile: 400ms
Number Missed Vsync: 367
Number High input latency: 2045
Number Slow UI thread: 567
Number Slow bitmap uploads: 4
Number Slow issue draw commands: 68
Number Frame deadline missed: 594
Number Frame deadline missed (legacy): 580
50th gpu percentile: 4ms
90th gpu percentile: 11ms
95th gpu percentile: 11ms
99th gpu percentile: 12ms
ご覧のとおり、パッチにより Janky フレームの数が減り、50% パーセンタイルも改善されましたが、まだ十分ではありません。
操作は UI 経由で行いましたか? はいの場合、スクリプトや特定の手順はありますか?その後、Androidチームに転送してさらに検証とデバッグを行うことができます
こんにちは@joanxie 、
基本的には以前行ったテストと同じものです。Android チームにとって十分なテストとは何でしょうか?
彼らは、パフォーマンステストを実行して詳細なパフォーマンス低下データを表示するスクリプトを提供してもらい、それを再現してもらいたいと思っています。なぜなら、彼ら側では同じ問題が見つからないからです。