sarコマンドの結果からマシンのCPU負荷を見る

まずロードアベレージの値に注目します。

% sar -f /var/log/sysstat/sa07 -q
Linux 2.6.32-24-generic (bluesky) 	2010年09月07日 	_x86_64_	(2 CPU)

10時43分23秒       LINUX RESTART

10時45分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
10時55分01秒         0       342      0.72      0.50      0.34
11時05分01秒         0       379      0.29      0.36      0.32
平均値:          0       360      0.51      0.43      0.33

WebサーバやAPサーバ等のレスポンスを重視されるマシンではこの値は限りなく
0に近い方が好ましくなります。また、常にCPUを使用して処理を行わせる用途で
使うときには意図的に高いロードアベレージにしてCPUに処理をさせ、
必要なCPUの数を抑える場合もあります。


ロードアベレージはCPUが実行しようとしているプロセスで処理を待っている
プロセスの数を単位時間で割ったものになります。この処理待ちのプロセスには
下記のプロセスに分類されます。
・CPUの実行権限の割り当て待ち
・ディスクのI/O処理完了待ち


このことからロードアベレージが高いマシンが、なぜロードアベレージが高いのかを
導き出す為には、ひたすらCPUを使いたいのか?I/O処理が追いついていないのか?を
確認する必要があります。

% sar -f /var/log/sysstat/sa07 -P ALL
Linux 2.6.32-24-generic (bluesky) 	2010年09月07日 	_x86_64_	(2 CPU)

10時43分23秒       LINUX RESTART

10時45分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
10時55分01秒     all      2.78      0.05      0.87      2.49      0.00     93.81
10時55分01秒       0      3.66      0.08      1.01      3.14      0.00     92.11
10時55分01秒       1      1.92      0.01      0.74      1.85      0.00     95.48

10時55分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
11時05分01秒     all      3.76      0.07      1.32      1.19      0.00     93.66
11時05分01秒       0      4.08      0.12      1.50      1.54      0.00     92.76
11時05分01秒       1      3.46      0.01      1.15      0.85      0.00     94.53

平均値:      CPU     %user     %nice   %system   %iowait    %steal     %idle
平均値:      all      3.27      0.06      1.10      1.84      0.00     93.73
平均値:        0      3.87      0.10      1.25      2.34      0.00     92.43
平均値:        1      2.69      0.01      0.94      1.35      0.00     95.01

CPUの情報を確認し、%user %systemの値が高く、%iowaitの値が低い場合は
ひたすらCPUが使われる処理が動いていてロードアベレージが高い状態になります。


逆に%user %systemの値が高く、%iowaitの値が高い場合はI/O処理が
追いついていない状態でのロードアベレージが高い状態になります。


CPUの状態のチェックは必ず全てのCPUを見るようにした方が確実です。
複数CPUや複数コアでの処理では特定のCPUIDのCPUの処理でI/O待ちが
集中している事がありますので平均で見るのは重要な値を
見落とす可能性があります。


この結果から意図しない%user %system値の上昇が起こっている場合はCPU負荷の分散、
%iowait値の上昇が起こっている場合はI/O負荷の分散を検討する必要がある事が
導き出されます。