悪さをしているシステムを調査したいというモチベーションの記事です。 コマンドの出力結果は、サーバに負荷をかけていないため参考になりません。。。
vmstat
# vmstat 2 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 650984 19148 283696 0 0 29 76 20 40 0 0 99 0 0 0 0 0 651000 19148 283720 0 0 0 0 11 12 0 0 100 0 0 0 0 0 651000 19148 283720 0 0 0 0 9 12 0 0 100 0 0 0 0 0 651000 19148 283720 0 0 0 0 6 8 0 0 100 0 0
指定した秒数間隔でIO負荷を見てくれます。 システム全体なので、プロセスごとに見れません。
sar
# sar Linux 4.4.41-36.55.amzn1.x86_64 (ip-172-30-2-131) 02/21/2017 _x86_64_ (1 CPU) 02:00:01 AM CPU %user %nice %system %iowait %steal %idle 02:10:01 AM all 0.10 0.00 0.07 0.01 0.01 99.81 02:20:01 AM all 0.11 0.00 0.06 0.05 0.01 99.77 02:30:01 AM all 0.07 0.00 0.05 0.05 0.01 99.82 02:40:01 AM all 0.12 0.00 0.06 0.17 0.02 99.64 02:50:01 AM all 0.04 0.00 0.04 0.05 0.00 99.87
iowaitが出ていますが、これも全体なので今回のモチベーションには合わず。。。
iostat
# iostat Linux 4.4.41-36.55.amzn1.x86_64 (ip-172-30-2-131) 02/21/2017 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.30 0.00 0.15 0.36 0.16 99.03 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn xvda 3.20 56.87 148.35 208993 545216
これもだめ。。。
lsof
# lsof COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 202,1 4096 2 / init 1 root rtd DIR 202,1 4096 2 / init 1 root txt REG 202,1 150360 4673 /sbin/init init 1 root mem REG 202,1 61928 2757 /lib64/libnss_files-2.17.so *****以下略*****
全プロセス対象なのでgrep必須です。なんですが、今回のモチベーションは原因の究明なので、そもそもなにでgrepかけるんだよって話。おおよその検討がついてから使うべきコマンドですね。
iotop
# iotop Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0] 5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]
topのIO版といったところでしょうか。IOの負荷が重い順に表示されています。
dstat
# dstat --top-io ----most-expensive---- i/o process init 108k 70k sshd: ec2-u 146B 216B sshd: ec2-u 78B 152B sshd: ec2-u 78B 152B sshd: ec2-u 78B 152B *****以下略*****
こんな感じのコマンドつけてやるとIO負荷が一番高いものを出してくれます。