Atrasos de E / S do bloco de medição usando proc FS

0

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?

    
por jack malkovick 16.07.2018 / 17:59

0 respostas