2010-12-29 7 views
4

私は、異なる数のプロセスにわたって並列化できる分析を持っています。 IOとCPUの両方が集中することが予想されます(好奇心が強い人ならば、非常に高いスループットの短いリードDNA配列)。IOブロックされたプロセスは、「トップ」出力で100%のCPU使用率を示しますか?

これを実行するシステムは48コアのLinuxサーバーです。

問題は、合計スループットが最大になるような最適なプロセス数を決定する方法です。ある時点では、おそらくはプロセスがIOバウンドになり、プロセスを増やすことは有益でなく、おそらくは有害なものになるでしょう。

ポイントに達すると、標準のシステム監視ツールから通知できますか? トップ(または別のツール)の出力によってIOバウンドプロセスとCPUバウンドプロセスを区別できますか? IOでブロックされたプロセスが100%のCPU使用率を示している可能性は疑わしいです。

+1

通常、ブロックされていないスレッドの数は、プロセッサの数と同じにする必要があります。ノンブロッキングIOを使用することは可能ですか?あなたがあなたのアーキテクチャに取り組むことができれば、それは単純化されるかもしれません。 –

答えて

1

オペレーティングシステムがIOをスケジューリングして通常完了するのを待っているため、単一のIOバインドプロセスでもCPU使用率が高くなることはほとんどありません。したがって、topは、単にCPUを定期的に使用するIOバインドプロセスと非IOバインドプロセスを正確に区別することができません。実際には、IOバインドされたすべてのプロセスでひどく過負荷になり、ほとんど達成できないシステムではCPU使用率が非常に低くなる可能性があります。

topのみを使用して、最初のパスとして、CPU使用率がオフになるまでスレッド/プロセスの追加を続けて、特定のマシンの概略構成を決定できます。

1

iostatやvmstatなどのツールを使用すると、プロセスがI/Oでブロックされている時間を表示できます。一般に、必要以上に多くのプロセスを追加することには害はありませんが、メリットは減少します。全体的な効率の測定値としてプロセスとスループットを測定する必要があります。

6

IOでプロセスがブロックされている場合、そのプロセスは実行されていないため、時間は考慮されません。実行可能な別のプロセスがある場合、代わりに実行されます。存在しない場合、時間は「IO待機」としてカウントされ、これはグローバル統計として考慮されます。

待機時間は監視するのに便利です。これはトップのヘッダーに%iwのように表示されます。あなたはiostatやvmstatのようなツールを使ってもっと詳しく監視することができます。 Serverfaultはそれについてよりよい場所かもしれません。

関連する問題