1

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

計算を行おうとすると、1つの問題があります。

物理コアで単独で実行しているときにプロセスが実行しているループをカウントし、別のプロセス(同一のプロセス)が他の論理コア(同じ物理コア)で実行しているときにカウントしています。

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

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

4

1 に答える 1

2

プロセスにかかる論理 CPU の時間のみを知ることができます。物理 CPU がどれだけ使用されているかはわかりませんが、実際には定義されていません。
ハイパースレッディング (または、少なくとも最新の SMT) は、物理 CPU 時間を 2 つのスレッドに分割することによっては機能しません。これは、CPU 内の実行ユニットに作業を割り当てることによって機能します (そのようなユニットはいくつかあります)。
したがって、両方のスレッドが同時に実行される可能性があります。いくつかの整数実行ユニットと、その他 (メモリ、浮動小数点) の実行ユニットがあります。

結論 - スレッドが論理 CPU の 100% を使用する場合、それは 100% の CPU を使用します。それはあなたが言うことができるすべてです。

于 2012-01-04T20:04:43.187 に答える