Red Hat 工程師正在努力解決間接分支受限推測 (IBRS) 對於緩解較舊的英特爾至強可擴展處理器上的 Spectre V2 和 Retbleed 成本過高的問題。一個新的補丁已經發布,可以在空閒時禁用 IBRS,並且至少在 Red Hat Enterprise Linux 9 上運行良好,但尚不清楚它是否會被上游內核接受。

來自 Red Hat 的 Waiman Long 的補丁解釋了他們在處理 Spectre 和 Retbleed 時仍然圍繞 Intel IBRS 處理的痛苦:

對於需要打開 IBRS 以防止Spectre v2 和 Retbleed,SPEC_CTRL MSR 中的 IBRS 位會影響整個內核的性能,即使在內核中運行時只有一個線程打開它。對於用戶空間繁重的應用程序,在系統調用期間偶爾打開 IBRS 對性能的影響應該不會很大。不幸的是,當兄弟線程在內核中空閒時情況並非如此。在這種情況下,性能影響可能會很大。

當 DPDK 在獨立的 CPU 線程上運行時,在其兄弟線程空閒時處理用戶空間中的網絡數據包。兄弟空閒線程中IBRS開啟和關閉的繁忙DPDK線程的表現分別為:

IBRS on IBRS off
—————-
數據包/秒:7.8M 10.4M
平均 tsc 週期/數據包:282.26 209.86

這是 25% 的性能下降。測試系統是 Intel Xeon 4114 CPU @ 2.20GHz。

這個補丁系列在各種空閒模式下關閉 IBRS,以消除空閒線程對其繁忙的兄弟線程的性能影響。

哎呀,25% 的命中率在用於開源數據平面開發套件 (DPDK) 的至強可擴展 Skylake 上。
這個內核線程,其中浮動了空閒時禁用 IBRS 的補丁。不過,著名的英特爾 Linux 工程師 Peter Zijlstra 提出了另一個目前尚未向後移植到 RHEL9 的補丁。此外,還有可能使用 Call Depth Stuff/Tracking 而不是 IBRS。在我的測試中,在主線 Linux 6.2+ 中發現的呼叫深度跟踪確實可以幫助恢復 Intel Skylake 時代 CPU 上的一些性能損失,否則這些 CPU 將依賴 IBRS。因此,我們將看看上游內核活動的去向,或者 Red Hat 是否最終暫時將此補丁作為其 RHEL9 內核的一部分,直到向後移植任何新選項。無論如何,這個最新的內核郵件列表線程繼續顯示企業 Linux 用戶在 2023 年年中在舊平台上仍然經歷的緩解痛苦。

Categories: IT Info