ボトルネックの特定手順
WEB+DB PRESS vol.34で書かれていたシステムチューニングの手順を自分向けにまとめておく。
基本的な流れはボトルネックの特定、ボトルネック部分のチューニングを行うことになる。ボトルネックのうち、「OSリソースに関するボトルネック」には大きくわけて以下の4パターンに分かれる。
- CPU
- メモリ
- I/O
- ネットワーク
CPUのボトルネック
sarコマンドを利用して調べると良い*1。
以下は5秒間隔で20回ほどデータを収集した場合の例になる。実際には30〜60秒間隔で収集するのが良い。
# sar -o sar_060826.o 5 20 # sar -u -f sar_060826.o Linux 2.6.9-34.0.2.EL (penguin.localdomain) 08/28/06 00:19:16 CPU %user %nice %system %iowait %idle 00:19:21 all 0.00 0.00 0.00 4.40 95.60 00:19:26 all 0.00 0.00 0.00 0.00 100.00 00:19:31 all 0.00 0.00 0.00 0.00 100.00 00:19:36 all 0.00 0.00 0.20 0.20 99.60 00:19:41 all 0.00 0.00 0.00 0.60 99.40 00:19:46 all 0.00 0.00 0.00 0.00 100.00 00:19:51 all 0.00 0.00 0.00 0.40 99.60 00:19:56 all 0.00 0.00 0.00 1.20 98.80 00:20:01 all 0.00 0.00 0.60 1.00 98.40 00:20:06 all 0.00 0.00 0.00 1.40 98.60 00:20:11 all 0.00 0.00 0.00 0.20 99.80 00:20:16 all 0.00 0.00 0.00 1.00 99.00 00:20:21 all 0.00 0.00 0.00 2.20 97.80 00:20:26 all 0.00 0.00 0.00 0.00 100.00 00:20:31 all 0.00 0.00 0.20 1.59 98.21 00:20:36 all 0.00 0.00 0.00 4.41 95.59 00:20:41 all 0.00 0.00 0.00 1.80 98.20 00:20:46 all 0.00 0.00 0.00 0.40 99.60 00:20:51 all 0.00 0.00 0.00 1.40 98.60 00:20:56 all 0.00 0.00 0.00 0.20 99.80 Average: all 0.00 0.00 0.05 1.12 98.83
ここで%userと%systemの足した値が80%を超えるようであれば、CPUにボトルネックがある可能性がある。
その場合は、以下のようにしてCPUの利用待ちが発生していないか調べる。
# sar -q -f sar_060826.o Linux 2.6.9-34.0.2.EL (penguin.localdomain) 08/28/06 00:19:16 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 00:19:21 0 47 0.00 0.00 0.00 00:19:26 0 47 0.00 0.00 0.00 00:19:31 0 47 0.00 0.00 0.00 00:19:36 0 47 0.00 0.00 0.00 00:19:41 0 47 0.00 0.00 0.00 00:19:46 0 47 0.00 0.00 0.00 00:19:51 0 47 0.00 0.00 0.00 00:19:56 0 47 0.00 0.00 0.00 00:20:01 0 47 0.00 0.00 0.00 00:20:06 0 47 0.00 0.00 0.00 00:20:11 0 47 0.00 0.00 0.00 00:20:16 0 47 0.00 0.00 0.00 00:20:21 0 47 0.00 0.00 0.00 00:20:26 0 47 0.00 0.00 0.00 00:20:31 0 47 0.00 0.00 0.00 00:20:36 0 47 0.00 0.00 0.00 00:20:41 0 47 0.00 0.00 0.00 00:20:46 0 47 0.00 0.00 0.00 00:20:51 0 47 0.00 0.00 0.00 00:20:56 0 47 0.00 0.00 0.00 Average: 0 47 0.00 0.00 0.00
ここでrunq-sz(run queue サイズ)搭載CPU×4を超えるようであれば、確実にCPUがネックになっている。
*1:sarコマンドが実行できない場合にはsysstatパッケージをインストールする必要がある