Edited at

sar(sysstat)によるボトルネック特定

More than 1 year has passed since last update.


sar(sysstat)とは

LoadAverageやCPU使用率、ディスクI/Oの状態を表示できるコマンド。

何より便利なのは、過去にさかのぼれる点。


sarのインストール

# yum install sysstat

インストールすると、ログを取り始めます。


sarのログ取得間隔の変更

/etc/cron.d/sysstat を編集します。

$sudo vi /etc/cron.d/sysstat 

# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1

デフォルト10分間隔(*/10)になっているので、好みの間隔に変更。


主要コマンド一覧

コマンド
内容

sar -q
loadaverage

sar -u
CPU使用率

sar -b
I/O

sar -r
メモリとスワップ使用率

sar -s time
指定時間以降のデータ

sar -e time
指定時間までのデータ

sar -f /var/log/sa/sa01
日付別の過去データ


-qでLoadAverageをチェック

$ sar -q -s 21:00:00

21時00分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
21時05分01秒 1 203 0.19 0.20 0.16
21時10分01秒 0 203 0.21 0.18 0.17
21時15分01秒 2 209 0.11 0.18 0.17
21時20分01秒 1 208 0.38 0.20 0.18
21時25分01秒 0 210 0.10 0.20 0.18
平均値: 1 207 0.20 0.19 0.17

ldavg-xが、過去x分間のLoadAverageを示します。


LoadAverageの上昇が見られたら

基本的に、


  • CPU負荷(プロセス不足)

  • I/O負荷

のどちらかに切り分けられます。


-uでCPU使用率をチェック

$ sar -u -s 21:00:00

21時00分01秒 CPU %user %nice %system %iowait %steal %idle
21時05分01秒 all 11.42 0.00 3.89 0.16 0.00 84.52
21時10分01秒 all 11.32 0.00 3.44 0.45 0.00 84.79
21時15分01秒 all 10.74 0.00 3.41 0.20 0.00 85.64
21時20分01秒 all 10.26 0.00 3.29 0.13 0.00 86.32
21時25分01秒 all 10.81 0.00 3.60 0.15 0.00 85.44
21時30分01秒 all 9.41 0.00 3.03 0.17 0.00 87.39
平均値: all 10.66 0.00 3.44 0.21 0.00 85.68

sar -uは、CPUがどのようなモードになっていたのか、

それぞれのモードの割合を示してくれる。

モード
内容

%user
アプリケーション(ユーザプロセス)が使用している状態

%system
カーネル(OSなど)が使用している状態

%iowait
ディスクI/O待ち状態

%idle
CPUが何の処理もしない待機状態(I/O待ちの時間は除く)

※steal、niceは省きます。詳細は下部の参考を参照ください。


sar -u から分かること


%userか%systemが高いと・・・CPUボトルネック(もしくはメモリ不足)

(%userならアプリケーション側。%systemならカーネル側。)


%iowaitが高いと・・・ディスクI/Oボトルネック。


-bでディスクI/O状況をチェック

$ sar -b -s 21:00:00

21時00分01秒 tps rtps wtps bread/s bwrtn/s
21時05分01秒 15.67 0.00 15.67 0.00 363.44
21時10分01秒 15.42 0.00 15.42 0.00 389.58
21時15分01秒 16.25 0.00 16.25 0.00 355.18
21時20分01秒 13.50 0.00 13.50 0.00 313.71
21時25分01秒 15.98 0.00 15.97 0.05 351.94
21時30分01秒 14.43 0.00 14.43 0.00 313.95
21時35分01秒 13.22 0.00 13.22 0.00 296.66

項目
内容

tps
秒間I/Oリクエスト 数の合計。

rtps
秒間読み込みIOリクエスト数の合計。

wtps
秒間書き込みIOリクエスト数の合計。

bread/s
秒間読み込み(ブロック単位)IOリクエストのデータ量の合計。

bwrtn/s
秒間書き込み(ブロック単位)IOリクエストのデータ量の合計。


-rでメモリとスワップの使用状況をチェック

$ sar -r -s 21:00:00

21時00分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
21時05分01秒 655456 3388400 83.79 254316 1595220 2152620 80 0.00 0
21時10分01秒 642676 3401180 84.11 254364 1596728 2152620 80 0.00 0
21時15分01秒 598616 3445240 85.20 254376 1598160 2152620 80 0.00 0
21時20分01秒 598744 3445112 85.19 254388 1599628 2152620 80 0.00 0
21時25分01秒 681552 3362304 83.15 254396 1601256 2152620 80 0.00 0
21時30分01秒 548508 3495348 86.44 254416 1602084 2152620 80 0.00 0

重要なのは以下でしょうか。

項目
内容

kbmemfree
メモリ空き容量(kb)

kbmemused
メモリ使用量(kb)

%memused
メモリ使用率

kbswpfree
スワップ空き容量(kb)

kbswpused
スワップ使用量(kb)

%swpused
スワップ使用率


過去データを日時指定して実行

例えば当月15日の23:30以降のデータを見たい時は・・

$ sar -u  -s 23:30:00 -f /var/log/sa/sa15

23時30分01秒 CPU %user %nice %system %iowait %steal %idle
23時35分01秒 all 7.20 0.00 2.39 0.17 0.00 90.24
23時40分01秒 all 8.35 0.00 2.65 0.12 0.00 88.89
23時45分01秒 all 6.76 0.00 2.31 0.10 0.00 90.83
23時50分01秒 all 7.27 0.00 2.36 0.12 0.00 90.25
23時55分01秒 all 8.18 0.00 2.66 0.12 0.00 89.03
平均値: all 7.55 0.00 2.47 0.12 0.00 89.85


参考

sarコマンド - CPU・ネットワーク・メモリ・ディスク情報確認

http://www.syboos.jp/linux/doc/sar-command.html

sarコマンドの見方

http://linux.alohakeakua.net/archives/488

CPU利用率: stealとは

http://d.hatena.ne.jp/mir/20080407/p1

nice:優先順位を上げてプログラムを実行する

http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231193/