O disco ocupado está próximo de 100% e o iowait é de 0,0% no SunOS, como é possível?

4

Durante o monitoramento da máquina SunOS5.10 notei um comportamento estranho:

  1. O disco ocupado está próximo de 100%
  2. O tempo de espera do disco é de 0,0%

O propósito principal desta máquina é executar o servidor de aplicativos no jvm. Essa situação ocorre quando o servidor está sob carga pesada e as conexões de clientes são rejeitadas aleatoriamente. Se o problema for relacionado a E / S, provavelmente o tempo de espera de E / S deve ser maior que 0,0%. Não vejo nenhum outro gargalo na máquina: cpu, ram são abundantes e as interfaces de rede são utilizadas abaixo de 5%. No momento do sistema de saturação de disco escreve em torno de 0,5 MB de dados por segundo e lê quase nenhum.

Os dados são despejados com sarmon e iostat -x é usado para monitoramento ao vivo. Amostra iostat output:

extended  device  statistics
device  r/s    w/s    kr/s  kw/s  wait  actv  svc_t  %w  %b
sd0,a   0.0    0.4    0.0    6.2   0.0   0.0   11.5   0   0
sd0,b   0.0    0.0    0.0    0.0   0.0   0.0    0.0   0   0
sd0,c   0.0    0.0    0.0    0.0   0.0   0.0    0.0   0   0
sd0,f   0.0    0.2    0.0    1.6   0.0   0.0   13.9   0   0
sd0,g   0.0    0.0    0.0    0.0   0.0   0.0    0.0   0   0
sd0,h   0.0  111.6    0.0  519.9   0.0   1.0    8.9   0  94

As estatísticas são tomadas no nível do sistema operacional, portanto, as medições devem estar corretas. É possível, no nível do aplicativo, detectar com segurança a saturação do disco e reduzir a carga de acordo?

Quais são os cenários possíveis quando essa situação ocorre?

Eu também usei dd para testar a velocidade de gravação do disco com os seguintes resultados:

time sh -c "dd if=/dev/zero of=/tmp/output bs=512 count=2048k"
2097152+0 records in
2097152+0 records out
real 0m3.250s
user 0m0.627s
sys  0m2.622s
    
por m.kowalski 25.11.2014 / 11:45

2 respostas

3

Parece haver um único segmento escrevendo um pouco mais de 4KB cerca de 111 vezes por segundo. Isso é suficiente para manter seu disco 100% ocupado (111 iops * 9 ms tempo de serviço = 1 segundo de serviço por segundo = 100%). Como não há outros processos gravados nesse disco (na verdade, essa partição), a fila de espera está vazia, todas as solicitações são processadas imediatamente.

Não há nada especial ou estranho em sua carga de trabalho, o disco é o gargalo.

Para obter um desempenho melhor, você pode escolher um disco mais rápido ou um SSD ou usar uma matriz de disco que distribua gravações ou ajustar o aplicativo para usar blocos maiores ou aumentar o tamanho do cache.

Seu teste dd é inútil, você não está medindo o desempenho do disco, mas essencialmente o do cache, especialmente no Solaris, onde /tmp provavelmente terá backup da memória virtual, tmpfs é o padrão desse sistema de arquivos .

    
por 25.11.2014 / 21:58
1

link , um programa está acionando solicitações de E / S, mas não as espera. No entanto, ainda pode aceitar e processar as respostas de I / O, uma vez que elas vêm.

    
por 25.11.2014 / 22:55