CentOS7 CPU性能情報取得

Linux

CentOS7、redhat7でCPU使用率の高負荷のメッセージ等が見つかり、定期的にCPUの負荷が上がっており
どうもCPUの使用率が高いようだけど、いつ、どのように使用されているのかを確認したいという場合
本記事の手順を参考に情報取得を実施していただけければと思います。

下記の手順をご紹介いたします。

CPU使用率が高い時間帯の特定
①事前設定なしで確認する手順
②手動でCPU使用状況を確認する手順

CPU使用率が高い時間帯の特定

CPU使用率が高い時間帯の特定

事前の設定変更や、情報取得コマンドを定期的に動作させないくても、以前のCPU使用率が確認できる場合があります。
自動でCPU使用情報が取得されている場合がありますので、まず、見れたらラッキーくらいで確認してみましょう。

事前設定なしで確認する手順

sysstat(シススタット)パッケージが導入されている場合は、デフォルトでsarという情報取得コマンドが自動実行設定(cron登録)されるため履歴情報を確認することができます。
自動実行設定は、下記のファイルに登録されます。
/etc/cron.d/sysstat

# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

この設定により、約1ヶ月分の性能情報が/var/log/sa以下に保存されることとなります。このログの情報を個別に確認する場合は、下記のようにファイルを指定します。

時間ごとのCPU(全体表示)使用率確認

sar -u -f [saファイル名]
例 sar -u -f /var/log/sa/sa03
Linux 3.10.0-229.el7.x86_64 (ip-172-31-36-77.ap-northeast-1.compute.internal)   2020年09月03日  _x86_64_        (1 CPU)

00時00分01秒  CPU     %user     %nice   %system   %iowait    %steal     %idle
00時10分01秒     all      0.03      0.00      0.02      0.00      0.02     99.93
00時20分01秒     all      0.01      0.00      0.01      0.00      0.01     99.97
00時30分01秒     all      0.01      0.00      0.01      0.00      0.01     99.97

23時30分01秒     all      0.01      0.00      0.01      0.00      0.01     99.98
23時40分01秒     all      0.01      0.00      0.01      0.00      0.01     99.97
23時50分01秒     all      0.01      0.00      0.01      0.00      0.01     99.97
平均値:      all      0.02      0.00      0.02      0.00      0.01     99.95

表示は、上記のように10分ごと平均値のCPU全体の性能情報が確認できます。平均値であるため瞬間的にCPU使用率あがった場合などは、わずかに上昇するのみで、大きな変化はみられないでしょう。また、複数コアがある場合は、全コアの平均値となるため丸められ表示されます。コアごとの使用率は下記のコマンドで確認できます。

時間ごとのCPU(コアごと表示)使用率確認

sar -u -f [saファイル名]
例 sar -u -f /var/log/sa/sa03
# sar -u -P ALL -f /var/log/sa/sa02
Linux 3.10.0-229.el7.x86_64 (ip-172-31-36-77.ap-northeast-1.compute.internal)   2020年09月02日  _x86_64_        (1 CPU)

00時00分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
00時10分01秒     all      0.02      0.00      0.02      0.00      0.02     99.95
00時10分01秒       0      0.02      0.00      0.02      0.00      0.02     99.95

00時10分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
00時20分01秒     all      0.01      0.00      0.01      0.00      0.01     99.98
00時20分01秒       0      0.01      0.00      0.01      0.00      0.01     99.98

00時20分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
00時30分01秒     all      0.01      0.00      0.01      0.00      0.01     99.97
00時30分01秒       0      0.01      0.00      0.01      0.00      0.01     99.97

コアごとの情報を取得しても、使用率の変化がわかりずらい場合は、値が10分の平均となっているため
丸められ変化がわかりずらくなっている可能性がありますので、下記に記載の手動での取得手順を取得間隔を短くし
確認を行ってみてください。

※参考
確認したい時間がわかっている場合は、時間を指定することもできます。
CPU使用率確認時間指定

sar -u -f [saファイル名] -s [開始時間] -e [終了時間]
sar -u -f /var/log/sa/sa02 -s 10:00:00 -e 11:30:00
Linux 3.10.0-229.el7.x86_64 (ip-172-31-36-77.ap-northeast-1.compute.internal)   2020年09月02日  _x86_64_        (1 CPU)

10時00分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
10時10分01秒     all      0.01      0.00      0.01      0.00      0.02     99.96
10時20分01秒     all      0.01      0.00      0.01      0.00      0.01     99.98
10時30分01秒     all      0.01      0.00      0.01      0.00      0.01     99.97
10時40分01秒     all      0.01      0.00      0.01      0.00      0.01     99.98
10時50分01秒     all      0.01      0.00      0.01      0.00      0.01     99.96
11時00分01秒     all      0.01      0.00      0.01      0.00      0.01     99.98
11時10分01秒     all      0.09      0.00      0.04      0.00      0.02     99.85
11時20分01秒     all      0.02      0.00      0.01      0.00      0.01     99.97
平均値:      all      0.02      0.00      0.01      0.00      0.01     99.96

手動でCPU使用状況を確認する手順

sysstatが導入されていない場合や、取得間隔を短くし確認したい場合は、mpstatコマンドを使用します。
mpstatコマンドは、sarコマンドと同じようにsysstatパッケージに含まれるコマンドで、sarより取得情報が多いためこちらを使用することにします。

sysstatが入っていない場合は、下記コマンドにてインストールを行ってください。

yum install sysstat

CPU使用率取得開始コマンド
 CPU使用率の取得間隔の指定を出力ファイルを指定、バックグラウンド実行&ターミナル切断後も継続し取得する。

nohup mpstat -P ALL [取得間隔(秒)] > [出力ファイル名] &

例 5秒間隔で情報を取得し、/tmp/mpstat.logファイルに保存 
nohup mpstat -P ALL 5 > /tmp/mpstat.log &

取得ファイルサンプル

Linux 3.10.0-229.el7.x86_64 (ip-172-31-36-77.ap-northeast-1.compute.internal)   2020年09月03日  _x86_64_        (1 CPU)

13時58分36秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13時58分41秒  all    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.80
13時58分41秒    0    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00   99.80

13時58分41秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13時58分46秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
13時58分46秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

CPU使用率取得確認手順
プロセス名の確認

ps -ef |grep mpstat
下記の12065がプロセスID
root     12065  8376  0 13:58 pts/0    00:00:00 mpstat -P ALL 5  
root     12109  8376  0 14:11 pts/0    00:00:00 grep --color=auto mpstat

CPU使用率取得停止コマンド

kill -9 [プロセスID]
kill -9 12065

CPU使用率が高いプロセスの特定は別途記載予定です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です