24コアのVPS(UnixBenchによると、24 CPU)のアカウントを取得しました。
- 一般的に、Debian のユニバーサルシェルコンピューティングのために、これらすべてのコアをどのように最大限に活用しますか?
- シェルで長期実行アプリケーションを起動するときに、各プロセスが別々のコア(利用可能な場合)で実行されるように特別なものを入力する必要がありますか?それともDebianはこのすべてを処理するのに私が見ることができませんか?
ベストアンサー1
特別な作業を行う必要はありません。カーネルの作業は、どのスレッドがどのCPUで実行されているかを決定することであり、人間よりも優れています。
ただし、少なくとも24個の同時スレッドが実行されず、24個のCPUを持つことは意味がありません。より多くのCPUを使用できるとしても、プログラムが魔法のように速く実行されるわけではありません。複数の並列スレッドを持つようにコード化されたプログラムだけが利点を得ることができます。
N個の同時コンピューティングスレッドを持つプログラムは、最大N個のCPUを使用することで利点を得ることができます(スレッド間の同期に時間がかかるため、N倍速くないかもしれません)。別の対話なしでM個の異なるプログラムを実行すると、M個のCPUを同じように使用することになります(プログラムがマルチスレッドの場合はもっと多い)。
場合によっては、並列性を利用するために手動介入が必要です。複数のデータ処理ジョブを開始する場合は、順次生成されるのではなく、並列に(CPUあたり少し以上のジョブ)生成されることに注意してください。たとえば、ソフトウェアを構築すると、-j
オプションがに渡されますmake
。他の例と説明を参照してください。
- 4つのジョブを同時に実行しています...どうすればいいですか?
- プログラムは複数のファイルで並列に実行されます。
- デュアルコアCPUがあるときに人々が-j3オプションの使用を推奨するのはなぜですか?
- 最大X個のコマンドを並列に実行
Webサーバーを実行している場合、過負荷用に設計されたすべてのWebサーバーは並列処理を利用するのに役立ちます。 Linuxカーネル最適化のパフォーマンスを評価するときは、Apacheをテストケースとして使用してください。ただし、CPUの並列処理は、他のボトルネック(データベースアクセスや入出力帯域幅による競合など)がない場合にのみ役立ちます。