CPU 코어 사용량 백분율을 표시하기 위해 top을 사용하지 마십시오.

CPU 코어 사용량 백분율을 표시하기 위해 top을 사용하지 마십시오.

저는 Linux에서 명령을 실행하기 위해 Java를 사용하고 있습니다. top은 대화형 명령이고 모든 CPU에 대한 정보를 얻으려면 1을 눌러야 하기 때문에 사용할 수 없습니다. 그래서 다음 명령을 사용하여 CPU 정보를 얻습니다.

cat /proc/stat|grep "^cpu[0-9]* ";sleep 3;cat /proc/stat|grep "^cpu[0-9]* "

내가 얻는 결과는 다음과 같습니다.

cpu  4673683 193 832132 1544221346 142352 1220 171760 0 0
cpu0 2473973 90 524817 769734476 73628 1124 158588 0 0
cpu1 2199709 103 307315 774486870 68723 95 13171 0 0
cpu  4673683 193 832133 1544221744 142352 1220 171760 0 0
cpu0 2473974 90 524817 769734674 73628 1124 158588 0 0
cpu1 2199709 103 307315 774487069 68723 95 13171 0 0

이제 내 질문은 top 명령으로 표시되는 백분율을 얻는 방법입니다.

 Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

답변1

mpstat패키지 에 포함된 유틸리티를 사용해 보세요 sysstat.

mpstat -u -P ALL

CentOS 호스트(vcpu가 1개 있는 vhost)의 출력:

Linux 3.10.0-229.4.2.el7.x86_64 (testhost.testdomain)   08/11/2015  _x86_64_    (1 CPU)

10:03:57 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10:03:57 AM  all    0.21    0.05    0.29    0.04    0.00    0.13    0.00    0.00    0.00   99.28
10:03:57 AM    0    0.21    0.05    0.29    0.04    0.00    0.13    0.00    0.00    0.00   99.28

Ubuntu 호스트의 출력:

Linux 3.13.0-24-generic (myhost)    11-08-15    _x86_64_    (4 CPU)

10:05:37     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10:05:37     all    3,34    0,04    1,16    0,13    0,08    0,00    0,00    0,00    0,00   95,25
10:05:37       0    2,81    0,06    1,93    0,13    0,11    0,00    0,00    0,00    0,00   94,96
10:05:37       1    3,94    0,03    0,78    0,10    0,03    0,00    0,00    0,00    0,00   95,13
10:05:37       2    3,31    0,02    1,21    0,16    0,07    0,00    0,00    0,00    0,00   95,24
10:05:37       3    3,31    0,05    0,73    0,14    0,10    0,00    0,00    0,00    0,00   95,68

답변2

어쩌면 이것을 시도해보십시오:

 top -b -n 1 | grep -i "^cpu"

내 컴퓨터의 출력은 다음과 같습니다.

wbzz@mambet:~$ top -b -n 1 | grep -i "^cpu"
Cpu0  : 10.5%us,  4.5%sy,  0.0%ni, 82.4%id,  1.6%wa,  0.0%hi,  1.0%si,  0.0%st
Cpu1  : 44.5%us, 15.0%sy,  0.0%ni, 40.2%id,  0.2%wa,  0.0%hi,  0.2%si,  0.0%st
Cpu2  : 43.8%us, 18.1%sy,  0.0%ni, 37.7%id,  0.1%wa,  0.0%hi,  0.2%si,  0.0%st
Cpu3  : 45.1%us, 14.5%sy,  0.0%ni, 40.3%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st

이는 Slackware-current에 적용됩니다. CentOS 시스템에서는 grep 표현식을 다음과 같이 변경해야 합니다.

top -b -n 1 | grep -i "^%cpu"

관련 정보