web-dev-qa-db-ja.com

htopにたくさんの赤が表示されます-それは、私のタスクが互いにつまずきを起こしているということですか?

enter image description here

赤い色は「カーネルプロセス」を示すと読みました。それは、どのタスクがCPUを使用するかを規制している小さなデーモンを意味しますか?また、オーバーサブスクライブシステムでのトランザクションコストは?

大規模なジオプロセシングジョブをいくつか実行していますが、2つのスクリプトを同時に並行して実行しています。

最初のスクリプトは、96コアすべてで実際の処理を実行します。ほとんどすべてのメモリ使用を担当します。

2番目のスクリプトはcurlを使用してデータをダウンロードし、最初のプロセスにフィードします。これは並行して行われます。 _n_cores * 3_ファイルがダウンロードされるまでダウンロードするように書いています。その制約が満たされない場合は、1分ほど待ってから、もう一度確認します。そのため、ほとんどの場合、実行されていません。つまり、RSys.sleep()コマンドを実行しています。

ダウンロードプロセスで使用するコアの数を減らして実験しました。そうすると、処理スクリプトに追いつくことができません(私はS3からDLingしています)。

TL; DR:htopを赤く​​することができなければ、プロセスはより速く実行されますか?コアよりも多くのプロセスがあるため、それらは赤ですか?

7
generic_user

赤は、通常はプロセスに代わってシステムコールを処理するカーネルで費やされた時間を表します。これには、I/Oに費やされた時間が含まれます。 reduceそれを減らすためだけに無駄です。無駄な時間ではありません—カーネルが有用なことをしている時間です(スラッシングをしない限り、コンテキストスイッチの数などを見てください)。

ダウンロードプロセスで使用するコアの数を減らして実験しました。そうすると、処理スクリプトに追いつくことができません(私はS3からDLingしています)。

現在の設定は、処理を供給するために必要なI/Oと処理自体の間でバランスが取れていることを示唆しています。これはかなりいい結果です。実行しているプロセスが多すぎると思われ、それが(スラッシングによって)無駄になっている場合は、ジオプロセシングジョブの数を減らして、全体的なスループットが増加するかどうかを確認できます。通常のベンチマークのヒントが適用されます。Tweakに何を加えるかを特定し、結果として生じる可能性のあるバリエーションとその意味を特定し、一度に1つだけTweakを調整し、すべてを測定します。

12
Stephen Kitt