專家稱:Linux 內核微調可減少數據中心 30% 能耗
硬件性能在不斷提升,但定期回顧和檢查代碼仍然很有價值。有時你可能會發現一個小小的調整就能帶來意想不到的效率提升或性能改進。
滑鐵盧大學 Cheriton 計算機科學學院的研究人員就實現了這樣的突破。他們僅用約 30 行代碼對 Linux 內核的網絡協議棧進行修改,就可能使數據中心能耗降低高達 30%。
這些改動已作爲 Linux 6.13 內核版本的一部分發布。
該項目源於研究人員試圖解釋爲什麼用戶態網絡方案相比內核態方案能獲得如此顯著的性能提升。Martin Karsten 教授在接受採訪時表示。
傳統上,Linux 網絡是由中斷驅動的。當新數據通過網絡到達時,會觸發系統中斷,CPU 核心會暫停當前任務來處理數據包。這種方式適合多用戶同時運行任務的環境。
"在傳統系統中,操作系統是多用戶活動的協調者,"Karsten 說。"在服務器上,很多用戶同時登錄執行各種小任務,操作系統需要持續關注每個用戶並確保公平性。"
如今情況已大不相同。許多現代吞吐量導向的工作負載(如反向代理或緩存)可能消耗相當於多個傳統系統的資源。對於這類應用,Karsten 表示,讓應用在準備好處理更多工作時主動輪詢網絡可能更有效率。
通過減少中斷請求 (IRQ),主機 CPU 可以將更多時間用於數據處理,而不是等待尚未準備好的數據包。
這在用戶空間已經實現,但需要一些工作。Karsten 補充說,你需要知道你的應用是否會從這種方法中受益,然後去實現它。
持續輪詢網絡也會帶來額外開銷。"當流量較低時,你仍在消耗 CPU 核心資源,這對能耗來說極其低效,"他補充道。
基於這些認識,研究團隊尋找一種兼顧兩者的方法。他們開發了一個引入自適應輪詢的內核補丁。在高流量期間,主機可以在處理完上一批數據後立即輪詢網絡獲取新數據。當流量降低且沒有新數據需要處理時,系統可以回到中斷驅動模式,從而節省能源。更重要的是,由於這些都在內核中處理,所以基本上是自動的。
研究人員在 2023 年發表的論文中首次展示了這項功能的基礎實現。此時,Karsten 意識到這項工作的影響可能超出研究論文的範疇,於是開始與 Linux 內核開發者和 Fastly 首席技術官 Joe Damato 合作,將這個功能整合到內核中。
據 Karsten 稱,這個補丁帶來的性能提升可能相當顯著。早期測試顯示,它可以在不影響尾部延遲的情況下將吞吐量提高多達 45%。同時,在相同負載下,通過減少之前在中斷處理網絡開銷上浪費的資源,可以減少高達 30% 的能耗。
當然,這是最理想的情況。並非所有應用都能看到這樣的性能提升。Karsten 表示,吞吐量密集型應用應該能獲得最大收益。"有些應用如 Memcached 除了網絡通信外幾乎不做其他事情。"
即使平均節省效果較低,考慮到所有運行 Linux 的設備,這仍是相當可觀的能源節省。
不過這些節省不會立即實現,因爲要等到包含這些修改的內核版本進入企業客戶青睞的長期支持 (LTS) 版本可能需要一段時間。
遺憾的是,即使內核在數據中心得到廣泛應用,它可能對 AI 集羣幫助不大。這是因爲在 AI 和高性能計算應用中,遠程直接內存訪問 (RDMA) 技術一直是首選。
NVIDIA 網絡部門高級副總裁 Gilad Shainer 表示:"這種方法消除了網絡數據處理中對 CPU 週期的需求,是高性能互連技術的基礎。"
儘管如此,對 Karsten 來說,這個補丁凸顯了重新審視軟件棧的重要性,不僅是內核或應用層面,還包括中間件、庫和其他所有組件。"我認爲有很多效率低下的問題我們可以消除,而且時機即將到來,"他說。
"過去沒人在這上面花錢,因爲明年硬件速度會翻倍,何必擔心?"他補充道。"但如果這種情況停止了,我們最好好好看看軟件。"
這正是 Karsten 計劃未來研究的重點方向。