Linux 6.0 核心將於下週一發布,其中包含解決 AMD Zen 處理器效能問題的變更。效能下降的根源原來是 20 年前為了解決某些晶片組的硬體問題而添加的程式碼。該硬體問題早已修復,並且不會出現在當前的晶片組中,但舊的解決方法已被遺忘,並已成為基於現代 AMD CPU 的系統性能下降的根源。配備英特爾 CPU 的新系統不受舊解決方法的影響,因為它們使用單獨的 intel_idle 驅動程式而不是通用的 processer_idle 驅動程式存取 ACPI。
2002 年 3 月,核心中新增了一個解決方法,以阻止晶片組中的一個錯誤,該錯誤是由於處理 STPCLK# 訊號的延遲而導致的空閒狀態未正確設定。為了解決這個問題,在 ACPI 實作中加入了一條額外的 WAIT 指令,以降低處理器的速度,從而使晶片組有時間進入空閒狀態。在 AMD ZenXNUMX 處理器上使用基於指令的採樣 (IBS) 指令進行分析時,發現處理器花費大量時間執行存根,這導致錯誤解釋處理器負載狀態並由 cpuidle 處理程序設定更深的睡眠模式 (C 狀態)。
這種行為體現為在空閒和繁忙狀態頻繁交替的工作負載下效能下降。例如,當使用禁用解決方法的補丁時,平均 tbench 測試結果從 32191 MB/s 增加到 33805 MB/s。
來源: opennet.ru
