最大機械コード最適化ソース

最大機械コード最適化ソース

フラグをlibc使用して再コンパイルすると、静的ライブラリの代わりに共有ライブラリが使用されるプログラムに最大の利点を提供することをどこかで読みました。これは本当ですか?他のプログラムを再コンパイルすると、追加の利点がありますか?-march=native-mtune=native

答え1

-march=nativeオプションは、生成された-mtune=nativeバイナリが利用可能なプロセッサ機能セットとスケジュールを最大限に活用することを保証します。パフォーマンスの向上は、追加のプロセッサ機能セットを使用して最適化できるアプリケーションコードの量に関連しています。 (YMMV).最適化されたライブラリとバイナリは通常のバイナリよりも速く実行する必要がありますが、テストなしで正確な速度を定量化することは困難です。したがって、短く答えると、CPU最適化を介してアプリケーションを再コンパイルするとパフォーマンスが向上する可能性がありますが、最適化されたビルドを維持し、セキュリティアップデートなどに従うことは悪夢になる可能性があります。

GCC 4.4.4 i386 および amd64 アーキテクチャオプションの詳細については、こちらをご覧ください。

答え2

短くて簡単な答えはありません。

1.

コードキャッシュ/パイプラインサイズ、キャッシュ速度とメインメモリ速度の違い、「-Os」対「-O2」、「-O3」のコードサイズ、一部の共通「march = X / mtuneを使用」など、多くのパラメータがありますあります。 " "codesize=y" は "=native" に設定されます。

より多くのコードがキャッシュに格納されるほど、これらのパフォーマンスの向上は他の最適化よりも大きくなる可能性があります。一部の最適化により、コードサイズが増加しました。

キャッシュに多くのコードが入り、複数のタスクに対して並列に実行されるより多くのコードがキャッシュに入ることができる場合、これは望ましい側面です。

徹底した回答を提供するには、多くの研究が必要です。

2.

異なるコンパイラフラグとオプションを使用すると、他のバグや誤動作が発生する可能性があります。

したがって、libcなどの重要な部分やディストリビューション全体を再コンパイルすると、他の人がバグレポートを使用できなくなり、問題を簡単に再現できなくなります。あなたの設定が島になります…

三。

社会的側面:展開部分を最適化しないと、管理者はインストールに関するバグレポートを再生でき、バグレポートを送信すると展開の改善に役立ちます。

4.

おそらく、スピードアップは数週間の間に再コンパイル(libc最適化でなければ)、主流から抜け出すのに費やす価値がないかもしれません。

...

速度の問題を解決する必要がある場合は、より高速なシステムが効果的なソリューションになる可能性があります。

答え3

パフォーマンス上の利点がありますが、互いにベンチマークしない限り、目立たないほど小さいです。 Yetiが書いたように、速度に影響を与える変数は多くあります。一般的に言えば、バイナリディストリビューションを使用する場合は、単一ライブラリのカスタムバージョンを構築することは価値がありません。そのライブラリを最新の状態に保つ責任は、あなたにあり、更新するのを忘れやすいためです。

一部のプランは他のプランよりも多くの利点を享受できます。特に、folding@homeなどのプログラム、暗号通貨採掘、暗号化、メディアエンコードなどの数学中心のプログラムです。メディアのデコードにも役立ちますが、最も重要なコンテンツ(MMX、AVXなど)は、使用している形式に関係なくコンパイルされているため、-march映画を見るときに違いを感じることはありません。一方、JACKなどのリアルタイムオーディオは、最小レイテンシが音質に影響を与えるため、利点が得られます。 libcなどの基本ライブラリと比較すると、これらのライブラリはアップグレードするまで利用できないため、脆弱性が検出された場合はすぐにアップグレードすることが重要ではありません。

興味があれば試してみてください。ソースコードベースの展開すべてが選択されたフラグにコンパイルされます。コードは最新のプロセッサで非常に高速にコンパイルされるため、以前ほど痛くはありません。 Gentooはその中で最もよく使われています。

これに加えて、-marchソースコードよりもパフォーマンスに影響を与える可能性がある/ sysファイルシステムを介して複数のパラメータを使用できます。たとえば、/sys/block/sd?/queue/内部スケジューラの設定は全体のパフォーマンスに大きな影響を与える可能性があります。 CFQからDeadlineに切り替えましたが、特定のワークロードの対話型パフォーマンスが大幅に向上しました。 CFQには、私が好きなように調整できる多くの設定があると言いたいです。

もう一つの「宝の倉庫」はです/proc/sys/。たとえば、/proc/sys/vm/swappiness古いコンテンツをスワップに移動してメモリの解放速度を変更するように調整します。Red Hatにはパラメータに関する良い入門書があります。

編集:あなたがより多くの利点を享受できるプログラムのいくつかの例を追加しました。-march

関連情報