sysstatというパッケージに含まれる "sar" (System Admin Reporter) コマンドを利用すると、PCの各リソースの使用状況を表示することができます。これは、負荷試験などでボトルネックを特定するために役立ちます。
インストール例
$ yum install sysstat
インストールされたrpmパッケージ
$ rpm -qa | grep sysstat
sysstat-9.0.4-22.el6_5.1.i686
cronが自動設置されたことが確認可能 (rpmについてはこちらをご参照ください)
$ rpm -ql sysstat-9.0.4-22.el6_5.1.i686 | grep cron
/etc/cron.d/sysstat
sarコマンドでは過去のシステムの状況を確認できます。その際に参照するログをcronで取得しているのです。取得間隔を変更するためには
$ vi /etc/cron.d/sysstat
を編集します。ログを参照するには単に
$ sar
と実行すればよいです。manなどでも参照可能な後述のオプション "-u" や "-q" も指定可能です。
過去の情報を参照するだけでなく、リアルタイムに現在のシステムの使用状況をレポートできます。
$ sar 1 5
とすると1秒間隔で5秒間出力します。
Linux 2.6.32-431.23.3.el6.i686 (localhost.localdomain) 2014年10月24日 _i686_ (1 CPU)
00時39分11秒 CPU %user %nice %system %iowait %steal %idle
00時39分12秒 all 0.00 0.00 1.00 0.00 0.00 99.00
00時39分13秒 all 0.00 0.00 0.00 0.00 0.00 100.00
00時39分14秒 all 0.00 0.00 1.00 0.00 0.00 99.00
00時39分15秒 all 0.00 0.00 0.00 0.00 0.00 100.00
00時39分16秒 all 0.00 0.00 0.00 0.00 0.00 100.00
平均値: all 0.00 0.00 0.40 0.00 0.00 99.60
オプションを指定しなかった場合は "-u" を指定したことと同じ内容が出力されます。つまり "sar 1 1 -u" と "sar 1 1" は同義です。「%user」はユーザのプロセスがCPUを使用している時間の割合 (CPU使用率) です。「%system」はシステムプロセスのCPU使用率です。「%iowait」はCPUがI/Oへの読み書きを待っている時間の割合です。「%idle」はCPUが使用されていない時間の割合です。
$ sar 1 1 -u
00時53分33秒 CPU %user %nice %system %iowait %steal %idle
00時53分34秒 all 0.00 0.00 0.00 0.00 0.00 100.00
平均値: all 0.00 0.00 0.00 0.00 0.00 100.00
「tps」は "transfers per second" の略で、一秒あたりのI/O読み書きリクエスト数です。「rtps」と「wtps」はそれぞれ read と write で、合計すると "tps" と等しくなります。「bread/s」は "blocks read per second" の意味で、一秒あたりに read されたブロック数です。「bwrtn/s」は "blocks written per second" の意味で、一秒あたりに written されたブロック数です。ブロックについてはこちらのページをご参照。
$ sar 1 1 -b
01時01分19秒 tps rtps wtps bread/s bwrtn/s
01時01分20秒 0.00 0.00 0.00 0.00 0.00
平均値: 0.00 0.00 0.00 0.00 0.00
CPUの使用を要求しているタスク (実行待ちまたは実行中) の平均個数をロードアベレージとよび、PCのCPUコア数よりも高くなると処理ができず、実行待ちプロセスが発生します。「runq-sz」は "run queue size" の意味で、実行待ち状態のタスク数です。「ldavg-N」は過去 N 分前までの load average の平均値です。
$ sar 1 1 -q
01時20分39秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
01時20分40秒 0 95 0.00 0.00 0.00
平均値: 0 95 0.00 0.00 0.00
例えば「%memused」でメモリ使用率が確認できます
$ sar 1 1 -r
01時25分27秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
01時25分28秒 354440 156384 30.61 9332 82420 198784 12.75
平均値: 354440 156384 30.61 9332 82420 198784 12.75
"-o" ですべての情報のファイル出力ができます。これを1時間実行してみます。
$ sar -o output.txt 1 3600
負荷試験などが完了したあとで、このファイルを参照すればよいのです。
$ sar -f output.txt -u
$ sar -f output.txt -b
$ sar -f output.txt -q
$ sar -f output.txt -r
二重に冗長化した場合は 40% が基準になります。冗長化したホストのうち、どちらかが落ちたとしても 80% 程度になるため耐えられます。
/var/log/sa/
に保存されているファイルを指定することで、直近の X 月 YY 日 の情報を利用できます。
$ sar -f /var/log/sa/saXX -u
$ sar -f /var/log/sa/saXX -b
$ sar -f /var/log/sa/saXX -q
$ sar -f /var/log/sa/saXX -r
これらの情報はテキストファイルでも保存されています。
$ less /var/log/sa/sarXX
sar -m CPU 1