讓Linux系統開機速度更快的方法
在所有我擁有或使用過的電腦中,啟動最快的那臺是 20 世紀 80 年代的電腦。在你把手從電源鍵移到鍵盤上的時候,BASIC 直譯器已經在等待你輸入命令了。對於現代的電腦,啟動時間從膝上型電腦的 15 秒到小型家庭伺服器的數分鐘不等。為什麼它們的啟動時間有差別?
那臺直接啟動到 BASIC 命令列提示符的 20 世紀 80 年代微電腦,有著一顆非常簡單的 CPU,它在通電的時候就立即開始從一個記憶體地址中獲取和執行指令。因為這些系統的 BASIC 在 ROM 裡面,基本不需要載入的時間——你很快就進到 BASIC 命令提示符中了。同時代更加複雜的系統,比如 IBM PC 或 Macintosh,需要一段可觀的時間來啟動(大約 30 秒),儘管這主要是因為需要從軟盤上讀取作業系統的緣故。在可以載入作業系統之前,只有很小一部分時間是花費在韌體上的。
現代伺服器往往在從磁碟上讀取作業系統之前,在韌體上花費了數分鐘而不是數秒。這主要是因為現代系統日益增加的複雜性。CPU 不再能夠只是執行起來就開始全速執行指令,我們已經習慣於 CPU 頻率變化、節省能源的待機狀態以及 CPU 多核。實際上,在現代 CPU 內部有數量驚人的更簡單的處理器,它們協助主 CPU 核心啟動並提供執行時服務,比如在過熱的時候壓制頻率。在絕大多數 CPU 架構中,在你的 CPU 內的這些核心上執行的程式碼都以不透明的二進位制 blob 形式提供。
在 OpenPOWER 系統上,所有執行在 CPU 內部每個核心的指令都是開源的。在有 OpenBMC(比如 IBM 的 AC922 系統和 Raptor 的 TALOS II 以及 Blackbird 系統)的機器上,這還延伸到了執行在基板管理控制器Baseboard Management Controller上的程式碼。這就意味著我們可以一探究竟,到底為什麼從接入電源線到顯示出熟悉的登入介面花了這麼長時間。
如果你是核心相關團隊的一員,你可能啟動過許多核心。如果你是韌體相關團隊的一員,你可能要啟動許多不同的韌體映像,接著是一個作業系統,來確保你的韌體仍能工作。如果我們可以減少硬體的啟動時間,這些團隊可以更有生產力,並且終端使用者在搭建系統或重啟安裝韌體或系統更新的時候會對此表示感激。
過去的幾年,Linux 發行版的啟動時間已經做了很多改善。現代的初始化系統在處理並行和按需任務上做得很好。在一個現代系統上,一旦核心開始執行,它可以在短短數秒內進入登入提示符介面。這裡短短的數秒不是最佳化啟動時間的下手之處,我們要到更早的地方:在我們到達作業系統之前。
在 OpenPOWER 系統上,韌體透過啟動一個儲存在韌體快閃記憶體晶片上的 Linux 核心來載入作業系統,它執行一個叫做 Petitboot 的使用者態程式去尋找使用者想要啟動的系統所在磁碟,並透過 kexec 啟動它。有了這些最佳化,啟動 Petitboot 環境只佔了啟動時間的百分之幾,所以我們還得從其他地方尋找最佳化項。
在 Petitboot 環境啟動前,有一個先導韌體,叫做 Skiboot,在它之前有個 Hostboot。在 Hostboot 之前是 Self-Boot Engine,一個晶圓切片(die)上的單獨核心,它啟動單個 CPU 核心並執行來自 Level 3 快取的指令。這些元件是我們可以在減少啟動時間上取得進展的主要部分,因為它們花費了啟動的絕大部分時間。或許這些元件中的一部分沒有進行足夠的最佳化或儘可能做到並行?
另一個研究路徑是重啟時間而不是啟動時間。在重啟的時候,我們真的需要對所有硬體重新初始化嗎?
正如任何現代系統那樣,改善啟動(或重啟)時間的方案已經變成了更多的並行執行、解決遺留問題、(可以認為)作弊的結合體。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2639649/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 讓PyTorch訓練速度更快,你需要掌握這17種方法PyTorch
- 如何比別人更快的入門掌握Linux系統?Linux學習方法Linux
- Win7系統電腦提升關機速度的方法 Win7系統如何加快關機速度?Win7
- 如何比別人更快的入門掌握Linux系統?學習方法彙總!Linux
- 如何最佳化win10系統執行速度?讓win10執行速度加快的方法Win10
- Linux 系統生成隨機密碼的10種方法Linux隨機密碼
- Linux 5.12 的 exFAT 檔案系統更快刪除大檔案Linux
- Win10系統怎麼優化讓開機加速_win10開機優化加速的方法Win10優化
- linux系統開機啟動流程Linux
- win10 1903系統開機慢怎麼加快電腦開機速度Win10
- 電腦的開機速度慢怎麼辦?電腦開機速度最佳化方法教程
- windows10系統開啟php頁面速度慢的解決方法WindowsPHP
- win10開機慢怎麼解決 提升開機速度的方法Win10
- Win10系統開啟linux子系統失敗的解決方法Win10Linux
- Win10系統怎麼最佳化讓開機加速_win10開機最佳化加速的方法Win10
- Linux系統生成隨機密碼的8種方法!Linux運維課程Linux隨機密碼運維
- 比Linux grep更快的作業系統檔案目錄搜尋工具:ripgrepLinux作業系統
- Linux系統雲主機取消fstab開機載入Linux
- mac系統清理工具Big Sur Cache Cleaner 讓你的電腦執行更快Mac
- Linux系統上配置redis開機自啟LinuxRedis
- 更快的網路檔案系統 — Oxfs
- w10系統開機慢怎麼辦_w10怎樣提高開機速度
- win10系統開機慢如何解決_win10開機速度慢的解決教程Win10
- Linux中檢查本地系統上的開放埠列表的方法Linux
- 7種Linux中獲取CPU速度的方法Linux
- 基於Linux系統的PXE搭建方法Linux
- 判斷Linux系統是否被黑的方法Linux
- 為RPA開發者賦能,讓RPA機器人更快落地變現機器人
- KDBOM管理系統: 精益製造讓“福田速度”領跑全球
- 9 個提高系統執行速度的輕量級 Linux 應用Linux
- Linux 獲取系統開機/啟動時間Linux
- Linux系統自動隨機生成複雜密碼方法Linux隨機密碼
- 升級win10 1903系統開機速度變慢如何解決Win10
- linux系統比windows系統聲音小的解決方法LinuxWindows
- Linux系統時間同步方法。Linux
- Linux系統快速入門方法Linux
- Linux系統執行命令方法Linux
- win10 1903系統取消開機密碼的方法Win10密碼