Linux で I/Oサイズを調べる方法

JPOUG Advent Calendar 2013 の19日目です。
18日目は yoshikaw さんのOracle Databaseを扱う上で知っておきたい変数10選 - Keep It Simple, Stupidでした。

Linux で実際に発行された I/O のサイズを調べる方法を紹介します。

  • debugfs をマウントする
[root@yazekats-linux ~]# mount -t debugfs debugfs /sys/kernel/debug
  • blktrace で I/O をトレースして blkparse で解析する
[root@yazekats-linux ~]# blktrace -d /dev/sda -o -|blkparse -i - -o blkparse.log
^C
[root@yazekats-linux ~]# head -10 blkparse.log 
  8,0    3        1     0.000000000  3099  A   W 60535072 + 8 <- (8,2) 59509024
  8,0    3        2     0.000000889  3099  Q   W 60535072 + 8 [kworker/3:2]
  8,0    3        3     0.000003849  3099  G   W 60535072 + 8 [kworker/3:2]
  8,0    3        4     0.000006983  3099  I   W 60535072 + 8 [kworker/3:2]
  8,0    3        5     0.000009268  3099  D   W 60535072 + 8 [kworker/3:2]
  8,0    2        1     0.001078704     0  C   W 60535072 + 8 [0]
  8,0    2        2     3.648584179   120  A  WS 60535056 + 8 <- (8,2) 59509008
  8,0    2        3     3.648584950   120  Q  WS 60535056 + 8 [kworker/2:1]
  8,0    2        4     3.648586931   120  G  WS 60535056 + 8 [kworker/2:1]
  8,0    2        5     3.648589190   120  I  WS 60535056 + 8 [kworker/2:1]

"+" の後の数字がたぶん I/O サイズ(KB)。I/Oサイズは8KB。たぶん。詳しくは後で調べます(^-^;
諸事情により電車の中で30分ほどで書くことになり、簡単で恐縮です。。。


えっ、Oracle と関係ない?

[yazekats@yazekats-linux ~]$ cat /etc/issue
Oracle Linux Server release 6.4
Kernel \r on an \m

[yazekats@yazekats-linux ~]$ uname -r
2.6.39-400.17.1.el6uek.x86_64

Oracle Linux で検証したので許してくださいw


明日は amyu_san の「AndroidOracleの仲直り」です。楽しみですね。