为什么在FreeBSD上运行的应用程序比在Linux上慢?

And*_*kha 3 linux performance freebsd trueos

更新

他们不!至少,不适合我。

看我的回答。

原始问题

根据去年的 Phoronix 基准测试,FreeBSD 上的应用程序运行速度大多比 Debian 慢(包括 Stockfish 国际象棋引擎、Node.js、FLAC 编码和其他计算任务)。

Phoronix 文章本身将一些性能差异归因于使用 Clang 而不是 GCC 编译器。其他一些意见说,使用ZFS使得FreeBSD的慢,因为ZFS是天生就比EXT4慢。

但即使是在用 GCC8 编译的 FreeBSD 上的纯计算任务也比在 Linux 上执行得慢。

那是什么原因呢?它是固有的FreeBSD和Linux内核之间的差异可能是由驱动程序的质量越差造成的或者是有其他原因?

PS为了更具体,这里有一个相当简单的纯计算程序,根据 Phoronix:m-queens 1.2,它在 FreeBSD 上的运行速度比在 Linux 上慢。编译如下:

gcc -o m-queens.bin main.c -O2 -march=native -mtune=native -std=c99 -fopenmp
Run Code Online (Sandbox Code Playgroud)

由于这是这两个20核CPU上运行多线程任务,我怀疑的性能差异归结为OS手柄多线程有多好。

PPS为了使它更清楚,我知道,FreeBSD有良好的网络功能,并且它使用Netflix的。现在的问题是专门关于计算任务,像上面的。

PPPS在我的 6 核桌面和 Ubuntu 上安装 FreeBSD (TrueOS) 并尝试自己运行 Queens 基准测试后,我没有注意到多线程性能有任何显着差异。虽然 Phoronix 声称它在 FreeBSD 上的运行速度慢了 39%,但在我的测试中它只慢了 3.7%,这可能是由于编译器版本的细微差异(TrueOS 上的 gcc 7.4,Ubuntu 上的 gcc 7.2)。我稍后会测试更多。

And*_*kha 5

如此多的反对票促使我在我的 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
Run Code Online (Sandbox Code Playgroud)

如您所见,在 FreeBSD 上执行速度较慢的唯一任务是多线程 N 皇后问题,比在 Ubuntu 上多花费 3.7% 的时间。

潜在的陷阱:

  • gcc 在 Ubuntu 上是 7.2 版,在 FreeBSD 上是 7.4
  • Ubuntu 在 shell 中与 KDE、FreeBSD 一起运行(应该没有太大区别)
  • Phoronix 使用 80 线程服务器,我使用 6 线程 Intel i5 计算机。

总之,在测试操作系统性能时,您应该:

  • 自己在您的设置上运行基准测试,而不是相信其他人获得的结果。
  • 尝试使用相同的编译器。
  • 请注意,Perl 和 Python 等脚本语言的性能并不是操作系统性能的良好指标,因为不同安装的解释器表现不同。