ディスクアクセスによるIOレイテンシを測定しようとしています。このために私はdelayacct_blkio_ticks
の応答を使用します/proc/[pid]/stat
。私のアプリケーションでどれだけのIOが実行されても、私が得るのは定数0だけです。
プロクの人々は言った:
42) delayacct_blkio_ticks %llu (since Linux 2.6.18)
Aggregated block I/O delays, measured in clock ticks (centiseconds).
カーネルバージョン3.0.101を使用しています。
ただし、...を使用すると、ゼロ以外のtop
定数 "%wa"値が得られます。
top - 00:49:36 up 186 days, 15:06, 3 users, load average: 4.54, 5.80, 5.53
Tasks: 270 total, 1 running, 269 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 97.0%id, 3.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 387581M total, 261149M used, 126432M free, 295M buffers
Swap: 12266M total, 193M used, 12073M free, 82346M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4290 build 20 0 512g 169g 25m S 8 44.9 241:27.65 java
7614 build 20 0 9056 1268 828 R 0 0.0 0:01.28 top
1 root 20 0 10540 560 536 S 0 0.0 0:46.33 init
間違った測定値を読んでいますか?top
レポートが正しい理由は何ですか?アプリケーションでタスクを実行するときにのみWA値が0を超えるため、他のプロセスで発生したものではないと確信しています。
実際にJavaプロセスの状態はD
。delayacct_blkio_ticks
この状態は単に報告時間ですか?