Performance
為什麼 Linux 發行版具有不同的性能?
Phoronix 發布了9 個作業系統的比較。最快的三個是:
- 清除 Linux 32310
- CentOS Stream(而滾動 Manjaro 是倒數第二個)
- Fedora 工作站 31
這種差異的基本原因是什麼,尤其是滾動的 CentOS 和 Manjaro 之間?他們運送不同的核心嗎?CentOS 軟體包是否使用更多優化標誌?他們是否預設使用不同的 IO 隊列或調控器?
以下是我能想到的因素:
- 核心配置
- CPU和IO調度器的選擇
- 系統啟動後有多少應用程序同時執行
- 編譯核心時使用的編譯器標誌
- 編譯基準測試中使用的應用程序時使用的編譯器標誌
- 編譯器(GCC 與 Clang 與 ICC,舊 GCC 與新 GCC)
- 交換性
- 文件系統的選擇(ext4、XFS、BTRFS、ZFS)
- 磁碟配置(軟體 RAID)
對於 Clear Linux,他們引以為豪的是:
- 優化編譯標誌
- 使用最新的 Linux 核心
- 使用自定義更新檔修補核心以提高性能
- 使用 AVX512 指令,如果 CPU 可以支持它們(這有很大的不同)
使用 CPU 可以提供的完整指令集會產生重大影響。
作為比較,Arch Linux(和 Manjaro)提供了一個核心、庫和使用 GCC 編譯的通用 64 位 x86 CPU(
-march=x86-64 -mtune=generic
)的執行檔。這提供了良好的性能,但不如專門為其執行的 CPU 編譯的執行檔好。在 Arch Linux 上使用elfx86exts工具
/usr/bin/ls
顯示至少需要哪些 CPU 指令:$ elfx86exts /usr/bin/ls MODE64 (call) CMOV (cmovne) SSE2 (movdqa) SSE1 (movups) CPU Generation: Intel Core
我沒有機會在 Clear Linux 上嘗試相同的操作,但我認為會出現更長的指令列表。
總之,修補核心和調整核心配置會產生良好的效果,但最重要的是,支持可用的 CPU 指令會產生很大的不同。