上傳及設定 Chromeperf/Skia Perf

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

這也適用於 Skia Perf。如要瞭解 Fuchsia 從 Chromeperf 遷移至 Skia Perf 的背景資訊,請參閱 Fuchsia 的 Skia Perf 簡介

其中部分內容是在 Google 內部程式碼中實作,因此不會在此完整說明。Google 員工如要瞭解詳情,請參閱這份說明文件的 Google 內部版本

上傳的程式碼路徑

上傳至 Chromeperf 的程式碼路徑相當複雜,因為它橫跨多個位置:

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

    • catapult.star 中的項目會設定對應建構工具屬性中的巢狀欄位 catapult_dashboard_mastercatapult_dashboard_bot。屬性會儲存在產生的檔案中,並簽入 integration.git
    • 這樣做只會針對 CI 建構版本啟用上傳至 Chromeperf 的功能。
    • 這項對應已在 https://fxbug.dev/42126577 中實作。
  • 子建構:基礎架構配方程式碼會根據輸入屬性設定各種環境變數,包括 CATAPULT_DASHBOARD_MASTERCATAPULT_DASHBOARD_BOT。請參閱「testing_requests/api.py」。

    • 這項作業是在子建構作業中完成 (也就是建構 Fuchsia 的 Swarming 工作)。環境變數會放入分片說明中。
    • 食譜程式碼可能會修改「master」和「bot」名稱,以處理分支 (例如發布分支)。否則系統會直接從輸入屬性傳遞名稱。
  • 測試分片:在測試分片的 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 基礎架構上 CI 建構作業提供的部分憑證。
    • 有時,上傳錯誤會回報為這個配方步驟中的失敗,但有時只會回報在 Chromeperf 的記錄中,而這些記錄不會公開顯示。

如果建構工具已停用上傳至 Chromeperf 的功能 (所有 CQ 建構工具和未列於 catapult.star 的 CI 建構工具都是如此),系統就不會設定 catapult_* 輸入屬性,因此也不會設定 CATAPULT_* 環境變數。performance.dartperf_publish 仍會執行 catapult_converter,以檢查轉換是否成功,但會產生 *.catapult_json_disabled 檔案,而非 *.catapult_json 檔案。

限制和危險

  • 「推送」模型:Chromeperf 上傳作業採用「推送」模型。每個 CI 建構版本都能在 Chromeperf 中,以任何建構工具名稱、測試名稱等上傳結果。

    請務必謹慎上傳這些資料,因為錯誤可能會在 Chromeperf 資訊主頁中產生令人困惑的結果,而且錯誤不容易修正,因為沒有直接從 Chromeperf 資料庫移除錯誤資料的方法。此外,Chromeperf 的命名空間會與其他專案 (包括 Chrome) 共用。

  • 可測試性:目前沒有好的方法可測試上傳至 Chromeperf。目前沒有明確的方法可設定 Chromeperf 的測試執行個體,且 Fuchsia 開發人員無法存取上傳至實際工作環境執行個體的憑證,除非透過 Fuchsia CI 建構作業。也就是說,如要測試 catapult_converter 輸出內容的變更,唯一方法是提交變更,並在 CI 中檢查上傳作業是否繼續運作。

  • 重複項目:如果兩項測試輸出名稱相同的指標 (即測試名稱和測試套件名稱相同),系統不會發現這項錯誤。而是在同一個 Chromeperf 圖表上顯示兩個資料點,且都連結至同一個 Fuchsia 建構版本。這是因為系統會分別處理每個 fuchsiaperf/catapult 檔案,因此目前沒有適合的步驟可供拒絕或合併重複項目。

  • 警示:目前沒有設定任何警示,因此如果 Fuchsia 的 Chromeperf 上傳作業停止運作,系統不會發出警告。

迴歸快訊的設定

Chromeperf 在 Chrome 的 Google 內部基礎架構存放區中有一組檔案,可設定迴歸警報。包括 Fuchsia 的檔案, fuchsia-perf.cfg