2012-01-04 13 views
1

インテルハイパースレッディングを使用しているマシンでプロセス使用率を計算しようとしています。ハイパースレッディングマシンでのプロセス使用率の計算

計算をしようとするとき、私は一つの問題を持っている:

私は物理コア 上でのみ実行しているとき、私のプロセスがやっているループをカウントし、別のプロセス(同じもの)上で動作しているときにそれを数えています他の論理コア(同じ物理コア)。

私のプロセスがやっているループの量に違いがあることがわかります。私はそれがハイパースレッディングマシンで動作しているという事実に関連していると思います。

私は、プロセスの使用率を計算しようとしていたときに私のプロセスは、そのようにした正確な実行している時間が、私は私の計算に追加することができますされるかを知る方法はありますか?

+0

トップはあなたにも、私のプロセスは、コア上で(ほぼ)のみを実行している –

+0

ハイパースレッドマシンの正しい利用を与える必要があります...私はそれがループの量を計算することによって、どのようにロード見てみたいです。トップは常に98%の時間を表示します。これは私には良いことではありません – user1120875

+0

この場合、CPUの98%を使用しています。本当に何も言えません。ハイパースレッディングは、BIOSやその他のユーティリティを使って無効にすることができますので、電源を切って番号が変わったかどうかを確認してください。これにより、おそらく他のシステムでのCPU使用状況がわかります。 –

答えて

2

プロセスにかかる論理CPUの時間はどれくらいか分かります。物理CPUをどれだけ使用しているかは分かりません。実際には定義されていません。
HyperThreading(または、より現代的なSMT)は、2つのスレッド間の物理CPU時間を分割することによって機能しません。これは、CPU内の実行ユニット(およびそのようなユニットがいくつかあります)に作業を割り当てることによって機能します。
両方のスレッドを一度に実行することができます。いくつかの整数実行ユニットといくつかのもの(メモリ、浮動小数点)があります。

ボトムラインは - スレッドは、論理CPUの100%を取る場合、それは100%のCPUを要します。それだけであなたに伝えることができます。