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分) K - 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

おすすめ記事