マルチコアジョブを実行しているときにシステム負荷平均がコア数を超えるとパフォーマンスが低下しますか?

マルチコアジョブを実行しているときにシステム負荷平均がコア数を超えるとパフォーマンスが低下しますか?

私はRを使用して多くの統計分析を実行し、AWSで大規模なマルチコアインスタンスを大量に使用します。主にハイパーパラメータ検索、クロス検証、ブートストラップに使用されます。

コアを持つインスタンスと、一度にコアにアウトソーシングされるレプリカを持つタスクがcあるとします。これで、システムプロセス(SSHクライアントが実行されているなど)によってレプリケーションに加えてジョブが実行されています。r >= cchtopc

htopこれは、オペレーティングシステムがどのように機能するかを理解することによって、プロセッサにアクセスできるようにタスクを終了するいくつかのプロセスがあることを意味します。これらの様々なプロセスをしばらく日光にさらした後、作業を​​再開しました。

を見ると、htop赤と緑がたくさん混ざっていることがわかります。緑は私の仕事で、赤は私の仕事を達成するために完成した背景素材です。これは正しいですか?

直感的に、このシャッフルは次善策のようです。したがって、すぐに質問は次のようになります。cコアにアクセスできる場合は、レプリケーションタスクをすべてのcコアに展開する必要がありますか、それともc-1どうすればよいですか?

また、私が理解しておらず、大まかに渡るタスクにコンピューティングリソースを割り当てる方法についての詳細がたくさんあると思います。すべてのタスクをc-1コアに、すべてのシステムプロセスをコアにインポートするには何が必要ですかcth? 1つのバーを除いて、すべてのhtopは緑色で表示されますか?これは言いますか?

ベンチマーク実験ができると思いますが、巨大なインスタンスやデータセットでは難しいでしょう。だから私は仕事がどのように進むかをよりよく理解したいと思います。

ベストアンサー1

実験を行わずに特定のアプリケーションに対する正確な影響を知ることは困難ですが、一般的な経験則は、コア数をわずかに超えることが有益であることです(たとえば、ほとんどのコンパイルガイドでは、コア/スレッド数+呼び出し呼び出しを使用することをお勧めします) 1)、しかし、これをあまりにも検討することは、追加のオーバーヘッドによって悪影響を引き起こす可能性があります。その理由は、1つ(または複数)のジョブがI / O、タイマー、または他のジョブを待ち、スリープモードにある場合は、他のスレッドが継続して続行できるためです。

タスクの再構成(オペレーティングシステムのスケジューリング)は、すべての最新のオペレーティングシステムで発生するため、これに反対するのではなく、それに合わせて作業する必要があります。無関係な競争があるようであれば、プロセスをすばやくダウングレードできますが、専用のAWSインスタンスでは...そうする必要があると想像するのは難しいです。

おすすめ記事