sa 명령 출력에서 ​​사용자가 사용한 CPU 비율을 어떻게 확인할 수 있습니까?

sa 명령 출력에서 ​​사용자가 사용한 CPU 비율을 어떻게 확인할 수 있습니까?

저는 이를 sa -mRHEL 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

관련 정보