Chromium Chronicle #20: ベンチマーク テストハーネス

エピソード 20: John Chen、ワシントン州ベルビュー(2021 年 4 月)
前のエピソード

速度は Chrome の 4 つの基本原則の一つです。ベンチマークを追加すると、簡単にパフォーマンスの低下を防ぎ、時間の経過とともにパフォーマンスを向上させることができます。適切なベンチマークは反復サイクルが速く、UMA よりもかなり早い段階でパフォーマンスの低下を検出できます。また、新機能のパフォーマンスを測定するのに適しています。

ベンチマークはラボで定期的に実行されます。回帰が見つかると、bisect が自動的に原因となっている CL を見つけ、CL のオーナーにバグを割り当てます。

Chrome のベンチマークは、ウェブページの一連のインタラクション(ストーリー)とパフォーマンスの測定結果を組み合わせたものです。同様のケースはベンチマーク ハーネスにグループ化されます。新しいベンチマークは通常、既存のハーネスのいずれかに分類されます。

  • システムの健全性
  • 読み込み中
  • メモリ
  • レンダリング
  • 電源
  • スタートアップ
  • V8 ランタイム
  • Media
  • WebRTC
  • プレスルーム
  • Blink Perf

テレメトリー フレームワークは、記録されたストーリーをリプレイして、Chrome のユーザー操作をシミュレートしながら、Chrome のアクティビティを記録するトレースを収集します。ストーリーが終了すると、フレームワークはさまざまなパフォーマンス指標を実行してトレースを分析し、パフォーマンス結果を計算します。

既存のハーネスに含まれる既存の指標を使用して新しいストーリーを追加することで、Chrome の新しいパフォーマンス テストケースのほとんどに対応できます。また、追加のトレースを収集して既存のベンチマークに指標を追加したり、追加のフラグをブラウザに渡したりすることもできます。

他のハーネスには合わない 1 回限りのケースには、Blink Perf を使用してください。Blink Perf では、1 回限りのページのトレース イベントを測定できます。

ベンチマークのストーリーはシンプルに行い、シナリオの完了に必要な最小限のインタラクションだけを含めます。テストケースが複雑な場合、自動化が困難だったり、不安定になったりする可能性があります。

テストは、特に重要なユースケースに対応する最小限の数に限定してください。ベンチマーク インフラストラクチャは維持費が高くなります。サポートされているハードウェアの一覧については、Chrome Speed デバイスをご覧ください。

パフォーマンスを測定する方法は複数あります。テレメトリー ベースのベンチマークは Chrome を外部プロセスから制御するため、常に必要なレベルの制御を提供できるとは限りません。また、gtest ベースのベンチマークでは、テストコードで Chrome コードと同じプロセスを共有できます。また、ラボの代わりに UMA を使用してユーザーのデバイスのパフォーマンスを測定するなど、他のパフォーマンス ツールを検討することもできます。

Chrome ベンチマークの詳細telemetry@chromium.org までメールでお問い合わせください。

補足資料