Google為Linux提供內核補丁加快了服務器的關機速度
Google工程師的一個新的Linux內核補丁解決了一個問題,這個問題是由我們許多人可能沒有體驗過的情況引起的,那就是一台服務器當中插著太多的NVMe驅動器……這個問題是由正確關閉一個驅動器所需的相對較長的時間引起的:顯然,單個最長時間達4.5秒。
還記得Sun公司的X4500存儲服務器嗎,它的代號為Thumper,它出現時確實很激進:一個3U的雙處理器服務器密密麻麻裝了48個驅動器托架。當他們不得不重新啟動時,他們需要很長的時間。
如果你有一個有16個驅動器的存儲服務器,每次重啟都會浪費72秒的時間。雖然也就是泡杯咖啡的時間,但仍然很煩人–因為這完全是不必要的。
問題主要出在內核的驅動器關閉功能是同步的:對於每個驅動器,它都會等待關閉命令完成,然後再進行下一個。新的內核補丁做了完全相同的事情,但改變了調用的方式,使其成為異步的。它向第一個驅動器發出調用,然後立即轉到下一個,並按順序進行。當它們都返回所需的狀態時,工作就完成了。
雖然這並不能直接幫助我們中的大多數人,但有時這類變化會產生非常令人愉快的作用。例如,有一個為內核開發者提供的工具叫kexec,它允許一個內核將另一個內核加載到內存中並啟動它。不僅僅如此,這還可以加速Linux的重新啟動。由於計算機在加載操作系統之前必須在其讀取固件過程中花費一分鐘左右的時間,進行一些自我測試等等,如果能繞過這一點,直接從一個操作系統重啟到另一個,就可以把時間縮短到幾秒鐘而不是幾分鐘。
了解更多:
https://lore.kernel.org/lkml/ 20220328230008.3587975-1-tansuresh@google.com /