シングルスレッドプログラムのCPU使用率が低すぎますか?


2

Windows 7 Professional、Intel i7 CPUを使用しています。i7にはハイパースレッディングがあり、これが理由だと思います。

シングルスレッドプログラムの実行中に、タスクマネージャーで12〜13%のCPUしか使用しないことがわかりました。これは、クアッドコアCPUのCPU時間の1/8です。HTが原因でタスクマネージャーの問題ですか、それともコアの半分しか使用していないのですか?


実際には半分以上のコアを使用しています。オペレーティングシステムには、それを判断する方法がありません。1つの仮想コアがアイドル状態であるため、コアの半分のみが使用されていると想定しています。しかし、それは真実ではありません。単一の仮想コアは、可能であれば物理コア上のすべての実行リソースを使用できます。そうしないと、ハイパースレッディングはCPUのパフォーマンスを2倍にし、10〜15%しか追加しません。
デビッドシュワルツ

それは、OSがHTをサポートしているため、OSが適切なCPU使用量を把握すると仮定しただけです
...-K.Steff

問題は、ベースラインがないことです。コアができるだけ早く命令を処理している場合でも、一部の実行ユニットは使用されません。(たとえば、整数演算のみを実行している場合、浮動小数点ユニットはアイドル状態です。)そのレベルでの使用率は明確に定義されていません。OSが知っているのは、8つのスレッドを実行でき、1つのスレッドを実行している、つまり12%であるということだけです。HT対応とは、スレッドをスケジュールするコアと、物理コアがアイドル状態になっているタイミングを認識することを意味します。また、実行ユニットの使用率を実際に測定する場合、実行している負荷に関係なく、100%近くに達することはありません。
デビッドシュワルツ

回答:


2

ハイパースレッディングが有効な場合、タスクマネージャーに8つの個別のCPUグラフが表示されます。したがって、これらの仮想コアの1つの100%は12-13%になります。(私がMac / Linuxのやり方を好む理由の1つは、各コアが100%であるため、8コア(実または仮想)マシンで最大800%のCPU使用率が得られることです。)

これは、使用状況が報告される方法です。BIOS / EFIでハイパースレッディングを無効にすると、パフォーマンスがわずかに向上する場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.