IOPSを取得する方法（Linux、iostatコマンド）

Linuxの`iostat`コマンドでメモリ使用率を取得する方法を紹介します。

# 環境
+ OS：CentOS Linux release 8.1.1911

```:実行結果
[root@centos8 ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
[root@centos8 ~]#
```

# 1. iostatコマンド

`iostat`コマンドを実行すると、「CPU使用率の情報」と「I/Oデバイスの使用状況」が表示されます。

```:実行結果
[root@centos8 ~]# iostat
Linux 4.18.0-147.8.1.el8_1.x86_64 (centos8)     2021年12月05日  _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.57    0.08    0.92    1.28    0.00   97.15

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               2.47        92.18        22.54     595320     145558
scd0              0.00         0.16         0.00       1040          0
dm-0              2.64        90.16        23.19     582271     149739
dm-1              0.02         0.34         0.00       2220          0

[root@centos8 ~]#
```
<br/>

`-d`オプションを付けて`iostat -d`を実行すると、「I/Oデバイスの使用状況」のみが表示されます。


```:実行結果
[root@centos8 ~]# iostat -d
Linux 4.18.0-147.8.1.el8_1.x86_64 (centos8)     2021年12月05日  _x86_64_        (1 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.85        67.83        16.79     595336     147328
scd0              0.00         0.12         0.00       1040          0
dm-0              1.98        66.34        17.28     582287     151651
dm-1              0.01         0.25         0.00       2220          0

[root@centos8 ~]#
```
<br/>

`-d`オプションと'-x'オプションを付けて`iostat -dx`を実行すると、「拡張ディスク統計情報」が表示されます。

```:実行結果
[root@centos8 ~]# iostat -dx
Linux 4.18.0-147.8.1.el8_1.x86_64 (centos8)     2021年12月05日  _x86_64_        (1 CPU)

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              1.39    0.46     67.81     16.78     0.00     0.17   0.33  27.25   36.65   28.51   0.06    48.68    36.59   0.78   0.14
scd0             0.00    0.00      0.12      0.00     0.00     0.00   0.00   0.00   52.67    0.00   0.00    38.52     0.00   0.96   0.00
dm-0             1.35    0.63     66.33     17.27     0.00     0.00   0.00   0.00   37.08   26.32   0.07    49.01    27.45   0.71   0.14
dm-1             0.01    0.00      0.25      0.00     0.00     0.00   0.00   0.00   31.29    0.00   0.00    22.65     0.00   0.70   0.00

[root@centos8 ~]#
```

出力項目の内容については「[LinuxのiostatコマンドでサーバーのI/Oデバイスの使用状況を確認する](https://qiita.com/yasushi-jp/items/7ffd12731b63a42ab27e "LinuxのiostatコマンドでサーバーのI/Oデバイスの使用状況を確認する")」を参照してください。

# 2. IOPSの値

ここでIOPS（Input/Output Per Second）（１秒間のI/O回数）は、

+ `iostat -d`コマンドの場合、「tps」の値
+ `iostat -dx`コマンドの場合、「r/s」+「w/s」の値

となります。

# 3. iostatコマンドの実行結果をファイルに出力

1秒間隔で`iostat -dx`コマンドの実行結果を表示させる場合、`iostat -dx 1`を実行します。

```:実行結果
[root@centos8 ~]# iostat -dx 1
Linux 4.18.0-147.8.1.el8_1.x86_64 (centos8)     2021年12月05日  _x86_64_        (1 CPU)

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              1.30    0.43     63.30     15.70     0.00     0.16   0.33  27.04   36.65   28.23   0.06    48.68    36.14   0.78   0.13
scd0             0.00    0.00      0.11      0.00     0.00     0.00   0.00   0.00   52.67    0.00   0.00    38.52     0.00   0.96   0.00
dm-0             1.26    0.59     61.91     16.16     0.00     0.00   0.00   0.00   37.08   26.10   0.06    49.01    27.19   0.71   0.13
dm-1             0.01    0.00      0.24      0.00     0.00     0.00   0.00   0.00   31.29    0.00   0.00    22.65     0.00   0.70   0.00

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              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   0.00   0.00
scd0             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   0.00   0.00
dm-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   0.00   0.00
dm-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   0.00   0.00

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              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   0.00   0.00
scd0             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   0.00   0.00
dm-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   0.00   0.00
dm-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   0.00   0.00

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              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   0.00   0.00
scd0             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   0.00   0.00
dm-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   0.00   0.00
dm-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   0.00   0.00
```

<br/>

`iostat -dx`コマンドの実行結果に「時刻」を付けて表示させる場合、以下のコマンドを実行します。

`iostat -dx 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 }'`

```:実行結果
[root@centos8 ~]# iostat -dx 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 }'
2021/12/05 18:16:44 Linux 4.18.0-147.8.1.el8_1.x86_64 (centos8)         2021年12月05日  _x86_64_        (1 CPU)
2021/12/05 18:16:44
2021/12/05 18:16:44 Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2021/12/05 18:16:44 sda              1.28    0.43     62.48     15.50     0.00     0.16   0.33  27.01   36.65   28.20   0.06    48.68    36.08   0.78   0.13
2021/12/05 18:16:44 scd0             0.00    0.00      0.11      0.00     0.00     0.00   0.00   0.00   52.67    0.00   0.00    38.52     0.00   0.96   0.00
2021/12/05 18:16:44 dm-0             1.25    0.59     61.11     15.95     0.00     0.00   0.00   0.00   37.08   26.08   0.06    49.01    27.16   0.71   0.13
2021/12/05 18:16:44 dm-1             0.01    0.00      0.23      0.00     0.00     0.00   0.00   0.00   31.29    0.00   0.00    22.65     0.00   0.70   0.00
2021/12/05 18:16:44
2021/12/05 18:16:45 Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2021/12/05 18:16:45 sda              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   0.00   0.00
2021/12/05 18:16:45 scd0             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   0.00   0.00
2021/12/05 18:16:45 dm-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   0.00   0.00
2021/12/05 18:16:45 dm-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   0.00   0.00
2021/12/05 18:16:45
2021/12/05 18:16:46 Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2021/12/05 18:16:46 sda              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   0.00   0.00
2021/12/05 18:16:46 scd0             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   0.00   0.00
2021/12/05 18:16:46 dm-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   0.00   0.00
2021/12/05 18:16:46 dm-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   0.00   0.00
2021/12/05 18:16:46
2021/12/05 18:16:47 Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2021/12/05 18:16:47 sda              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   0.00   0.00
2021/12/05 18:16:47 scd0             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   0.00   0.00
2021/12/05 18:16:47 dm-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   0.00   0.00
2021/12/05 18:16:47 dm-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   0.00   0.00
2021/12/05 18:16:47
```

<br/>

ファイル（ここでは「iostat.log」）に出力する場合、以下のコマンドを実行します。
パイプをリフレッシュするために` system(":")`を使用します。

`iostat -dx 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } { system(":") }' > iostat.log`

```:実行結果
[root@centos8 ~]# iostat -dx 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } { system(":") }' > iostat.log
```

```:iostat.log
[root@centos8 ~]# cat iostat.log
2021/12/05 18:18:50 Linux 4.18.0-147.8.1.el8_1.x86_64 (centos8)         2021年12月05日  _x86_64_        (1 CPU)
2021/12/05 18:18:50
2021/12/05 18:18:50 Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2021/12/05 18:18:50 sda              1.27    0.42     61.66     15.29     0.00     0.16   0.33  26.99   36.65   28.19   0.06    48.68    36.06   0.78   0.13
2021/12/05 18:18:50 scd0             0.00    0.00      0.11      0.00     0.00     0.00   0.00   0.00   52.67    0.00   0.00    38.52     0.00   0.96   0.00
2021/12/05 18:18:50 dm-0             1.23    0.58     60.31     15.74     0.00     0.00   0.00   0.00   37.08   26.08   0.06    49.01    27.15   0.71   0.13
2021/12/05 18:18:50 dm-1             0.01    0.00      0.23      0.00     0.00     0.00   0.00   0.00   31.29    0.00   0.00    22.65     0.00   0.70   0.00
2021/12/05 18:18:50
2021/12/05 18:18:51 Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2021/12/05 18:18:51 sda              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   0.00   0.00
2021/12/05 18:18:51 scd0             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   0.00   0.00
2021/12/05 18:18:51 dm-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   0.00   0.00
2021/12/05 18:18:51 dm-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   0.00   0.00
2021/12/05 18:18:52
2021/12/05 18:18:52 Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
2021/12/05 18:18:52 sda              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   0.00   0.00
2021/12/05 18:18:52 scd0             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   0.00   0.00
2021/12/05 18:18:52 dm-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   0.00   0.00
2021/12/05 18:18:52 dm-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   0.00   0.00
2021/12/05 18:18:53
[root@centos8 ~]#
```

<br/>

長時間、実行結果を取得する場合、バックグラウンドで動かして、ログアウトしても終了しないようにしたいこともあります。
その場合、`nohup`を使用して以下のコマンドを実行します。

`nohup bash -c "iostat -dx 1 | awk '{print strftime(\"%y/%m/%d %H:%M:%S\"), \$0} { system(\":\") }'" < /dev/null > iostat.log 2>&1 &`

```:実行結果
[root@centos8 ~]# nohup bash -c "iostat -dx 1 | awk '{print strftime(\"%y/%m/%d %H:%M:%S\"), \$0} { system(\":\") }'" < /dev/null > iostat.log 2>&1 &
[1] 4054
[root@centos8 ~]#
```

出力ファイル名に時刻を持たせたい場合、以下のコマンドを実行します。

`nohup bash -c "iostat -dx 1 | awk '{print strftime(\"%y/%m/%d %H:%M:%S\"), \$0} { system(\":\") }'" < /dev/null > iostat_$(date "+%Y%m%d_%H%M%S").log 2>&1 &`

```:実行結果
[root@centos8 ~]# nohup bash -c "iostat -dx 1 | awk '{print strftime(\"%y/%m/%d %H:%M:%S\"), \$0} { system(\":\") }'" < /dev/null > iostat_$(date "+%Y%m%d_%H%M%S").log 2>&1 &
[1] 4124
[root@centos8 ~]# ls iostat_*
iostat_20211205_182259.log
[root@centos8 ~]#
```

---
以上