Linux

為什麼 FreeBSD 上的應用程序執行速度比 Linux 上慢?

  • July 14, 2019

更新

他們沒有!至少,不適合我。

看我的回答。

原始問題

根據去年的 Phoronix 基準測試,FreeBSD 上的應用程序執行速度大多比 Debian 上慢(包括 Stockfish 國際象棋引擎、Node.js、FLAC 編碼和其他計算任務)。

Phoronix 文章本身將一些性能差異歸因於使用 Clang 而不是 GCC 編譯器。其他一些觀點認為使用 ZFS 會使 FreeBSD 變慢,因為 ZFS 本質上比 ext4 慢。

但是,即使是使用 GCC8 編譯的 FreeBSD 上的純計算任務,其執行速度也比 Linux 上要慢。

這是什麼原因?它是 FreeBSD 和 Linux 核心之間固有的差異,可能是由於驅動程序質量較差還是有其他原因?

PS為了更具體一點,這裡有一個相當簡單的純計算程序,根據 Phoronix,它在 FreeBSD 上比在 Linux 上執行得慢:m-queens 1.2。編譯如下:

gcc -o m-queens.bin main.c -O2 -march=native -mtune=native -std=c99 -fopenmp

由於這是在兩個 20 核 CPU 上執行的多執行緒任務,我懷疑性能差異歸結為作業系統處理多執行緒的能力。

PPS為了更清楚地說明,我知道 FreeBSD 具有良好的網路功能並且它被Netflix 使用。這個問題專門針對計算任務,例如上面的問題。

PPPS在我的 6 核桌面和 Ubuntu 一起安裝 FreeBSD (TrueOS) 並嘗試自己執行皇后基準測試後,我沒有註意到多執行緒性能有任何顯著差異。雖然 Phoronix 聲稱它在 FreeBSD 上的執行速度慢了 39%,但在我的測試中它只慢了 3.7%,這可能是由於編譯器版本的細微差別(TrueOS 上的 gcc 7.4,Ubuntu 上的 gcc 7.2)。我稍後會測試更多。

如此多的反對票促使我在我的 6 核台式電腦上安裝 FreeBSD (TrueOS) 以自己進行測試。(注意:我不建議嘗試將 TrueOS 與其他作業系統一起安裝,因為此安裝會擦除我的一個硬碟驅動器,即使我嘗試將其安裝在 USB 驅動器上……這不是一種使用者友好的體驗。)

結果,在 Ubuntu 和 FreeBSD 上執行 Phoronix 測試套件的一些測試後,我看不到“FreeBSD 上的應用程序緩慢”效果。恰恰相反,一些應用程序在 FreeBSD 上的執行速度明顯加快(10-25%)

   Test                                    FreeBSD 13        Ubuntu 17
Fhourstones, kpos/s                       16753             13336
m-queens, multithreaded, user time, s     18.08             17.38
7zip 1 GB text file, user time, s         994               1096

如您所見,在 FreeBSD 上執行較慢的唯一任務是多執行緒 N 皇后問題,比在 Ubuntu 上多花費 3.7% 的時間。

潛在的陷阱:

  • Ubuntu 上的 gcc 是 7.2 版,在 FreeBSD – 7.4 上
  • Ubuntu 在 shell 中使用 KDE、FreeBSD 執行(應該沒有太大區別)
  • Phoronix 使用 80 執行緒伺服器,我使用 6 執行緒 Intel i5 電腦。

總之,在測試作業系統性能時,您應該:

  • 自己在您的設置上執行基準測試,而不是相信其他人獲得的結果。
  • 嘗試使用相同的編譯器。
  • 請注意,Perl 和 Python 等腳本語言的性能並不是作業系統性能的良好指標,因為不同安裝的解釋器表現不同。

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