私は何を理解しようとしている%CPU
は、top
を実行することを意味します。
私は見ています %CPU
(私のアプリケーションでは400
または500
その時間の大半。
これが何を意味するのか誰か知っていますか?
高い数値とは何ですか?
19080 david 20 0 27.9g 24g 12m S 400 19.7 382:31.81 paper_client
lscpu
は、以下の出力を提供します。
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 45
Stepping: 7
CPU MHz: 2599.928
BogoMIPS: 5199.94
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 20480K
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31
%CPU-CPU使用率:プロセスで使用されているCPUの割合。 デフォルトでは、
top
はこれを単一CPUのパーセンテージとして表示します。マルチコアシステムでは、より大きなパーセンテージを使用できます100%より。たとえば、3つのコアが60%使用されている場合、top
はCPU使用率が180%であることを示します。詳細は here を参照してください。 を押すと、この動作を切り替えることができます Shiftitop
の実行中に、使用可能なCPUの全体的なパーセンテージを表示します。
代わりにhtop
を使用できます。
コアと仮想コアの数についての質問に答えるには:
あなたのlscpu
出力によると:
CPU(s)
)があります。Socket(s)
)があり、それぞれに1つの物理プロセッサが含まれています。Core(s) per socket
)が内部にあります。つまり、8 * 2 = 16個の実際のコアがあります。Thread(s) per core
)を持つことができます。つまり、実際のコア*スレッド= 16 * 2 =合計32コアがあります。つまり、16個の実際のコアから32個の仮想コアがあります。
コアがたくさんあるということです。最大で1つのコアは100%です。だからそれができる最高はnumber_of_cores × 100%
。
アプリが400%である理由を確認する必要があります。