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負荷の分散を検討する必要がある事が
導き出されます。