sarコマンドでシステムのボトルネックを探る(1)
前回のエントリでは、システムのレスポンスが悪化している場合、まずとっかかりとしてtopコマンドを実行し、ロードアベレージを確認する方法を書いた。さらに踏み込んで、何が負荷の原因なのかを探るために、sarコマンドを使う方法について書く。
sarコマンドをオプションをつけずに実行すると、以下のような出力が得られる。ファイルを指定しないと、コマンドを実行した当日の0:00から直前までの10分おきの情報が表示される。過去の情報は/var/log/saディレクトリ以下に保存されており、「sar -f sa07」などと指定すると、そのファイルに保存された情報が閲覧できる。saの後の数字は日付を表している。
sarを実行してもコマンドが見つからない場合、sysstatパッケージがインストールされていないので、インストールすべし。
[doublemarket@hoge ~]$ sar
Linux 2.6.18-194.8.1.el5 (hoge) 2011年02月15日
00時00分01秒 CPU %user %nice %system %iowait %steal %idle
00時10分01秒 all 0.05 0.00 0.08 0.02 0.00 99.85
00時20分01秒 all 0.03 0.00 0.08 0.02 0.00 99.88
00時30分01秒 all 0.07 0.00 0.11 0.02 0.00 99.79
:
:
20時00分01秒 all 0.03 0.00 0.06 0.00 0.00 99.90
20時10分01秒 all 0.06 0.00 0.11 0.03 0.00 99.80
20時20分01秒 all 0.16 0.00 0.14 0.03 0.00 99.67
20時30分01秒 all 1.11 0.00 0.27 0.12 0.00 98.50
20時40分01秒 all 0.08 0.00 0.12 0.05 0.00 99.76
平均値: all 0.08 0.00 0.10 0.09 0.00 99.73
ここで得られる結果は、sar -uと同じものである。それぞれの列の意味は以下の通り。
なお、マルチCPUの環境の場合ここに表示されているのは、全CPUの合算使用率になっている。それぞれのCPUの使用率を確認したい場合、「sar -P ALL」を実行する。意外と処理が特定のCPUに偏っていたりするので、こちらも確認してみた方がよい。
→ sarコマンドの実行結果からシステムの負荷状況に関して、以下の傾向がつかめる。
topやps auwxなどのコマンドでプロセスごとのCPU使用率を調べ、無限ループなどの不具合によるCPU使用率の上昇でないかなど、異常を確認。単に処理が重くなっているだけなら、スケールアップ(CPUを高速化)、スケールアウト(マシンを増設)を検討する。
・アプリケーション自体がディスクにアクセスする速度が遅い
・メモリが不足していてスワップ領域(つまりディスク)へのアクセスが頻発していて遅い
の2つに問題を分けることができる。このうちのどちらかという判断は、sar -rの結果などを見る必要がある。
sarコマンドには、メモリやディスク、ネットワークなどに関する情報が得られるよう、他にも色々なオプションがある。