この記事では、iostat、vmstat、および mpstat コマンドに関する合計 24 の例を提供します。
- iostat は、CPU、ディスク I/O、および NFS 統計をレポートします
- vmstat は、仮想メモリの統計を報告します
- mpstat はプロセッサの統計を報告します
この記事は、進行中の Linux パフォーマンス モニタリング シリーズの一部です。
iostat と vmstat は sar ユーティリティの一部であることに注意してください。 iostat と vmstat を機能させるには、sar (sysstat) の記事で説明されているように、sysstat パッケージをインストールする必要があります。
IOSTAT の例
1. iostat – 基本的な例
引数なしの iostat は、以下に示すように、システム上のすべてのパーティションに関する CPU 使用率と I/O 統計に関する情報を表示します。
$ iostat Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 194.72 1096.66 1598.70 2719068704 3963827344 sda1 178.20 773.45 1329.09 1917686794 3295354888 sda2 16.51 323.19 269.61 801326686 668472456 sdb 371.31 945.97 1073.33 2345452365 2661206408 sdb1 371.31 945.95 1073.33 2345396901 2661206408 sdc 408.03 207.05 972.42 513364213 2411023092 sdc1 408.03 207.03 972.42 513308749 2411023092
2. iostat – CPU 統計のみを表示
iostat オプション -c は、以下に示すように CPU 使用率の統計のみを表示します。
$ iostat -c Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76
3. iostat – ディスク I/O 統計のみを表示
iostat オプション -d は、以下に示すようにディスク I/O 統計のみを表示します。
$ iostat -d Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 194.71 1096.61 1598.63 2719068720 3963827704 sda1 178.20 773.41 1329.03 1917686810 3295355248 sda2 16.51 323.18 269.60 801326686 668472456 sdb 371.29 945.93 1073.28 2345452365 2661209192 sdb1 371.29 945.91 1073.28 2345396901 2661209192 sdc 408.01 207.04 972.38 513364213 2411024484 sdc1 408.01 207.02 972.38 513308749 2411024484
4. iostat – ネットワーク統計のみを表示
iostat オプション -n は、以下に示すように、デバイスと NFS の統計のみを表示します。
$ iostat -n Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %sys %iowait %idle 4.33 0.01 1.16 0.31 94.19 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 2.83 0.35 5.39 29817402 457360056 sda1 3.32 50.18 4.57 4259963994 387641400 sda2 0.20 0.76 0.82 64685128 69718576 sdb 6.59 15.53 42.98 1318931178 3649084113 sdb1 11.80 15.53 42.98 1318713382 3649012985 Device: rBlk_nor/s wBlk_nor/s rBlk_dir/s wBlk_dir/s rBlk_svr/s wBlk_svr/s 192.168.1.4:/home/data 90.67 0.00 0.00 0.00 5.33 0.00 192.168.1.4:/backup 8.74 0.00 0.00 0.00 8.74 0.00 192.168.1.8:/media 0.02 0.00 0.00 0.00 0.01 0.00
5. iostat – I/O データを MB/秒で表示
デフォルトでは、iostat はデバイス I/O 統計をブロック単位で表示します。 MB に変更するには、以下に示すように -m を使用します。
$ iostat -m Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn sda 194.70 0.54 0.78 1327670 1935463 sda1 178.19 0.38 0.65 936370 1609060 sda2 16.51 0.16 0.13 391272 326402 sdb 371.27 0.46 0.52 1145240 1299425 sdb1 371.27 0.46 0.52 1145213 1299425 sdc 407.99 0.10 0.47 250666 1177259 sdc1 407.99 0.10 0.47 250639 1177259
6. iostat – デバイスの I/O 統計のみを表示
デフォルトでは、iostat はシステムで使用可能なすべてのディスクの I/O データを表示します。特定のデバイス (たとえば、/dev/sda) の統計を表示するには、以下に示すようにオプション -p を使用します。
$ iostat -p sda Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 194.69 1096.51 1598.48 2719069928 3963829584 sda2 336.38 27.17 54.00 67365064 133905080 sda1 821.89 0.69 243.53 1720833 603892838
7. iostat – タイムスタンプ情報を表示
デフォルトでは、iostat は現在の日付のみを表示します。現在の時刻を表示するには、以下に示すようにオプション -t を使用します。
$ iostat -t Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 Time: 08:57:52 AM avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 194.69 1096.49 1598.45 2719070384 3963829704 sda1 178.18 773.32 1328.88 1917688474 3295357248 sda2 16.51 323.14 269.57 801326686 668472456 sdb 371.25 945.82 1073.16 2345452741 2661228872 sdb1 371.25 945.80 1073.16 2345397277 2661228872 sdc 407.97 207.02 972.27 513364233 2411030200 sdc1 407.97 207.00 972.27 513308769 2411030200
8. iostat – 拡張ステータスを表示
オプション -x を使用すると、以下に示すように拡張ディスク I/O 統計情報が表示されます。
$ iostat -x Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 27.86 63.53 61.77 132.91 1096.46 1598.40 13.84 0.21 1.06 2.28 44.45 sda1 0.69 33.22 48.54 129.63 773.30 1328.84 11.80 1.39 7.82 2.28 40.57 sda2 27.16 30.32 13.23 3.28 323.13 269.56 35.90 0.55 32.96 3.44 5.68 sdb 39.15 215.16 202.20 169.04 945.80 1073.13 5.44 1.05 2.78 1.64 60.91 sdb1 39.15 215.16 202.20 169.04 945.77 1073.13 5.44 1.05 2.78 1.64 60.91 sdc 8.90 3.63 356.56 51.40 207.01 972.24 2.89 1.04 2.56 1.55 63.30 sdc1 8.90 3.63 356.55 51.40 206.99 972.24 2.89 1.04 2.56 1.55 63.30
特定のパーティション (たとえば、/dev/sda1) の拡張情報を表示するには、次のようにします。
$ iostat -x sda1 Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda1 0.69 33.21 48.54 129.62 773.23 1328.76 11.80 1.39 7.82 2.28 40.56
9. iostat – x 秒ごとに実行 (y 回)
(Ctl-C を押すまで) 2 秒ごとに iostat を実行するには、次のようにします。
$ iostat 2 Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 avg-cpu: %user %nice %system %iowait %steal %idle 5.68 0.00 0.52 2.03 0.00 91.76 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 194.67 1096.39 1598.33 2719070584 3963891256 sda1 178.16 773.26 1328.79 1917688482 3295418672 sda2 16.51 323.11 269.54 801326878 668472584 sdb 371.22 945.74 1073.08 2345454041 2661251200 sdb1 371.22 945.72 1073.08 2345398577 2661251200 sdc 407.93 207.00 972.19 513366813 2411036564 sdc1 407.93 206.98 972.19 513311349 2411036564 ..
2 秒ごとに合計 3 回実行するには、次のようにします。
$ iostat 2 3
10. iostat – LVM 統計 (およびバージョン) を表示します
LVM 統計を表示するには、以下に示すようにオプション -N を使用します。
$ iostat -N
iostat のバージョンを表示するには、-V を使用します。 iostat は sysstat パッケージの一部であるため、実際には sysstat のバージョン情報が表示されます。
$ iostat -V sysstat version 7.0.2 (C) Sebastien Godard
VMSTAT の例
11. vmstat – 基本的な例
デフォルトでは、vmstat は以下に示すようにメモリ使用量 (スワップを含む) を表示します。
$ vmstat 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 305416 260688 29160 2356920 2 2 4 1 0 0 6 1 92 2 0
vmstat 出力には次のフィールドが含まれます:
- Procs – r:実行を待機しているプロセスの総数
- Procs – b:ビジー プロセスの総数
- メモリ – swpd:使用済み仮想メモリ
- メモリ – フリー:仮想メモリの空き容量
- Memory – buff:バッファとして使用されるメモリ
- メモリ – キャッシュ:キャッシュとして使用されるメモリ
- Swap – si:ディスクからスワップされたメモリ (毎秒)
- スワップ – つまり:ディスクにスワップされたメモリ (毎秒)
- IO – bi:ブロックイン。つまり、デバイスから受信したブロック (毎秒)
- IO – bo:ブロックアウト。つまり、デバイスに送信されるブロック (毎秒)
- システム – in:1 秒あたりの割り込み数
- システム – cs:コンテキスト スイッチ
- CPU – us、sy、id、wa、st:CPU ユーザー時間、システム時間、アイドル時間、待機時間
12. vmstat – アクティブおよび非アクティブなメモリを表示
デフォルトでは、vmstat はこの情報を表示しません。以下に示すように、オプション -a を使用して、アクティブおよび非アクティブなメモリ情報を表示します。
$ vmstat -a procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free inact active si so bi bo in cs us sy id wa st 0 0 305416 253820 1052680 2688928 2 2 4 1 0 0 6 1 92 2 0
13. vmstat – 前回の起動以降のフォーク数を表示
これにより、最後のブート以降にシステムによって行われたすべての fork システム コールが表示されます。これにより、すべての fork、vfork、および clone システム コール数が表示されます。
$ vmstat -f 81651975 forks
14. vmstat – x 秒ごとに実行 (y 回)
2 秒ごとに実行するには、次のようにします。これを停止するには、Ctrl-C を押す必要があります。
$ 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 1 0 0 537144 182736 6789320 0 0 0 0 1 1 0 0 100 0 0 0 0 0 537004 182736 6789320 0 0 0 0 50 32 0 0 100 0 0 ..
2 秒ごとに 10 回実行するには、次のようにします。この場合、Ctrl-C を押す必要はありません。 10回実行後、自動的に停止します。
$ vmstat 2 10 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 537144 182736 6789320 0 0 0 0 1 1 0 0 100 0 0 0 0 0 537004 182736 6789320 0 0 0 0 50 32 0 0 100 0 0 ..
15. vmstat – タイムスタンプを表示
vmstat を使用してメモリ使用量を繰り返し監視する場合、すべての項目とともにタイムスタンプを確認すると便利です。以下に示すように、オプション -t を使用してタイムスタンプを表示します。
$ vmstat -t 1 100 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp--- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3608728 148368 3898200 0 0 0 0 1 1 0 0 100 0 0 2011-07-09 21:16:28 PDT 0 0 0 3608728 148368 3898200 0 0 0 0 60 15 0 0 100 0 0 2011-07-09 21:16:29 PDT 0 0 0 3608712 148368 3898200 0 0 0 0 32 28 0 0 100 0 0 2011-07-09 21:16:30 PDT
私の場合、タイムスタンプ オプションは次のバージョンで機能しました。
$ vmstat -V procps version 3.2.8
注: 古いバージョンの vmstat を使用している場合、オプション -t を使用できない場合があります。その場合は、以前に提案した方法を使用して、vmstat 出力にタイムスタンプを表示してください。
16. vmstat – スラブ情報を表示
以下に示すように、オプション -m を使用して、スラブ情報を表示します。
$ vmstat -m Cache Num Total Size Pages fib6_nodes 5 113 32 113 ip6_dst_cache 4 15 256 15 ndisc_cache 1 15 256 15 RAWv6 7 10 768 5 UDPv6 0 0 640 6 tw_sock_TCPv6 0 0 128 30 ...
17. vmstat – 統計を表形式で表示
値をレコード形式で表示する代わりに、以下に示すようにオプション -s を使用して vmstat の出力を表形式で表示できます。
$ vmstat -s 4149928 total memory 3864824 used memory 2606664 active memory 1098180 inactive memory 285104 free memory 19264 buffer memory 2326692 swap cache 4192956 total swap 274872 used swap 3918084 free swap 1032454000 non-nice user cpu ticks 14568 nice user cpu ticks 89482270 system cpu ticks 16674327143 idle cpu ticks 368965706 IO-wait cpu ticks 1180468 IRQ cpu ticks ..
18. vmstat – ディスク統計の表示
以下に示すように、オプション -d を使用してディスク統計を表示します。これにより、ディスクの読み取り、書き込み、および I/O 統計が表示されます。
$ vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sda 153189971 69093708 2719150864 737822879 329617713 157559204 3965687592 4068577985 0 1102243 sdb 501426305 97099356 2345472425 731613156 419220973 533565961 2661869460 1825174087 0 1510434 sdc 884213459 22078974 513390701 452540172 127474901 8993357 2411187300 2133226954 0 1569758
19. vmstat – ディスプレイの幅を広げます
幅を増やさないデフォルトの出力を以下に示します。
$ vmstat 1 3 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 3608688 148368 3898204 0 0 0 0 1 1 0 0 100 0 0 0 0 0 3608804 148368 3898204 0 0 0 0 72 30 0 0 100 0 0 0 0 0 3608804 148368 3898204 0 0 0 0 60 27 0 0 100 0 0
以下に示すように、オプション -w を使用して、出力列の幅を広げます。これにより読みやすくなります。
$ vmstat -w 1 3 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 3608712 148368 3898204 0 0 0 0 1 1 0 0 100 0 0 0 0 0 3608712 148368 3898204 0 0 0 0 93 23 0 0 100 0 0 0 0 0 3608696 148368 3898204 0 0 0 0 35 34 0 0 100 0 0
20. vmstat – パーティションの統計を表示
特定のディスク パーティションのディスク I/O 統計を表示するには、以下に示すようにオプション -p を使用します。
$ vmstat -p sdb1 sdb1 reads read sectors writes requested writes 501423248 2345417917 419221612 2661885948
21. vmstat – MB 単位で表示
デフォルトでは、vmstat はメモリ情報を kb で表示します。 MB で表示するには、以下に示すようにオプション「-S m」を使用します。
$ vmstat -S m 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 281 288 19 2386 0 0 4 1 0 0 6 1 92 2 0
MPSTAT の例
22. mpstat – 基本情報を表示
デフォルトでは、mpstat は以下に示すように CPU 統計を表示します。
$ mpstat Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 10:25:32 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:25:32 PM all 5.68 0.00 0.49 2.03 0.01 0.02 0.00 91.77 146.55
23. mpstat – すべての情報を表示
オプション -A は、以下に示すように、mpstat コマンドで表示できるすべての情報を表示します。これは実際には「mpstat -I ALL -u -P ALL」コマンドと同等です。
$ mpstat -A Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (4 CPU) 10:26:34 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:26:34 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.99 10:26:34 PM 0 0.01 0.00 0.01 0.01 0.00 0.00 0.00 0.00 99.98 10:26:34 PM 1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 99.98 10:26:34 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:26:34 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:26:34 PM CPU intr/s 10:26:34 PM all 36.51 10:26:34 PM 0 0.00 10:26:34 PM 1 0.00 10:26:34 PM 2 0.04 10:26:34 PM 3 0.00 10:26:34 PM CPU 0/s 1/s 8/s 9/s 12/s 14/s 15/s 16/s 19/s 20/s 21/s 33/s NMI/s LOC/s SPU/s PMI/s PND/s RES/s CAL/s TLB/s TRM/s THR/s MCE/s MCP/s ERR/s MIS/s 10:26:34 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 7.47 0.00 0.00 0.00 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.90 0.00 0.00 0.00 0.00 0.03 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.04 0.00 0.00 0.00 0.00 0.00 3.32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 10:26:34 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4.17 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00
24. mpstat – 個々の CPU (または) コアの CPU 統計を表示します
オプション -P ALL は、以下に示すように、すべての個々の CPU (またはコア) とその統計を表示します。
$ mpstat -P ALL Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (4 CPU) 10:28:04 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:28:04 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.99 10:28:04 PM 0 0.01 0.00 0.01 0.01 0.00 0.00 0.00 0.00 99.98 10:28:04 PM 1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 99.98 10:28:04 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 10:28:04 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
特定の CPU (またはコア) の統計情報を表示するには、以下に示すようにオプション -P を使用します。
$ mpstat -P 0 Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (8 CPU) 10:28:53 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:28:53 PM 0 0.01 0.00 0.01 0.01 0.00 0.00 0.00 0.00 99.98 $ mpstat -P 1 Linux 2.6.32-100.28.5.el6.x86_64 (dev-db) 07/09/2011 _x86_64_ (8 CPU) 10:28:55 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 10:28:55 PM 1 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 99.98
最後に、前述したように、mpstat は sysstat パッケージの一部です。 mpstat -V を実行すると、以下に示すように sysstat パッケージのバージョン番号が実際に表示されます。
$ mpstat -V sysstat version 9.0.4 (C) Sebastien Godard (sysstat orange.fr)
Linux パフォーマンスの監視とチューニング シリーズの以前の記事:
- Linux パフォーマンスの監視とチューニングの概要
- 15 の実用的な Linux トップ コマンドの例
- プロセス監視のための 7 つの実用的な PS コマンドの例
- UNIX / Linux のパフォーマンス監視に役立つ Sar (Sysstat) の 10 の例
- Linux でのディスク I/O パフォーマンス測定のための iozone の 10 の例