上週我發布了我對緩解 Retbleed 作為最新 CPU 推測執行漏洞的 Linux 影響的初步基準測試。正如之前的 Retbleed 文章中所述,在 AMD 方面,受影響的 Zen 1/1+/2 處理器以及較舊的 Bulldozer CPU。較早的那篇文章包括 Zen 2 基準測試,而在本文中是 Zen 1 測試,因為它的情況略有不同。

由於 Zen 1 和 CPU 缺少用於 Retbleed 緩解的 STIBP(單線程間接分支預測器),它啟用了未經訓練的返回 thunks 緩解方法,但從技術上講,還需要禁用 SMT 才能完全緩解。當然,禁用 SMT 意味著失去這些原始 Ryzen 和 EPYC 處理器的一半線程。默認情況下,Linux 不會禁用 SMT,但可以使用“retbleed=auto,nosmt”內核選項(或更廣泛地說“mitigations=auto,nosmt”)來完成。

查看緩解對 Zen 的影響1,我清理了 AMD Ryzen 7 1700,並在 Linux 5.19 Git 上的以下配置中對其進行了測試:

當前 Linux 默認值-開箱即用的緩解狀態在目前的 Linux 5.19 上。這目前意味著在 CPU 緩解方面,包括重新出血: 緩解未經訓練的返回 thunk; SMT 易受攻擊 + spec_store_bypass:通過 prctl + spectre_v1 緩解 SSB:緩解 usercopy/swapgs 障礙和 __user 指針清理 + spectre_v2:緩解 Retpolines IBPB:條件 STIBP:禁用 RSB 填充。 AMD Zen 1 不受 itlb_multihit、L1TF、MDS、Meltdown、MMIO 陳舊數據、SRBDS 或 TSX 異步中止 (TAA) 的影響。

mitigations=off-引導 Linux 5.19帶有“mitigations=off”標誌的 Git 會禁用 AMD Zen 1 的所有相關的運行時可選 CPU 安全緩解選項。

retbleed=off-禁用新引入的 Retbleed緩解措施(Zen 1 的未經訓練的返回 thunk),但為其他受影響的漏洞保留其他 CPU 緩解措施。

mitigations=auto,nosmt-也禁用的“完全”緩解措施SMT 支持僅限於八個物理內核,每個內核一個線程。

從那裡運行了數十個基準測試,以查看這些不同選項對 AMD Ryzen 7 1700 的影響。

I/O 工作負載仍然是 Retbleed 和其他相關緩解措施對 Zen CPU 影響最大的領域之一。從 retbleed=off 這實際上是 Linux 的先前默認設置,直到上周到新的當前 Linux 默認設置,現在在 PostMark 測試用例中看到了 13% 的性能下降。這使得 Ryzen 7 1700 在此測試用例中的性能約為 81%,因為這些緩解措施尚未被發現/披露時,緩解=off/pre-2018。

對於強調操作的簡單測試用例系統原始操作,與 Retbleed 和 Zen 1 上構建的其他緩解措施有明顯的區別。

對於 Linux 網絡,Retbleed 緩解措施的影響也非常明顯,類似於 I/O 結果。使用 Sockperf 禁用 SMT 會產生很好的改進,因為它始終受到物理 CPU 內核的支持。

OpenJDK Java 性能受到這些緩解措施的影響,但是禁用 SMT 是另一種性能可以領先的情況,因為沒有兩個線程共享一個內核。

代碼編譯工作負載受到 Retbleed 和其他影響 AMD Zen 1 處理器的 CPU 安全緩解措施的影響最小。好吧,對於默認狀態。如果要進行全面保護並禁用 SMT,這是在編譯大型代碼庫和使用並行作業時肯定會損害性能的領域之一。

Zen 1 上的 Retbleed 緩解對cryptsetup 加密測試使用 Linux 內核。

SQLite 是 Retbleed 對 I/O 性能影響的另一個真實示例。

處理打開和如果執行腳本修改或大量加載/保存,由於 Retbleed 保存大圖像文件也會導致性能下降,但對於正常的成像工作流程,Zen 1 上的藝術家可能不會注意到差異。

同樣如此對於其他涉及 I/O 的任務,例如用於將掃描的 PDF 轉換為文本的 OCRMyPDF 或用於處理大型 RAW 圖像的 RawTherapee。

禁用 SMT 會對 RocksDB 等數據庫工作負載造成很大傷害。

至少有緩解措施的 AMD Zen 1 上的網絡瀏覽器性能沒有受到影響,因為與較舊的 Intel CPU 一樣。

想要了解更多這些 AMD Zen 1 Linux CPU 緩解基準測試的人可以通過 此 OpenBenchmarking.org 結果頁面。尤其是 Zen 4 指日可待,如果仍在 AMD Zen 1 上,可能是時候考慮升級了我對減輕 Retbleed 作為最新的 CPU 推測執行漏洞的 Linux 影響的初步基準測試。正如之前的 Retbleed 文章中所述,在 AMD 方面,受影響的 Zen 1/1+/2 處理器以及較舊的 Bulldozer CPU。較早的文章包括 Zen 2 基準測試,而本文是 Zen 1 測試,因為它的情況略有不同。

Categories: IT Info