Linuxディストリビューションのパフォーマンスが異なるのはなぜですか?

Linuxディストリビューションのパフォーマンスが異なるのはなぜですか?

出版社:ポロニクス対照9つのオペレーティングシステム。最速の3つは次のとおりです。

  1. クリーン Linux 32310
  2. CentOS Stream(およびローリングManjaroは最後から2番目)
  3. Fedora Workstation 31

特に、CentOSとManjaroローリングの間のこれらの違いの根本的な原因は何ですか?彼らは他のコアを提供していますか? CentOSパッケージはより多くの最適化フラグを使用しますか?デフォルトでは別のIOキューまたはガバナーを使用しますか?

ベストアンサー1

最初から最後まで私が考えることができる要素は次のとおりです。

  • カーネルの設定
  • CPUおよびIOスケジューラの選択
  • システム起動後に同時に実行されるアプリケーション数
  • カーネルのコンパイル時に使用するコンパイラフラグ
  • ベンチマークで使用されているアプリケーションをコンパイルするときに使用されるコンパイラーフラグ
  • コンパイラ(GCC vs Clang vs ICC、古いGCC vs新しいGCC)
  • 交換性
  • ファイルシステムの選択(ext4、XFS、BTRFS、ZFS)
  • ディスク構成(ソフトウェアRAID)

Clear Linuxでは、次のことを誇りに思います。

  • コンパイルフラグの最適化
  • 最新のLinuxカーネルの使用
  • パフォーマンスを向上させるためのカスタムパッチによるカーネルパッチ
  • CPUがサポートできる場合は、AVX512命令を使用してください。 (これには大きな違いがあります。)

CPUが提供できる完全な命令セットを使用すると、大きな影響を与える可能性があります。

比較のために、Arch Linux(およびManjaro)は、汎用の64ビットx86 CPU用のGCCでコンパイルされたカーネル、ライブラリ、および実行可能ファイルを提供します(-march=x86-64 -mtune=generic)。これは優れたパフォーマンスを提供しますが、実行中のCPU用に特別にコンパイルされた実行ファイルほど良くありません。

使用elfx86extsArch Linuxのツールは、/usr/bin/ls少なくともどのCPU命令が必要かを示します。

$ elfx86exts /usr/bin/ls
MODE64 (call)
CMOV (cmovne)
SSE2 (movdqa)
SSE1 (movups)
CPU Generation: Intel Core

Clear Linuxで同じことを試す機会はありませんでしたが、より長いガイドラインのリストがあるとします。

要約すると、カーネルをパッチしてカーネル構成を調整すると良い結果が得られますが、最も重要なことは、利用可能なCPU命令をサポートすることが大きな違いを生む可能性があることです。

おすすめ記事