「perfcompare」試用建構工具是選用的 CQ 試用建構工具 評估某個變更後的成效影響 (用於預先提交效能測試)。執行效能測試 無論是否套用 CL,然後比較結果 如果效能迴歸或改善情形
Google 員工可以參閱 Google 內部效能比較 說明文件,瀏覽其他說明文件。
使用方式
適用於 fuchsia.git CLs
如要對 Gerrit CL 執行 Perfcompare,請執行下列操作:
- 啟動建構:選取「選擇試用工作」新增功能 然後從清單中選取一或多個 Perfcompare 建構工具 開發者快速做法是輸入「perfcompare」從事 搜尋欄位,即可篩選清單以顯示 可用的 Perfcompare 建構工具。
- 取得結果:試用建構工具的結果頁面連結 會出現在蓋瑞特的 CL 上建構工具執行完畢後, 您的結果將位於 "比較效能測試結果時, 含 CL」->「stdout」(或「原始」)。
這些 Perfcompare 建構工具目前
執行 fuchsia.git
的效能測試:
terminal.x64-release-perfcompare
(近期版本): 這會在 Intel NUC 執行「fuchsia.git
」的效能測試 (x64)。這是 Compute Engineterminal.x64-release
建構工具 (即會執行同一組 效能測試)。terminal.vim3-release-perfcompare
(近期版本): 這會在 VIM3 (ARM64) 上執行fuchsia.git
的效能測試。這個 是terminal.vim3-release
的 Perfcompare 版本 建立工具請注意,terminal.vim3-release
並非由 CQ 執行 因此較有可能毀損 是其他建構工具的安裝率
適用於 Integration.git CL
integration.git
個 CL 尚未支援 Perfcompare。
具體來說,這類 CL 會變更 Jiri 資訊清單檔案中的依附元件,或是
目前下列項目不支援 jiri.lock
檔案或使用 patches.json
。這包括會變更預建套件的 CL,例如
工具鍊滾出 CL
Perfcompare 不知道如何查看來源和預先建構 在這類案例中,位於 CL 之前與之後的二進位檔,所以將產生錯誤 會造成這類情況這會產生一項 成效方面的變動。
輸出內容範例
以下是 PerfComparison 執行簡單的測試所輸出的一部分 CL:
Summary counts:
2939 test cases in total
2938 test cases had no significant difference (no_sig_diff)
1 test case got faster
0 test cases got slower
0 test cases added
0 test cases removed
Results from test cases with differences:
Test case Improve/regress? Factor change Mean before Mean after
---------------------------------------- ---------------- ------------- ------------------ -----------------
fuchsia.microbenchmarks: ExampleNoOpLoop faster 0.143-0.145 405.36 +/- 0.39 ns 58.49 +/- 0.30 ns
Results from all test cases:
Test case Improve/regress? Factor change Mean before Mean after
--------------------------------------------- ---------------- ------------- ----------------- -----------------
...
fuchsia.microbenchmarks: Syscall/ManyArgs no_sig_diff 0.986-1.008 92.94 +/- 0.66 ns 92.65 +/- 0.40 ns
fuchsia.microbenchmarks: Syscall/Null no_sig_diff 0.993-1.007 84.33 +/- 0.40 ns 84.31 +/- 0.19 ns
fuchsia.microbenchmarks: Thread/CreateAndJoin no_sig_diff 0.950-1.034 34229 +/- 711 ns 33935 +/- 739 ns
fuchsia.microbenchmarks: TicksGet no_sig_diff 0.981-1.022 19.77 +/- 0.19 ns 19.81 +/- 0.21 ns
...
測試 CL 堆疊與個別 CL
效能比較建構工具會評估 CL,「不是」CL 的堆疊。
舉例來說,假設您有一系列 CL,包括 P1、P2、P3、P4、P5 其中 P1 是最舊的 (也就是所有其他 CL 依附於此)。如果 如果您在 P3 上執行 Perfcompare,「with CL」版本會包含 P1+P2+P3 「沒有 CL」只會包含 P1+P2
- 這種做法可以評估尚未產生轉換的測試案例 已經登陸了您可以設定一個 CL 並增加新成效 測試,以及透過後續 CL 變更 軟體入侵在第二個 CL 上執行效能比較 ,展示 CL 對新測試的影響。
- 如要測量修補堆疊的整體效果
可以將變更壓縮成單一 Git 修訂版本
(例如使用
git merge --squash
) 將其上傳至 Gerrit,以及 就是執行效能比較
「具有 CL」以及「沒有 CL」版本
效能比較建構工具依序套用下列步驟 會產生「具有 CL」以及「沒有 CL」版本:
- 快來查看 Fuchsia 最新的樹木編輯版本
integration.git
。 - 將 CL 系列套用至結帳流程,最高包括 CL
正在測試這會使用
jiri patch
,其使用git rebase
。 - 打造 Fuchsia。如此一來,「具有 CL」建構應用程式
- 在結帳頁面中取消套用最頂層的 CL (將先前的 CL 保留為
CL 系列 (如果有))。方法是在套用 CL 系列的 Git 存放區中執行
git checkout HEAD^
。 - 再次建構 Fuchsia,執行漸進式建構。如此一來 "沒有 CL"建構應用程式
步驟 1 到 3 與非 Perfcompare Fuchsia 試用建構工具相同。
限制
- 使用
patches.json
或變更 Jiri 中依附元件的 CL 目前尚不支援資訊清單檔案 (如上所述)。
如何在本機進行成效比較
Perfcompare 建構工具會使用
perfcompare.py
即可比較
效能結果您可以使用 perfcompare.py
執行
本機效能測試 (亦即不使用 Fuchsia Infra)
相互比較詳情請參閱
說明文件。
如何下載原始成效結果
您可以下載系統產生的原始效能測試結果
看看成效如何如果您要修改
也就是 perfcompare.py
執行的分析。方法是使用
步驟如下:
找出
cas_instance
的值和 輸出內容屬性中的perfcompare_dataset_digest
欄位 請參閱 Perfcompare 版本您可以前往 建構 (可從 Gerrit 的「Checks」分頁存取) 程式碼審查)。一般值的範例如下:cas_instance="projects/chromium-swarm/instances/default_instance"
perfcompare_dataset_digest="3ff389154e02490f29e379564f7e70b3df66f74c3116ed50172cceec1e9d9888/165"
如果是從非 Perfcompare 版本下載結果資料, 要使用的欄位名稱是
perf_dataset_digest
perfcompare_dataset_digest
。執行下列指令,下載資料集 (使用 從 Fuchsia 結帳階段預先建構的
cas
工具):./prebuilt/tools/cas/cas download -cas-instance $CAS_INSTANCE -digest $DIGEST -dir $DEST_DIR
對下載的資料集執行
perfcompare.py
:python3 src/testing/perfcompare/perfcompare.py compare_perf $DEST_DIR/without_cl/ $DEST_DIR/with_cl/
請注意,RBE-CAS 系統會將資料保留大約 2 到 3 個月 因此如果建構未執行,下載指令就會失敗 。(存留時間 (TTL) 目前的預設值, RBE-CAS 為 90 天)。