Performance

為什麼 Linux 發行版具有不同的性能?

  • February 23, 2020

Phoronix 發布了9 個作業系統的比較。最快的三個是:

  1. 清除 Linux 32310
  2. CentOS Stream(而滾動 Manjaro 是倒數第二個)
  3. 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 指令會產生很大的不同。

引用自:https://unix.stackexchange.com/questions/568287