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 -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
CPU使用率
オプションを指定しなかった場合は "-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の使用を要求しているタスク数
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 % を基準に考える
二重に冗長化した場合は 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
CPU クロック周波数
sar -m CPU 1
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- 使い所が難しいマイナーな運用コマンドコマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
- ipコマンドの基本的な使い方ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
- プロセス関連のコマンドプロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
- rpmとyumのチートシートrpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
- メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...