修正する
彼らはしません!少なくとも私にとってはそうではありません。
私の答えを参照してください。
元の質問
~によると昨年のPhoronixベンチマーク、ほとんどのアプリケーションはDebianよりFreeBSDで遅く実行されます(Stockfishチェスエンジン、Node.js、FLACエンコーディング、その他のコンピューティングタスクを含む)。
Phoronixの記事自体は、GCCコンパイラの代わりにClangを使用することによっていくつかのパフォーマンスの違いが生じると説明しています。その他ZFSは本質的にext4よりも遅いので、ZFSを使用するとFreeBSDが遅くなるという意見があります。
しかし、GCC8でコンパイルされたFreeBSDの純粋なコンピューティング作業でさえ、Linuxよりも遅くなります。
理由は何ですか?これがFreeBSDとLinuxカーネルの本質的な違いですか、ドライバの品質が悪いから、それとも別のものがありますか?
ポリスチレンより具体的に言えば、これはPhoronixによると、LinuxよりFreeBSDで遅く実行される非常に単純な純粋な計算プログラムです。m-クイーン1.2。次のようにコンパイルされました。
gcc -o m-queens.bin main.c -O2 -march=native -mtune=native -std=c99 -fopenmp
これは2つの20コアCPUで実行されるマルチスレッドジョブであるため、パフォーマンスの違いはマルチスレッドを処理するOSの能力に依存すると考えられます。
ポリフェニレンスルフィドより明確に言えば、私はFreeBSD良いネットワーク技術そしてそれはネットフリックスは。この質問は、特に上記の計算作業を扱います。
購買力評価サービス6コアデスクトップにFreeBSD(TrueOS)とUbuntuをインストールし、Queensベンチマークを直接実行した後、マルチスレッドパフォーマンスで大きな違いが見つかりませんでした。 PhoronixはFreeBSDで39%遅く走っていると主張していますが、私のテストでは3.7%遅くなりました。これは、コンパイラバージョン(TrueOSの場合はgcc 7.4、Ubuntuの場合はgcc 7.2)の微妙な違いによるものです。後でもっとテストしてみましょう。
答え1
あまりにも多くの反対投票で、私は自分でテストするために6コアデスクトップコンピュータにFreeBSD(TrueOS)をインストールしました。 (注:TrueOSを他のオペレーティングシステムと一緒にインストールすることはお勧めできません。このインストールにより、私のハードドライブの1つが消去され、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-queensの問題であり、Ubuntuより3.7%長くかかりました。
潜在的な落とし穴:
- Ubuntuのgccバージョンは7.2で、FreeBSDでは7.4です。
- UbuntuはシェルでKDEとFreeBSDで実行されます(大きな違いはありません)
- Phoronixは80スレッドサーバーを使用し、私は6スレッドIntel i5コンピュータを使用しています。
要約すると、オペレーティングシステムのパフォーマンスをテストするときは、次のことを行う必要があります。
- 他の人が得た結果を信頼するのではなく、設定に対して直接ベンチマークを実行してください。
- 同じコンパイラを試してください。
- インストールされたインタプリタごとに異なる動作をするため、PerlやPythonなどのスクリプト言語のパフォーマンスは、オペレーティングシステムのパフォーマンスを示す良い指標ではありません。
答え2
ベンチマークにはOpenMPの使用が含まれています。ここで違いが発生する可能性があります。どのOpenMPランタイムライブラリが使用されているかを確認してください。
見なければならないもう一つのことは、逆アセンブリコードまたは中間表現です。これにより、実行中のコマンドの違いをすばやく見つけることができます。
概して、この質問に対する迅速で明確な答えはありません。調査をしなければなりません。