web-dev-qa-db-ja.com

なぜ "top"コマンドが799%のCPU使用率を示しているのですか?

私は4コアのUbuntuサーバーでプロセスを実行しています。しかし、topコマンドは、CPU使用率が常に799%であることを示しています。

これはどうして可能でしょうか。マルチコアCPUの場合、100%以上のCPU使用率が予想されますが、799%が本当に高い値です。

誰が私にいつ、なぜこれが起こり得るのか説明できますか?

編集する

Gregory MOUSSATの提案に従って、htopを使って次のようにしました。

enter image description here

44
Arpssss

topが使用するスケールは、コアが完全に使用されたときに100%です。または、一方のコアが20%でもう一方のコアが80%の場合。これは簡単に100%を超える可能性があるため、マルチコアコンピューターでは奇妙な結果になります。
8個のコアがある場合、topは0%(アイドルシステム)から800%(フルパワー)までを表示できます。

あなたのプログラムはただ最大容量でハイパースレッディング(つまり8つの仮想コア)であなたの4つのコアを使っています。だからトップはあなたにほぼ8×100%= 800%を与える。

JVMにシングルスレッドを使用するように明示的に指示することはできません。アプリケーションでシングルスレッドしか使用しない場合でも、JVMはその作業を行うために複数のスレッドを使用します。

htopユーティリティをより良いtopの代替として使用することができます。プログラムが8つのコアすべてを使用しているのがわかります。

62
Gregory MOUSSAT