2019年 12月 07日
SUSE Linux 15 の負荷管理, vmstat, sysstat のインストールと利用法
第2章 システム監視ユーティリティ
sle15:~ # sarIf 'sar' is not a typo you can use command-not-found to lookup the package that contains it, like this:cnf sarsle15:~ #
SUSE Lnux ()openSUSE,SLE) には sysstat はデフォルトでインストールされていません。 yast か zypper でインストールします。 yast の場合sle15:~ # yastもしくはsle15:~ # yast2sle15:~ # yast の場合[Tab] と [Enter] を使って Software > Software Manegement より "sysstat" を "Search Parase"、 リストに出てきた "sysstat" を選んで、space key で ”+” (インストール)にトグルして ”Accept” します。sysstat をサービスマネージャで有効化します。yast > sysem > service manager > "sysstat" を "On Boot", "Active" に設定sle15:~ # yast2 の場合Software > Software Manegement より "sysstat" を "Search Parase"! リストに出てきた "sysstat" を選んでチェックあとは同様にサービスマネージャで、有効化します。
最新版がリポジトリにない場合、software.opensuse.org よりsysstat パッケージを検索して 1 click インストール もできます。sysstat Sar and Iostat Commands for LinuxSUSE で 1 Click インストールができない場合、YaSTにないメニューを追加
vmstat は openSUSE Leap 15.1/SLE15 ではデフォルトでインストールされているはずですが、インストールされていない場合、yast > Software > software Manegement から vmstat を検索してインストールします。あるいは https://software.opensuse.org より vmstat パッケージを検索して 1 click インストールします。
次の例では vmstat を2秒おきに実行します。 -a は推奨パラメータです。
sle15:~ # vmstat 2 -aprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free inact active si so bi bo in cs us sy id wa st1 1 197888 298152 570772 554020 0 0 4 279 9 11 2 1 92 5 00 0 197888 298160 570772 554064 0 0 0 187 169 330 1 1 96 3 00 0 197888 300208 570772 552016 0 0 0 270 189 396 1 1 94 4 00 0 197888 300240 570772 552016 0 0 0 346 161 331 1 1 94 5 00 0 197888 295892 570776 556112 0 0 0 221 283 551 10 1 88 2 00 0 197888 295924 570784 556112 0 0 0 327 156 330 1 0 96 4 00 0 197888 295940 570784 556112 0 0 0 81 132 276 0 1 96 3 0^Csle15:~ #
r実行キューに入っているプロセス数が表示されます。これらのプロセスは、処理を 行なうために CPU の空きを待っている状態です。ここの値が利用可能な CPU 数 よりも定常的に大きい場合は、 CPU の処理能力が不足していることを示します。bCPU 以外の資源を待機しているプロセス数が表示されます。ここの値が高い場合は、 入出力 (ネットワークまたはディスク) に問題があることを示しています。
とあるので、"r" のカラムは、スタンバってるプロセスキューの数、つまりCPUの空き待ちで、この数字が大きいとCPUがテンパってビジー状態であるという事です。”b” のカラムに数字が入っている時は、入出力がテンパっている、という事になります。
How to set up the sadc cron job on SLES12sysstat は有効化すると cron で10分置きにデータの収集を始めるようです。
sle15:~ # ls /etc/sysstat/ -ltotal 16-rw-r--r-- 1 root root 1008 Oct 23 17:14 sysstat-rw-r--r-- 1 root root 263 Oct 23 17:14 sysstat.cron-rw-r--r-- 1 root root 6430 Oct 23 17:14 sysstat.ioconfsle15:~ # cat /etc/sysstat/sysstat.cron# crontab for sysstat# Activity reports every 10 minutes everyday*/10 * * * * root [ -x /usr/lib64/sa/sa1 ] && exec /usr/lib64/sa/sa1 -S ALL 1 1# Update reports every 6 hours55 5,11,17,23 * * * root [ -x /usr/lib64/sa/sa2 ] && exec /usr/lib64/sa/sa2 -Asle15:~ #
- とにかく使ってみるデフォルトで "# sar" を実行すると、これまで過去10分おきに取得したデータダンプを表示します。リアルタイムに sar でコンピュータの状態を見るには
# sar 秒数
でリアルタイム表示をします。例えば2秒おきに見たい場合は
sle15:~ # sar 2Linux 4.12.14-lp151.27-default (sle15) 12/02/19 _x86_64_ (2 CPU)15:11:45 CPU %user %nice %system %iowait %steal %idle15:11:47 all 0.25 0.00 0.50 18.14 0.25 80.8615:11:49 all 1.00 0.00 0.50 5.49 0.25 92.7715:11:51 all 1.75 0.00 0.75 6.23 0.25 91.0215:11:53 all 1.75 0.00 0.50 4.76 0.00 92.98^CAverage: all 1.19 0.00 0.56 8.64 0.19 89.42sle15:~ #
という感じです。%iowait の値が高ければ、ディスクデバイスがテンパっています。 %idole の数値が 100 であれば、ioが「ド暇」状態だし、数字が下がればテンパっている状態です。- ディスクデバイスの負荷# sar 秒数 - b -p オプションで、ディスクデバイス等の状態を秒単位で表示します。
sle15:~ # sar 2 -d -pLinux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)13:47:36 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util13:47:38 vda 20.00 0.00 331.50 16.57 0.02 13.60 0.40 0.8013:47:38 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0013:47:38 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util13:47:40 vda 15.50 0.00 248.50 16.03 0.00 11.35 0.00 0.0013:47:40 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0013:47:40 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util13:47:42 vda 18.50 0.00 297.50 16.08 0.00 39.78 0.22 0.4013:47:42 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0013:47:42 DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util13:47:44 vda 11.00 0.00 123.75 11.25 0.01 18.18 0.73 0.8013:47:44 sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00^CAverage: DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %utilAverage: vda 16.25 0.00 250.31 15.40 0.01 21.29 0.31 0.50Average: sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00sle15:~ #
sle15:~ # sar 2 -n DEVLinux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)13:56:24 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil13:56:26 eth0 2.50 1.50 0.53 0.10 0.00 0.00 0.00 0.0013:56:26 lo 25.00 25.00 1.50 1.50 0.00 0.00 0.00 0.0013:56:26 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil13:56:28 eth0 2.00 1.00 0.12 0.40 0.00 0.00 0.00 0.0013:56:28 lo 16.00 16.00 0.92 0.92 0.00 0.00 0.00 0.0013:56:28 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil13:56:30 eth0 2.50 0.50 0.15 0.03 0.00 0.00 0.00 0.0013:56:30 lo 20.00 20.00 1.16 1.16 0.00 0.00 0.00 0.00^CAverage: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutilAverage: eth0 2.33 1.00 0.26 0.18 0.00 0.00 0.00 0.00Average: lo 20.33 20.33 1.19 1.19 0.00 0.00 0.00 0.00sle15:~ #
sle15:~ # ls /var/log/sasa20191204 sa20191205 sa20191206 sar20191204 sar20191205sle15:~ #sle15:~ # sar -f /var/log/sa/sa20191204Linux 4.12.14-lp151.27-default (sle15) 12/04/19 _x86_64_ (2 CPU)13:02:44 LINUX RESTART (2 CPU)13:10:01 CPU %user %nice %system %iowait %steal %idle13:20:01 all 1.56 0.01 0.51 4.52 0.17 93.2413:30:01 all 1.50 0.00 0.51 5.27 0.17 92.5413:40:01 all 1.56 0.00 0.51 5.20 0.19 92.5513:50:01 all 1.50 0.00 0.50 4.94 0.17 92.88: 略
テキストにリダイレクトして Libreoffice で開いてグラフ化してみました。応用して、過去のネットワークデバイスの負荷を見たい場合は、 -n DEV オプションを使います。
sle15:~ # sar -n DEV -f /var/log/sa/sa20191204Linux 4.12.14-lp151.27-default (sle15) 12/04/19 _x86_64_ (2 CPU)13:02:44 LINUX RESTART (2 CPU)13:10:01 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil13:20:01 eth0 3.73 3.28 0.53 4.05 0.00 0.00 0.00 0.0013:20:01 lo 10.62 10.62 0.62 0.62 0.00 0.00 0.00 0.0013:30:01 eth0 3.73 3.20 0.53 3.86 0.00 0.00 0.00 0.0013:30:01 lo 10.84 10.84 0.64 0.64 0.00 0.00 0.00 0.0013:40:01 eth0 4.29 3.36 0.71 4.05 0.00 0.00 0.00 0.0013:40:01 lo 10.67 10.67 0.63 0.63 0.00 0.00 0.00 0.00: 略
ディスクデバイスの負荷状態を調べるには iostat を実行します。"# iostat 秒数" で秒数ごとに、デバイスがテンパっている状況を確認できます。
sle15:~ # iostat 2Linux 4.12.14-lp151.27-default (sle15) 12/06/19 _x86_64_ (2 CPU)avg-cpu: %user %nice %system %iowait %steal %idle2.09 0.00 0.55 4.75 0.18 92.42Device tps kB_read/s kB_wrtn/s kB_read kB_wrtnvda 26.01 8.45 557.93 16101980 1063087761scd0 0.00 0.00 0.00 1040 0avg-cpu: %user %nice %system %iowait %steal %idle0.25 0.00 0.50 15.79 0.25 83.21Device tps kB_read/s kB_wrtn/s kB_read kB_wrtnvda 48.50 12.00 1150.50 24 2301scd0 0.00 0.00 0.00 0 0^Csle15:~ #
一番、注目するのは %iowait のカラムでしょうか。ここの数字が0であればアイドリングしていますが、でっかいファイルコピーをすると、この数字が爆発します。
vmstat, sar を中心に SUSE Linux のシステムの負荷状態を調べるコマンドを、非常にざっくりと見てみました。もっと詳しく知りたい場合は、マニュアルや書籍、他所に沢山情報があるので参考にしてください。システム管理は経験です。自分でコマンドを試して、普段見慣れない数字を見つけて、良く知っている自分のシステムを「より良く知る」事が肝要です。