赤い色は「カーネルプロセス」を示すと読みました。それは、どのタスクがCPUを使用するかを規制している小さなデーモンを意味しますか?また、オーバーサブスクライブシステムでのトランザクションコストは?
大規模なジオプロセシングジョブをいくつか実行していますが、2つのスクリプトを同時に並行して実行しています。
最初のスクリプトは、96コアすべてで実際の処理を実行します。ほとんどすべてのメモリ使用を担当します。
2番目のスクリプトはcurl
を使用してデータをダウンロードし、最初のプロセスにフィードします。これは並行して行われます。 _n_cores * 3
_ファイルがダウンロードされるまでダウンロードするように書いています。その制約が満たされない場合は、1分ほど待ってから、もう一度確認します。そのため、ほとんどの場合、実行されていません。つまり、R
のSys.sleep()
コマンドを実行しています。
ダウンロードプロセスで使用するコアの数を減らして実験しました。そうすると、処理スクリプトに追いつくことができません(私はS3からDLingしています)。
TL; DR:htop
を赤くすることができなければ、プロセスはより速く実行されますか?コアよりも多くのプロセスがあるため、それらは赤ですか?
赤は、通常はプロセスに代わってシステムコールを処理するカーネルで費やされた時間を表します。これには、I/Oに費やされた時間が含まれます。 reduceそれを減らすためだけに無駄です。無駄な時間ではありません—カーネルが有用なことをしている時間です(スラッシングをしない限り、コンテキストスイッチの数などを見てください)。
ダウンロードプロセスで使用するコアの数を減らして実験しました。そうすると、処理スクリプトに追いつくことができません(私はS3からDLingしています)。
現在の設定は、処理を供給するために必要なI/Oと処理自体の間でバランスが取れていることを示唆しています。これはかなりいい結果です。実行しているプロセスが多すぎると思われ、それが(スラッシングによって)無駄になっている場合は、ジオプロセシングジョブの数を減らして、全体的なスループットが増加するかどうかを確認できます。通常のベンチマークのヒントが適用されます。Tweakに何を加えるかを特定し、結果として生じる可能性のあるバリエーションとその意味を特定し、一度に1つだけTweakを調整し、すべてを測定します。