Linuxでコマンドラインを使用して、またはプログラムでIOPSを個別に読み書きするにはどうすればよいですか? sysstat
パッケージをインストールしました。
sysstat
パッケージコマンドを使用してこれらを個別に計算する方法を教えてください。
または、ファイルシステムを使用してそれらを計算することは可能ですか?
ex:/proc
または/sys
または/dev
iostat
はsysstat
パッケージの一部であり、必要に応じて全体のiopsを表示したり、読み取り/書き込みで分離して表示したりできます。
デバイス情報ページのみを表示するには-dフラグを付けてiostat
を実行し、詳細情報(個別の読み取り/書き込み統計)を表示するには-xを実行します。コマンドラインで後で追加するだけで、情報が必要なデバイスを指定できます。
iostat -dx
を実行して概要を確認し、出力の感触をつかんでください。 iostat -dx 1
を使用して、継続的に更新される出力を表示することもできます。これは、トラブルシューティングやライブモニタリングに役立ちます。
awk
を使用すると、フィールド4はreads/secondを示し、フィールド5はを示します。書き込み/秒。
読み取り/秒のみ:
iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4; }'
書き込み/秒のみ:
iostat -dx <your disk name> | grep <your disk name> | awk '{ print $5; }'
スラッシュで区切られた読み取り/秒と書き込み/秒:
iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4"/"$5; }'
全体的なIOPS(ほとんどの人が話していること):
iostat -d <your disk name> | grep <your disk name> | awk '{ print $2; }'
たとえば、メインドライブ/ dev/sdaで最後のコマンドを実行すると、次のようになります。
dan@daneel ~ $ iostat -dx sda | grep sda | awk '{ print $4"/"$5; }' 15.59/2.70
これを実行するには、しないでくださいrootである必要があることに注意してください。これは、非特権ユーザーにとって便利です。
TL; DR:sda
だけに関心がある場合は、次のコマンドでsda
の全体的なIOPSを取得できます。
iostat -d sda | grep sda | awk '{ print $2; }'
allデバイス全体のIOPSを合計する場合は、awkを再度使用できます。
iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}'
これにより、次のような出力が生成されます。
dan@daneel ~ $ iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}' 18.88