sar -Pコマンドを実行して内容をみてみる

はじめに

初めまして、雨が振っているときのしめっぽいにおいも好きな甫立です。

サーバで作業をしている際にふとサーバが重かったりするときもありますよね。
そんなときはsarコマンドを叩いてCPUがどんなことを処理しているのかを確認してみましょう。
ここではsarコマンドの-Pオプションを一例にその見方をご紹介いたします。

sar -Pコマンド

sar -P [オプション] [間隔] [回数]

sarコマンドはCPUやメモリの状態を確認できるコマンドで、-Pオプションを指定することでCPUがそれぞれにどの程度メモリを割いているかを項目ごとにパーセンテージで表示します。

実行してみた

[root@hodate ~]# sar -P ALL 1 1
Linux 2.6.32-754.29.2.el6.x86_64 (hodate)       2020年07月28日  _x86_64_        (1 CPU)

16時12分29秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
16時12分30秒     all      0.00      0.00      0.00      0.00      0.00    100.00
16時12分30秒       0      0.00      0.00      0.00      0.00      0.00    100.00

平均値:      CPU     %user     %nice   %system   %iowait    %steal     %idle
平均値:      all      0.00      0.00      0.00      0.00      0.00    100.00
平均値:        0      0.00      0.00      0.00      0.00      0.00    100.00

上記では1秒の間隔で1回だけCPUとメモリの状態を示したステータスを表示しています。
CPUがどのような処理をしているかは%userや%systemといった項目(フィールド)ごとに表示され、フィールドをすべて足し合わせると100%になるようになっています。
また、正常にsarコマンドの処理が終了すると、それぞれの平均値も表示されます。

以下では各フィールドごとに何を意味しているかしているのかを見ていきます。

各フィールドの内容

  • CPU
    CPU全体を表すallからCPUのコア数が増えると0,1,2… と行数が増えていきます。
    私のサーバはCPUが1コア(1CPU)なのでCPUフィールドがallと0しか存在していませんが、マルチコアになると1行1CPUで表されます。
  • %user
    ユーザモードで実行している使用率を表しています。デーモンプログラムも対象なので注意しましょう。
  • %nice
    ユーザモードのプロセスでも優先順位(nice値)を上げて変更して実行している使用率です。nice値が高いプロセスはCPUを多く使用するようになります。
  • %system
    システムモードで実行している使用率を表しています。カーネルが扱っていて、デバイスに接続しているプロセスが表示されます。
  • %iowait
    I/O待ちで実行している使用率を表しています。メモリが不足して、スワップアウトとスワップインを繰り返している場合に大きくなります。ここが継続して増大していると危険なので注意してください。
  • %steal
    ハイパーバイザが別の仮想CPUを処理している間に、1つまたは複数の仮想CPUが待機するのに費やした時間の割合を表します。
  • %idle
    CPUがアイドル状態にある割合を表しています。何も実行されていない状態を表します。

最後に

いかがでしたでしょうか?
sarコマンドには他にもオプションによって見れるステータスが異なっているので、ここで記述したことも参考になればと思います。

参考:[sar ファイルの各項目について、改めて調査してみました]
(https://tech-lab.sios.jp/archives/15817)