ボトルネックの特定手順

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パッケージをインストールする必要がある