iops確認するための1Liner
こんにちわ。
小ネタシリーズです。こんにちわ。
なんか、ふとIOPS(I/O / sec)みたくなることってありますか?
DBサーバなんかでピーク時に今どのくらいIOPSさばいてるのか、とか、SSDやらを使ったときにIOPS比どの程度性能でるのか?
なんてのはちょっと気になりますよね?ね?
iostat -xでもいいんですが、IOPSだけみたいなーってときもあるかと思います。
ということで、sysfsで見てみましょう。
sysfs
sysfsはデバイス情報の統計を見るためのインターフェースとなります。
/sys から始まるものがそれで、例えば、sdaデバイスのディスク統計情報は /sys/block/sda/stat になります。
$ cat /sys/block/sda/stat 31004518 150610 2963821867 430429576 2056983249 38852701 66601383404 432745311 0 1127520672 863503041
/sys/block/sda/statの各項目の意味
各項目の意味はこんな感じみたい。
Name units description 22 ---- ----- ----------- 23 read I/Os requests 読み込みの I/O 処理数 24 read merges requests I/Oキューも含めた読み込みの I/O 処理数 25 read sectors sectors 読まれたセクタの数 26 read ticks milliseconds 読み込みリクエストの待ち時間 27 write I/Os requests 書き込みの I/O 処理数 28 write merges requests I/Oキューも含めた書き込みの I/O 処理数 29 write sectors sectors 書かれたセクタの数 30 write ticks milliseconds 書き込みリクエストの待ち時間 31 in_flight requests デバイスドライバに対して発行されているが処理されていないリクエスト数 32 io_ticks milliseconds デバイスドライバにへのリクエストがキューに入っていたトータル時間 33 time_in_queue milliseconds 全リクエストのトータル待ち時間
ここから1秒ごとにリアルタイムな情報がみたいならread I/Os、 write I/Osをみればよさそう。
1liner
こんな感じでだしてみました。
$ while [ 1 ];do set -- `cat /sys/block/sda/stat | awk '{ print $1,$5}'`; echo `expr $1 - $R` `expr $2 - $W` ; R=$1 ; W=$2 ;sleep 1 ;done 3 251 0 38 1 36 0 36 0 39 0 40 1 34 1 38 0 58 1 75 0 45
うん、適当な1linerでもちゃんとでてるようです。
これでいつでもIOPSみれますね。IOPS充です。
でも
iostat でいいんですけどねw
何かの処理に組み込んだり、監視系で使ったりするときのための一例にしてもらえたら。
Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック
- 作者: 池田宗広,大岩尚宏,島本裕志,竹部晶雄,平松雅巳,高橋浩和
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/07/26
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 50回
- この商品を含むブログ (4件) を見る