sexta-feira, 11 de julho de 2008

Verificando problemas no hardware

load average: 0.00, 0.00, 0.00

Como você pode obter esta informação?

Para descobir qual o load da máquina, execute o comando uptime. Este irá lhe mostrar a hora corrente quanto tempo a máquina está ligada, quantos usuários estão logados e o load da máquina.

O que isso significa?

Este número é a média de processos bloqueante na fila de execução durante um certo tempo.

Períodos de tempo:

load average: 1min, 5min, 15min

O que é um processo bloqueante?

Um processo bloqueante é um processo que está esperando por alguma coisa para continuar. Normalmente o processo pode estar esperando por:

* CPU (processador)
* Disk I/O (entrada e saída de disco)
* Network I/O (entrada e saída de rede)

O que um load average muito alto significa?

Um load muito alto pode significar que sua máquina está sub-dimensionada para o trabalho que ela está fazendo (por exemplo um banco de dados), ou que algum dispositivo está com problemas e apresentando falhas (por exemplo um disco externo montado no seu sistema de arquivos). Eu pessoalmente tive problemas com discos que apresentaram erros de leitura.

É bom saber que um valor de load, por exemplo 12.0 pode ser tranquilo para um servidor bem robusto, e um load de 2.0 pode ser intragável para aquele notebook celeron que seu pai usa para jogar paciência. Esses valores vão variar muito de acordo com a arquitetura da máquina.

Como diagnosticar um load average muito alto?

Normalmente uma máquina com um load muito alto fica muito lenta e ás vezes nem responde. Mas como você pode saber o que está causando este comportamento?

Vamos começar com o mais simples, o sistema operacional está esperando por CPU?

Execute o top:
top

Veja os números acima, dentro do círculo vermelho. Basicamente estes são a representação da porcentagem do tempo total de CPU gasto processando alguma coisa.
Se estes números ficam constantemente por volta dos 99-100% então existe uma grande possibilidade de que o problema esteja relacionado ao seu processador, provavelmente ele não está dando conta do recado, considere um upgrade.

A próxima coisa a checar é se o processador (CPU) está esperando I/O (ou E/S - entrada e saída). Verifique os números dentro da área do círculo vermelho. Se este número estiver próximo (ou superior) a 80%, então você tem problemas. Isso significa que o seu processador (CPU) está esperando MUITO tempo por respostas dos dispositivos de E/S (I/O). Isso pode significar que você tem um disco com falhas, uma placa de rede com problemas ou uma aplicação está tentando acessar informações numa taxa muito alta para o seu hardware. Isso é comum em sistemas que fazem muito acesso a disco sobre hardwares de baixa qualidade ou não especificos para determinadas aplicações, como por exemplo utilizar uma máquina desktop como banco de dados, num cenário de uso intenso.

Para descobrir o que está causando este load muito alto, rode o comando (como root):

ps aux

Este irá mostrar todos os processos do seu sistema, e seus respectivos estados.

Verifique a coluna STAT. As flags que você procurar são:

* R - Running (rodando)
* S - Sleeping (dormindo)
* D - Esperando por algo

Procure por processos com a coluna STAT com valor D. A partir desta linha, você pode diagnosticar o problema.

Pouca memória.

Fica atento também as valores de swap utilizados (na saída do comando top, fica logo abaixo do mem que está abaixo do cpu), se o "used" estiver muito alto, pode ser que você necessite de um upgrade de memória. Caso a máquina tenha pouca memória, a memória virtual (partição de swap) vai ser bastante utilizada, o que pode elevar o load da máquina.

Outros diagnósticos.

Para mais diagnósticos você pode utilizar os seguintes programas:

* strace - ferramenta de debugging de chamadas de sistema
* iostat - para verificar a performace/desempenho de discos
* bwmon - para verificar a performance de dispositivos de rede

Baseado em: http://www.andymillar.co.uk/blog/index.php/2006/12/24/geekery/linux-load-average-explained/

Nenhum comentário: