Estou tentando medir o atraso de IO devido ao acesso ao disco. Para isso, estou usando delayacct_blkio_ticks
de /proc/[pid]/stat
response. O que estou recebendo é uma constante 0, não importa quanto IO seja feito no meu aplicativo.
O homem proc diz:
42) delayacct_blkio_ticks %llu (since Linux 2.6.18)
Aggregated block I/O delays, measured in clock ticks (centiseconds).
Estou usando a versão do kernel 3.0.101.
Mas ... se eu usar top
, recebo um valor "% wa" constante diferente de zero.
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
Estou lendo os dados errados para essa medida? Por que top
informa isso corretamente?
O valor de WA está acima de 0 somente quando realizo determinadas operações no meu aplicativo, portanto, tenho certeza de que ele não é de outro processo.
É verdade, não vejo o estado do processo java como sendo D
. A delayacct_blkio_ticks
só informa o tempo nesse estado?
Tags performance proc io