楊蓉
Google工程師的一個新的Linux內核補丁解決了一個問題,這個問題是由許多人可能沒有體驗過的情況引起的,那就是一臺服務器當中插著太多的NVMe驅動器,這個問題使正確關閉一個驅動器所需時間較長。
還記得Sun公司的X4500存儲服務器嗎,它的代號為Thumper,它出現時確實很激進:一個3U的雙處理器服務器密密麻麻裝了48個驅動器托架。當他們不得不重新啟動時,需要很長的時間。
一個有16個驅動器的存儲服務器,每次重啟都會浪費 72 s的時間。雖然也就是泡杯咖啡的時間,但仍然很煩人,因為這完全是不必要的。

問題主要出在內核的驅動器關閉功能是同步的:對于每個驅動器,它都會等待關閉命令完成,然后再進行下一個。新的內核補丁做了完全相同的事情,但改變了調用的方式,使其成為異步的,它向第一個驅動器發出調用,然后立即轉到下一個,并按順序進行。當它們都返回所需的狀態工作就完成了。
雖然這并不能直接幫助大多數人,但有時這類變化會產生令人非常愉快的作用。例如,有一個為內核開發者提供的工具叫kexec,它允許一個內核將另一個內核加載到內存中并啟動它。不僅如此,還可以加速Linux的重新啟動。由于計算機在加載操作系統之前必須讀在取固件過程中花費1 min左右的時間,進行一些自我測試等,如果能繞過這一點,直接從一個操作系統重啟到另一個,就可以把時間縮短到幾秒鐘而不是現在的幾分鐘。