Chromeperf 上傳與設定

本頁面說明如何將 Fuchsia 版本的效能結果上傳至 Chromeperf,以及如何設定 Fuchsia 使用的 Chromeperf。

其中的某些部分是在 Google 內部程式碼中實作,此處並未提供完整說明。Google 員工可參閱本文件的 Google 內部版本以瞭解詳情。

上傳的程式碼路徑

上傳至 Chromeperf 的程式碼路徑會跨越多個位置,因此程式碼路徑會有些複雜:

  • 建構工具設定:catapult.star 檔案包含對應項目,指定哪些建構工具應將效能結果上傳至 Chromeperf,並允許重新對應名稱。這位於 Google 內部版本的 integration.git 中,位於 infra/config/

    • catapult.star 中的項目會在對應建構工具的屬性中設定巢狀欄位 catapult_dashboard_mastercatapult_dashboard_bot。這些屬性會儲存在在簽入 integration.git 的產生的檔案中。
    • 如此一來,只有持續整合版本可以上傳至 Chromeperf。
    • 此對應是在 https://fxbug.dev/42126577 中實作。
  • 子建構:基礎架構方案程式碼會根據輸入屬性設定各種環境變數,包括 CATAPULT_DASHBOARD_MASTERCATAPULT_DASHBOARD_BOT。詳情請參閱 testing_requests/api.py

    • 這是在子建構中完成 (也就是建構 Fuchsia 的「Swarming」任務)。環境變數會輸入資料分割說明中。
    • 方案程式碼可能會修改「主要」和「機器人」名稱,以便處理分支版本 (例如發布分支版本)。否則名稱會透過未經修改的輸入屬性傳遞。
  • 測試資料分割:在測試資料分割的「Swarming」任務中,會發生下列情形:

    • 每項測試都會產生 *.fuchsiaperf.json 檔案。
    • 產生 fuchsiaperf 檔案的測試會將這些檔案傳遞至 Python perf_publish 程式庫或 Dart performance.dart 程式庫。這會針對每個 fuchsiaperf 檔案執行以下兩項操作:
      • 然後將 fuchsiaperf 檔案複製到資料分割的輸出目錄。這個位置中的 fuchsiaperf 檔案會由個別建構結果摘要頁面 (包括 Perfcompare 版本) 使用。
      • 這會在 *.fuchsiaperf.json 檔案上執行 catapult_converter,產生 *.catapult_json 檔案,也會複製到資料分割的輸出目錄中。檔案格式為 Chromeperf 接受的格式。這個步驟會使用上述的 CATAPULT_DASHBOARD_* 環境變數。
  • 上傳步驟:在後續的方案步驟中,系統會擷取 *.catapult_json 檔案並上傳至 Chromeperf。

    • 這會使用以 Go 編寫的上傳工具
    • 上傳作業會使用一些憑證,提供給 Fuchsia Infra 上的 CI 建構使用。
    • 在這個方案步驟中,有時上傳錯誤會回報為失敗,但有時只會回報在 Chromeperf 的記錄中,而這些錯誤不會公開顯示。

建構工具的上傳至 Chromeperf 的功能已停用 (所有 CQ 建構工具和 catapult.star 中未列出的 CI 建構工具),並未設定 catapult_* 輸入屬性,因此 CATAPULT_* 環境變數未設定。performance.dartperf_publish 仍會執行 catapult_converter,以便確認轉換是否成功,但會產生 *.catapult_json_disabled 檔案,而非 *.catapult_json 檔案。

限制與危害

  • 「推送」模型:Chromeperf 上傳會使用「推送」模型。每個持續整合版本都可以在 Chromeperf 中以任何建構工具名稱、測試名稱等方式上傳結果。

    正確上傳這些檔案時請務必小心,因為在 Chromeperf 資訊主頁中,錯誤可能會造成混淆,而且錯誤無法輕易修正;目前我們沒有直接的方法,能夠移除 Chromeperf 資料庫中的錯誤資料。此外,Chromeperf 的命名空間會與其他專案共用,包括 Chrome。

  • 可測試性:目前還沒有任何測試上傳至 Chromeperf 的好方法。Chromeperf 的測試執行個體沒有明確定義的方法,Fashsia 開發人員無法存取用於上傳至實際工作環境的憑證,只有 Fuchsia CI 版本能夠存取。換句話說,如要測試 catapult_converter 輸出內容的變更,唯一的方法是進行變更,並檢查上傳作業是否會繼續在 CI 中正常運作。

  • 重複:如果兩個測試輸出指標的名稱相同 (例如相同的測試名稱和測試套件名稱),系統將不會偵測到這個錯誤。反之,這可能在同一 Chromeperf 圖表中會顯示為兩個資料點,兩者都連結至同一個 Fuchsia 版本。這是因為每個 fuchsiaperf/catapult 檔案都會分開處理,因此目前沒有適合拒絕或合併重複項目的步驟。

  • 快訊:目前並未設定警告,如果 Fauchsia 的 Chromeperf 上傳作業停止運作。

迴歸快訊設定

Chromeperf 有一組檔案,用於設定迴歸快訊。包括 Fuchsia 的檔案 (fuchsia-perf.cfg)。