來源:cnBeta
Speed Select Technology 是英特爾推出的一套電源管理解決方案,特點是能夠根據用戶工作負載而調節頻率和管理內核優先級,以達成性能與效率的雙贏。尷尬的是,正如英特爾自家工程師所觀察到的那樣,在啟用了該模式的基準測試中,SST 竟然可能導致超過 10% 的性能下降。盡管未說明對實際工作負載的影響有多大,但此事還是引發了相當高的關注。
資料圖(來自:Intel 官網)
工程師解釋稱,問題源于 Linux PCI 接口導致的延遲,因其在映射期間搜索了連接到系統的數百個 PCI 設備。
雖然難以理解這里為何設計數百個 PCI 設備,但英特爾 SST 確實是一套相當復雜的解決方案,并且僅可在基于至強處理器的平臺上使用(主流消費級酷睿產品線與之無緣)。
在找到問題根源之后,英特爾已承諾將很快通過固件更新的形式進行修復。打補丁的原理也相當簡單,即利用緩存數據來提速搜索過程。
以下是 Linux 內核郵件公告(LKML)中的消息摘要:
我們觀察到一些高性能基準測試在內核中耗費了更多的時間,具體取決于它們正在執行的 CPU 數據包,且可能導致超過 10% 的顯著差異。
SST 本該提升這些基準測試的服務優先級,以帶來更高的并行運行線程效能,但這種服務級別的變動又導致了需要訪問 Intel Speed Select PCI 設備的 MMIO 區域。
1 - Intel SST - 概述(via)
這種從 CPU 到 PCI 設備實例的映射,使用了標準的 Linux PCI 接口 —— 即 pci_get_domain_bus_and_slot() 。
此函數執行抵達 PCI 設備的線性搜索,但由于測試平臺上擁有 100 多個 PCI 設備,結果導致基準測試的快速路徑代價異常高昂。
2 - Inter SST - 設置(via)
由于這里的 PCI 設備和功能都是相對固定的,因而 Intel SST 能夠在實際執行時緩存 CPU 到 PCI 的設備信息,從而在再次訪問時顯著提升相關基準測試的性能。
據悉,英特爾在 2019 年的 Cascade Lake 至強處理器平臺上隆重介紹了非常通用的 SST 技術,并且提供了包括設置核心優先級、基礎始終速率等在內的多種選項。
不過正如上文所述,SST 功能需要在固件中實現、并由處理器的電源控制單元(PCU)來執行。至于更多細節,還請移步至英特爾官網(傳送門)查看。