O que significa se o iostat mostrar 100% de espera ocupada, mas a CPU estiver completamente inativa?

6

O que significa se o iostat mostrar 100% de espera ocupada, mas a CPU estiver completamente inativa? Meu aplicativo é executado por um tempo e, em seguida, entra nesse estado periodicamente por cerca de 10 a 20 segundos.

É o aplicativo de processamento de transações C ++ no Solaris 10.

IO stat output:
                  extended device statistics                       cpu
device      r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  us sy wt id
c0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0   0  0  0 100
sd1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd2         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd3         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd4         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
c1          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd0         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
c6          0.0    0.0    0.0    0.0  0.0  1.0    0.0   0 100 
sd19        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd19.fp2    0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd19.fp4    0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd20        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd21        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd22        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd23        0.0    0.0    0.0    0.0  0.0  1.0    0.0   0 100 
sd24        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd25        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd26        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd27        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
nfs1        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 

saída vmstat:

kthr      memory            page            disk          faults      cpu 
r b w   swap  free  re  mf pi po fr de sr s0 s1 s2 s3   in   sy   cs us sy id 
0 0 0 10842364 33093436 30 188 0 0 0 0 65 -0  2  3 -0 1327  843  709  0  1 99 
0 0 0 3406728 28181464 71 3601 0 0 0 0  0  0  0  0  0 1372 23009 1584 4  0 96 
0 0 0 2702996 28030080 0 740 0 0  0  0  0  0  0  0  0 1414 15002 2065 6  0 93 
0 0 0 2699448 28016628 0 3  0  0  0  0  0  0  0  0  0 1747 3012 2193  9  1 90 
0 0 0 2691728 28009844 0 1  0  0  0  0  0  0 10 10  0 2315 1300 2877  2  0 97 
0 1 0 2679788 27957836 0 5033 0 0 0  0  0  0  1  1  0 1895 1945 2658 10  0 90 
0 2 0 2654188 27907196 0 0  0  0  0  0  0  0  1  1  0 3566 3788 5495  2  0 98 
    
por sean riley 16.06.2009 / 03:08

3 respostas

9

Isso significa que a carga é devida a espera por E / S, não por contenção de CPU. Então, acessando um disco rígido, acessando um compartilhamento NFS, acessando o espaço de troca (e portanto (normalmente) um disco rígido local ... não tenho certeza se o acesso puro à rede contribui para isso, mas meu instinto diz não. porque ele usa a camada FS. "top" geralmente tem uma porcentagem de "espera" ou "iowait" que normalmente mostraria isso.

    
por 16.06.2009 / 03:13
1

O status do IO não deve ser 100%. Se você tem uma grande quantidade de IO em disco, ele pode ser alto, acima de 50%, mas exatamente 100% geralmente significa que algo está errado no seu subsistema de IO. Isso aconteceu comigo quando tive um disco rígido nos estágios iniciais de falha, quando o disco demora mais e mais para responder às solicitações, mas ainda responde.

Ou pode ser apenas um aplicativo muito mal escrito. Um script simples do DTrace deve dizer qual é.

    
por 16.06.2009 / 03:27
0

Uma coisa que pode levar o carregamento do IO a ser muito alto é a paginação. Seu aplicativo está consumindo toda a memória física e fazendo com que a máquina pagine com força?

vmstat 5

Se as colunas si e so mostrarem algo diferente de 0 , então sua máquina está paginando (possivelmente muito).

    
por 16.06.2009 / 06:34