저는 이를 sa -m
RHEL 7 시스템의 각 사용자에 대한 CPU 사용량 세부 정보를 표시하는 데 사용합니다. 다음 형식으로 정보를 표시합니다.
oracle 15335 88164.18re 176.77cp 0avio 167603k
root 9640 8294.42re 10.90cp 0avio 33737k
3rdeye 250 0.33re 0.04cp 0avio 28358k
sshd 4 2.11re 0.00cp 0avio 22068k
dbus 2 0.00re 0.00cp 0avio 7600k
smmsp 2 0.00re 0.00cp 0avio 21408k
나는 이 분야에 대한 간략한 정보를 제공하는 이 웹사이트를 찾았습니다. (https://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html#comments)
~에 대한- 벽시계 분 단위의 "실시간" CP- 시스템 시간과 사용자 시간의 합(CPU 분) 케이 - 1,000개 단위의 CPU 시간 평균 코어 사용량
이 데이터를 기반으로 각 사용자의 CPU 사용량 비율을 계산하는 방법이 있습니까?
업데이트 1:
Alex가 사용자별 CPU 사용량을 얻기 위해 top 명령을 기반으로 하는 스크립트를 사용하도록 제안했기 때문에 이 업데이트를 추가합니다. 나는 top -b -n 1 -u $USERNAME | awk 'NR>7 { sum += $9; } END { print sum; }'
사용자의 CPU 사용량을 계산하기 위해 해당 논리()가 포함된 스크립트를 사용해 왔습니다 . 하지만 자세히 살펴보면 스크립트가 올바른 값을 제공하지 않는 것 같습니다. 나는 어느 정도 이유를 찾았습니다. top을 실행하면 CPU 사용량 값이 표시되고 3(기본)초마다 업데이트됩니다. 그런데 맨 위로 올라갈 때마다 초기값이 일정한 것 같습니다.
[root@myserver unix]# top -b -n 1 -u oracle |grep -i "cpu"|head -1
%Cpu(s): 5.6 us, 2.6 sy, 0.0 ni, 79.0 id, 12.6 wa, 0.0 hi, 0.2 si, 0.0 st
[root@myserver unix]# top -b -n 1 -u oracle |grep -i "cpu"|head -1
%Cpu(s): 5.6 us, 2.6 sy, 0.0 ni, 79.0 id, 12.6 wa, 0.0 hi, 0.2 si, 0.0 st
[root@myserver unix]# top -b -n 1 -u oracle |grep -i "cpu"|head -1
%Cpu(s): 5.6 us, 2.6 sy, 0.0 ni, 79.0 id, 12.6 wa, 0.0 hi, 0.2 si, 0.0 st
[root@myserver unix]# top -b -n 1 -u oracle |grep -i "cpu"|head -1
%Cpu(s): 5.6 us, 2.6 sy, 0.0 ni, 79.0 id, 12.6 wa, 0.0 hi, 0.2 si, 0.0 st
사용자 oracle에 대해 상위 4번을 실행했는데 계속 동일한 CPU 사용량 값이 제공되었습니다. -b 및 -n 옵션 없이 top을 실행하면 명확하게 볼 수 있습니다.
# top -u oracle
top - 08:47:44 up 3 days, 2:58, 2 users, load average: 2.21, 1.69, 1.42
Tasks: 1084 total, 3 running, 1081 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.6 us, 2.6 sy, 0.0 ni, 79.0 id, 12.6 wa, 0.0 hi, 0.2 si, 0.0 st
이러한 CPU 사용량 값으로 어떻게 시작되는지 확인하세요. 물론 3초 후에는 새로 고쳐지고 올바른 값이 표시되기 시작합니다. 이것이 바로 각 사용자의 CPU 사용량을 결정하는 방법을 바꾸고 싶은 이유입니다. 누락된 부분이 있으면 수정해 주세요.
답변1
다른 방법을 제안해 드릴 수 있습니다. 이는 패키지를 통해 수행됩니다.시스템 통계학자(이 링크는 아치용입니다.) mpstat
와 같은 명령을 제공합니다 iostat
.
mpstat의 출력:
Linux 4.9.43-1-lts (laptop) 18/08/2017 _x86_64_ (4 CPU)
19:51:50 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
19:51:50 all 2,18 0,03 0,58 0,07 0,00 0,02 0,00 0,00 0,00 97,13
iostat의 출력:
Linux 4.9.43-1-lts (laptop) 18/08/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2,18 0,03 0,60 0,07 0,00 97,13
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 3,13 28,15 80,47 1029654 2943525