本頁面說明如何將 Fuchsia 版本的效能結果上傳至 Chromeperf,以及如何設定 Fuchsia 使用的 Chromeperf。
其中的某些部分是在 Google 內部程式碼中實作,此處並未提供完整說明。Google 員工可參閱本文件的 Google 內部版本以瞭解詳情。
上傳的程式碼路徑
上傳至 Chromeperf 的程式碼路徑會跨越多個位置,因此程式碼路徑會有些複雜:
建構工具設定:
catapult.star
檔案包含對應項目,指定哪些建構工具應將效能結果上傳至 Chromeperf,並允許重新對應名稱。這位於 Google 內部版本的integration.git
中,位於infra/config/
。catapult.star
中的項目會在對應建構工具的屬性中設定巢狀欄位catapult_dashboard_master
和catapult_dashboard_bot
。這些屬性會儲存在在簽入integration.git
的產生的檔案中。- 如此一來,只有持續整合版本可以上傳至 Chromeperf。
- 此對應是在 https://fxbug.dev/42126577 中實作。
子建構:基礎架構方案程式碼會根據輸入屬性設定各種環境變數,包括
CATAPULT_DASHBOARD_MASTER
和CATAPULT_DASHBOARD_BOT
。詳情請參閱testing_requests/api.py
。- 這是在子建構中完成 (也就是建構 Fuchsia 的「Swarming」任務)。環境變數會輸入資料分割說明中。
- 方案程式碼可能會修改「主要」和「機器人」名稱,以便處理分支版本 (例如發布分支版本)。否則名稱會透過未經修改的輸入屬性傳遞。
測試資料分割:在測試資料分割的「Swarming」任務中,會發生下列情形:
- 每項測試都會產生
*.fuchsiaperf.json
檔案。 - 產生
fuchsiaperf
檔案的測試會將這些檔案傳遞至 Pythonperf_publish
程式庫或 Dartperformance.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.dart
和 perf_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
)。