web-dev-qa-db-ja.com

Excel 2003のようなシングルスレッドアプリケーションは、タスクマネージャーでハイパースレッディングまたはデュアルコアCPUの50%以上をどのように使用できますか?

Excelが再計算を完了するのを待っていますが、タスクマネージャーによって報告されたCPU使用率が、ハイパースレッディングを備えたPentium 4で51%または52%に急上昇することがあります。 Excel 2003のようなシングルスレッドアプリケーションはどのようにこれを行っていますか?

タスクマネージャー側の単なる丸め/見積もりエラーですか?それとも、HTの割り当てと関係がありますか?つまり、これが本物のデュアルコアまたはデュアルCPUマシンで発生することはありませんか?

3
Lunatik

Excel2003がシングルスレッドの場合は驚きます。少なくともUIスレッドとワーカースレッドがある可能性があります。計算の進行中にUIが再描画されますか?その場合、Excelはシングルスレッドではありません。

6
kbyrd

MS Windowsは、デフォルトではアプリケーションを1つのコアにロックしないため、表示されているのは、Excelがいずれかのコアで実行されていることです。

タスクマネージャを使用して、この動作を(一時的に)変更できます。

Excelを実行している場合は、taskmgr.exeを起動し、[プロセス]リストに移動して、プロセスを右クリックすると、プロセスのアフィニティを設定することを選択できます。

いずれかのコアに固有のマークを付けると、(ここでもtaskmgrで)1つのコアでのみ実行されていることがわかります。

1
ted_j

さて、もしあなたがシングルコア/スレッドプロセッサを持っていたらどうでしょうか? Excelはどのようにしてその50%以上を使用できますか? 2つのコアがあり、それぞれが1つのスレッドを実行でき、Excelが1つのコアで実行される場合、そのコアの最大100%を使用できます。

ハイパースレッディングでは、CPUコアごとに2つの「実際の」スレッドはありませんが、2つの「仮想」スレッドがあります。 2つのスレッドは、実行リソースを共有する必要があります。そのため、スレッドの1つが他のスレッドよりも多くのリソースを使用する可能性があり、50%を超える使用量として表示される場合があります。

1
Joe Internet