실시간으로 CPU 사용량 얻기

실시간으로 CPU 사용량 얻기

CPU 사용량을 얻기 위해 다음 명령을 실행하면 nice + user CPU 사용량을 얻습니다.

top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}' 

산출:

14.5

여기서 문제는 출력이 top 명령에 따라 달라지므로 top 명령으로 즉시 변경되지 않는다는 것입니다. 그래서 나는 즉시 올바른 CPU를 얻지 못합니다. 동일한 출력을 제공하고 변경되지 않습니다.

출력에서 실시간 CPU 사용량을 얻고 싶습니다. 내 명령을 향상시킬 수 있도록 도와주세요.

답변1

1초의 지연이 가능하다면 CPU 사용량을 간단한 백분율로 인쇄합니다.

echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')]

(1초의 지연 없이,vmstat부팅 이후에는 평균 값만 인쇄할 수 있습니다.)

답변2

이는 알려진 문제입니다 top. 설명대로여기, 첫 번째 반복은 부팅 이후 백분율을 반환하므로 현재 백분율을 얻으려면 top -b적어도 두 번의 반복( )이 필요합니다 . -n 2작업 속도를 높이려면 d반복 간 지연 시간을 0.01. top사용자, 시스템 프로세스 및 nice프로세스 간에 CPU 사용량을 분할하는 경우 세 가지의 합계를 원합니다. 마지막으로 grepCPU 백분율이 포함된 라인을 만든 다음 이를 사용하여 gawk사용자, 시스템 및 Nice 프로세스를 합산합니다.

    top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
        -----  ------   -----------    ---------   ----------------------
          |      |           |             |             |------> add the values
          |      |           |             |--> keep only the 2nd iteration
          |      |           |----------------> keep only the CPU use lines
          |      |----------------------------> set the delay between runs
          |-----------------------------------> run twice in batch mode

답변3

여러 가지 방법을 시도했지만 이것이 가장 정확한 것 같습니다.

cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{print ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5)}'

에서 얻었습니다여기

답변4

코어당 CPU 사용량이 필요했고 sysstat 패키지의 mpstat를 사용했습니다.

sudo apt install sysstat

CPU0 사용률(%):

echo 100 - $(mpstat -P 0 | tail -1 | awk '{print $13}') | bc

CPU1 사용률(%):

echo 100 - $(mpstat -P 1 | tail -1 | awk '{print $13}') | bc

코어가 2개 이상인 경우 -PX를 변경하세요.

관련 정보