私の意見では、上記の答えはどれも満足のいくものではありません。
次のリンクで参照している記事は、この質問に答えるのに的を絞っていると思います:http :
//perfdynamics.blogspot.ch/2014/01/monitoring-cpu-utilization-under-hyper.html
見積もり:
HTの背後にある考え方は、現在実行中のアプリがストールしたときに別のアプリケーションスレッドを実行できるようにすることです。分岐予測ミス、パイプラインのバブルなどが原因です。これを可能にするには、別のポートまたはASレジスタが必要です。そのレジスタは、HTが有効になるとOSから見えるようになります。ただし、OS(およびフードチェーンから使用しているパフォーマンスツールまで)は、プロセッサ容量の2倍、つまり各ASポートで100%のCPUが利用可能であると考えています。
ただし、内部的には実行ユニットは1つしかありません。HTが有効になる前に開始した単一の物理コアです。違いは、2つのASポート間で何らかの方法で共有されていることです。シングルコアが2つのポート間でどのように切り替えられるかは非常に複雑ですが、ポーリングキューの観点から最も簡単に理解できます。私はGCaPクラスでその詳細レベルに進みます。
私が持っているベストケースのテスト測定では、各HTポートがビジー状態になるのは平均で75%を超えることはなく、OSによって予想される合計200%の容量の150%になることはありません。以前に言及した「不足している」50%容量は幻想です。Intelは、120%から130%の範囲のものが一般的なアプリケーションに期待できると主張しています。
実際、オペレーティングシステムは各仮想コアで100%に到達できると確信しています。私はちょうどした:
mvn clean install -DskipTests -T 5
そして、8つの仮想コアと4つの物理コアがすべてCPU使用率100%になることを保証できます。そして、私は間違いなく私のマシンに8つのコアを持っていません。
要するに、合計CPU負荷が最大で100%を超えた場合は、物理コアの正確に100%を使用して、次のように推測できます。そのメナス、物理コア1をオペレーティングシステムのCPU 1とCPU 2に分割している場合、CPU 1の総使用量は50%で、CPU 2の総使用量は50%です。そのCPUの合計使用率が100%になるというプレッシャーがかかります。あなたはそれを使い果たしました。
しかしもちろん、そのシステム監視ツールのオペレーティングシステムは、それがあなたに幻想を売り込んでいることを知りません。オペレーティングシステムとリソースの管理方法の観点から見ると、2つの仮想コアのそれぞれがまだ50%アイドルであると信じているため、実行するタスクがさらにある場合は、これらの2つのコアに均等に分散しようとします。 。したがって、CPU使用率が100%を超えると、CPU使用率の期間中、CPUでタイムスライスを取得するための変更がなかった期間に、キューに入れられた作業が常に実行されます。最終的にはそれを取得しますが、実行するようにスケジュールされていても、実際には実行されていないスレッドが常に存在します。
ありがとう