Gentooを高速化する必芁がありたすか

「Gentooを自分甚にむンストヌルする予定です。私のプロセッサの機胜を䜿甚する方が良いでしょうし、それを最倧限に掻甚するでしょう。」 さお、それを把握したしょう...







プロセッサの䞀般的な最適化は䜕ですか


基本的に、これは、アプリケヌションのコンパむル時にMMX、SSE、AES、AVXなどの远加の呜什セットを䜿甚するこずを意味したす。 ただし、深く掘り䞋げるず、アプリケヌションだけでなく他の最適化も行われたす。

次の最適化グルヌプを特定したした。





远加の呜什セットの最適化に぀いおは、 Intel 386およびAMD x86-64 GCCオプションペヌゞで詳しく 説明されおいたす。 Pentium MMXから始めお、MMXが利甚可胜になり、AMDが3DNowを䜜成し、SSEがPentium IIIに登堎したした。 今幎私たちを喜ばせたIntel Haswellは、MOVBE、MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX、AVX2、AES、PCLMUL、FSGSBASE、RDRND、FMA、BMI、BMI2、およびF16C。

コンパむラはこれにSSEを䜿甚できるため、実数 FPU の操䜜は、远加の呜什セットにも間接的に関連しおいたす。 x87呜什よりも高速で、MMXをブロックしたせん。 これに぀いおもう少し詳しく説明したす。



別の重芁な機胜に泚意する必芁がありたす。 SSE、MMX、およびAESの略語を声に出しお蚀及するず、これらの抂念に粟通しおいる人々は、アセンブラヌが゜フトりェア内のこれらの呜什のファむルをサポヌトするCプログラマヌの困難な生掻を䌝える写真を頭に浮かびたす。 実際、これらの呜什セットを䜿甚する方法はすでに3぀ありたす静的コヌド分析甚のコンパむラヌによる自動、 特別なコンパむラヌ関数の手動による䜿甚、およびアセンブラヌ挿入の手動による䜿甚䟋 MMXプロセッサヌ向けにコヌドを最適化する方法 。 どの特定のケヌスでGCCが自動的に䞀連の指瀺を䜿甚するか蚱可されおいる堎合は明確ではありたせんが、マニュアルにはそのようなケヌスがあるこずが明確に蚘茉されおいたす願わくばコメントに曞かれたす。



静的解析コヌドの最適化に぀いおは 、 最適化を制埡するオプションペヌゞで詳しく説明されおいたす。 倚くの可胜性がありたすが、混乱しないように、それらはメタフラグにグルヌプ化されたすO0、O1、O2、O3、Ofast。 これらのフラグの詳现に぀いおは、リンク先の蚘事をご芧ください。



プロセッサキャッシュのヒットを改善するための最適化 。 すぐに説明するこずはできないので、読者に別の蚘事「 バブル、キャッシュ、分岐予枬子」を送信したす。 プログラマヌは、最適化できる堎所を分析するために、 Intel VTune Performance AnalyzerずAMD CodeAnalystを䜿甚できるずしか蚀えたせん。 たた、 ICC Intel C ++コンパむラヌはそのような最適化を自動的に実行できる堎合もあるようですが、知識のある人がコメントに今日のGCCの察凊方法を远加しおくれるこずを願っおいたす。



カヌネルレベルのコヌド最適化 。 SSE、AVX、AESなどの远加の呜什セットを䜿甚しお、AES、Twofishな​​どの暗号化APIフレヌムワヌクの機胜を高速化できたす。 これらの関数は、他のカヌネルモゞュヌルで䜿甚したり、アプリケヌションから倖郚から呌び出したりできたす。



理論を理解したので、その䜿甚方法に移りたしょう。



Ubuntuをお持ちの堎合


Ubuntuに座っおいるずしたす。 オペレヌティングシステムのサむズに応じお、接尟蟞i386たたはamd64のパッケヌゞから遞択できたす 䟋 。 i386は、386以降のパッケヌゞがどのプロセッサでも動䜜するこずを意味するものではなく、単にパッケヌゞがx86 32ビットプラットフォヌム向けであるこずを意味したす。 同様に、amd64は、x86-64 64ビットプラットフォヌムのサポヌトを意味したす。 コン゜ヌルに入力するず、これを簡単に確認できたす。

gcc -dumpmachine
      
      





32ビットUbuntu 12.04 LTSサヌバヌではi686-linux-gnuが衚瀺され、64ビットではx86_64-linux-gnuが衚瀺されたす。

32ビットのPentium 4があり、MMX、SSE、およびSSE2を䜿甚できるず仮定したすが、これらはMMXのみのIntel Celeronで動䜜するはずであり、おそらくPentium Proでも動䜜しないため、パッケヌゞの生成には䜿甚されたせんでしたMMXでさえ。

远加の呜什セットは、それ自䜓でプロセッサを決定し、プロセッサ甚のより高速なアルゎリズムを含むパッケヌゞでのみ䜿甚されたす。 幞いなこずに、これはほずんどすべおのマルチメディアパッケヌゞで発生したす。

たた、32ビットUbuntuがどのコヌド最適化に䜿甚されたのかも明確ではありたせん。 GCCの出力を芋るず、-O1から、-O2ず-O3から少しだけです。 特定のバヌゞョンのUbuntuのパッケヌゞがデフォルトのコンパむルオプションを䜿甚しおシステム自䜓に習慣的にビルドされおいる堎合、明らかに最適な合理的な方法で収集されおいたせん。

最埌に、カヌネル暗号化APIの関数は最適化されおいたせん。 远加の呜什セット甚に最適化された関数は、モゞュヌル圢匏でのみ、i586およびAESVIA Nanoにのみ存圚したすが、デフォルトではロヌドされたせん。 たた、586のどれが最適化に䜿甚できるかは明確ではありたせん。



Ubuntu 12.04 64ビットでは、状況はずっず改善されおいたす。 たず、gccはデフォルトで64ビットシステムの拡匵機胜であるMMX、SSE、SSE2を䜿甚するため、コヌドをわずかに最適化できたす。 次に、x86-64の堎合、デフォルトは-mfpmath = sseであり、これは実数の挔算を高速化したす。

远加の呜什セット甚に最適化されたカヌネル暗号化API関数は、システム内のモゞュヌルに存圚したすが、デフォルトではロヌドされたせん。 少なくずもそれらはオンにするこずができたす。

そしお最埌に、gccはUbuntu 32ビットの堎合ず同じ奇劙な最適化セットでパッケヌゞを収集したす。



gentooを持っおいる堎合


ほずんどの堎合、マニュアルからこのペヌゞを読みたす 。 したがっお、 -O2および-march = native たたは正しいプロセッサを蚭定したす。 しかし、おそらくあなたはそもそもそうですカヌネルをセットアップするずきに暗号化APIにアクセスせず、自分自身のためにいく぀かの呜什をスピヌドアップしたせんでしたが、少なくずもAESをスピヌドアップする䟡倀がありたす。 第二におそらく、利甚可胜な远加のプロセッサ呜什3dnow、mmx、sse、sse2、sse3にUSEフラグを蚭定しおいたせん。 たたは、すべおが公開されたわけではありたせん。 これは、USEフラグで最適化を意図的にアクティブにするアプリケヌションの堎合、远加の加速なしで攟眮されるこずを意味したす。



グロヌバルフラグに加えお、䞀郚のアプリケヌションの远加呜什をトリガヌするロヌカルフラグもありたす。 3dnowext、ssse3、sse4、sse4_1、avx、avx128fma、avx256、aes-niなど。 あなたによっおサポヌトされおいるすべおのものも公開する方が良いです。




amd64の最新のstage3のデフォルトは、bindist、mmx、sse、sse2です。 残念ながら、bindistは、移怍性のために䞀郚のパッケヌゞで远加の指瀺を無効にしたす。 バむンディストが必芁な堎合は、䞀郚のアプリケヌションでcpudetectionを䜿甚しお、バむンディストフラグの欠陥を軜枛しおください。




どのGentooパッケヌゞでブヌストを取埗できたすか


app-arch / libzpaq

アプリ゚ミュレヌション/ボッシュ

media-libs / freeverb3オヌディオ

media-libs / libpostprocビデオ

media-libs / libvpxビデオVP8

media-plugins / vdr-softdeviceビデオ

メディアサりンド/ mpg123

メディアビデオ/ ffmpeg

メディアビデオ/ libav

メディアビデオ/ mplayer

メディアビデオ/ mplayer2

メディアビデオ/ vlc

net-libs / cyassl

net-misc / bfgminerビットコむン

科孊生物孊/ raxml

sci-libs / fftw

科孊/ gromacs

sys-fs / loop-aes

x11-libs / pixman



たた、デフォルトですでに蚭定されおいるorcフラグは、次の堎所で远加のプロセッサ呜什を䜿甚するのに圹立ちたす。

media-libs / gstreamerオヌディオ+ビデオ



さらに、デフォルトでは蚭定されないcpudetectionフラグは、远加のプロセッサ呜什をオンザフラむで有効にするのに圹立ちたす。

メディアサりンド/ゞャックオヌディオ接続キット

メディアビデオ/ ffmpeg

メディアビデオ/ libav

メディアビデオ/ mplayer

メディアビデオ/ mplayer2

sci-libs / mpir



結論






远加資料






ICC玠材






アドオン ナヌザヌkekekeksは、最適化を䜿甚しおUbuntuの䞀郚のパッケヌゞを再構築する方法に関するレシピを共有したした。



All Articles