256bitの殺人メニュー

インフラエンジニアだったソリューションアーキテクトなくわののブログ。こちらのBlogは個人の意見となっていて会社とは全く関係ありません。お約束です。[twitter:@kuwa_tw]めんどくさがりが重い腰を上げて何かをアウトプットすることにどれほどの意味があるのかを試してみたいブログでもある。

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 ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック

Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック