Os comandos aqui utilizados existem em todas as distribuições e em outras plataformas Unix como Solaris, FreeBSD e HPUX.
Estou utilizando o Debian Sarge para mostrar as saidas dos comandos e, portanto, a saída pode variar um pouco em outras distribuições, todavia o conceito é mesmo.
Primeiramente verifique se você possui os pacotes abaixos:
dstat - versatile resource statistics tool
ifstat - InterFace STATistics Monitoring
tcpstat - network interface statistics reporting tool
sysstat - sar, iostat and mpstat - system performance tools for Linux
systune - kernel tuning through the /proc file system
procinfo - Displays system information from /proc
O Desempenho de um Sistema é determinado pela eficiência que os recursos do sistema são alocados e compartilhados, e podemos citar como os mais importantes recursos que tem efeito sobre o desempenho:
* Tempo de CPU
* Memória
* Largura de banda de E/S do disco rígido
* Largura de banda de E/S de rede
Todos os processos consomem uma parte dos recursos do sistema. Se ainda restarem recursos depois que os processos ativos levarem o que queriam, o desempenho do sistema é quase tão bom quanto podera ser.
Vamos analisar alguma ferramentas:
1) vmstat –> Imprime um variedade de informações referentes ao uso da CPU, Memória, Processos, Paginação e IO.
root@Zen-La:~# vmstat -S M 1 5
procs ———–memory———- —swap– —–io—- –system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 40 47 656 0 0 223 789 478 903 42 7 32 18
0 0 0 40 47 656 0 0 0 0 363 483 4 0 96 0
0 0 0 40 47 656 0 0 0 36 364 465 4 0 96 0
0 0 0 40 47 656 0 0 0 0 362 454 2 0 98 0
0 0 0 40 47 656 0 0 0 0 356 456 2 0 98 0
Com o comando acima, solicitei 5 medidas no intervalo de 1s e uma saida em megabytes.
A coluna procs, é dividida em r e b. Para efeitos de análise o número informado em r nunca pode ser maior do que o dobro do número de processadores na máquina, isto é, se tens 2 processadores o numero não pode ser maior do que 4. A coluna b mostra o numero de processos na fila, esperando para serem executados e este numero não pode ser maior do que 0 (zero).
A coluna cpu, nos trás 3 dados interessantes: us, sy e id, respectivamente, tempo de usuário, sistema e inatividade. Uma regra geral é de que o sistema deve gastar aproximandamente 50% do seu tempo ocioso no espaço do usuário e 50% no espaço do sistema, o percentual de inatividade nunca pode ser igual a 0, pois caso contrário terá problemas de performance.
Outro parâmetro que deve ser analisado é a coluna swap onde os parâmetros si e so não devem ser maiores que 0 (zero) caso contrário sua maquina está fazendo swap, isto é, acabou a memória disponivel e ela está paginando em
disco. O comando abaixo provê informações precisas sobre o uso da memória.
root@Zen-La:~# vmstat -s
O ideal é rodar o vmstat por um periodo de tempo superior a 1h em um dia de pico e analisar o resultado depois para verificar como anda a performance do seu sistema.
2) sar –> Informa o percentual gasto na execução de códigos no espaço do usuario (%user), espaço do sistema (%system), processos esperando (%iowait) e tempo de inatividade (%idle).
root@Zen-La:~# sar -u 5 5
Linux 2.6.15-23-powerpc (Zen-La) 25-06-2006
16:08:22 CPU %user %nice %system %iowait %idle
16:08:27 all 0,00 0,00 0,60 0,00 99,40
16:08:32 all 1,00 0,00 0,20 0,00 98,80
16:08:37 all 0,80 0,00 1,80 0,00 97,41
16:08:42 all 0,40 0,00 0,20 0,00 99,40
16:08:47 all 20,80 0,00 0,80 0,00 78,40
Média: all 4,60 0,00 0,72 0,00 94,68
Sugiro uma olhada no arquivo man do sar para mais detalhes, pois a ferramenta é muito poderosa.
Tente: sar -r –> Informações sobre o uso da memoria e paginação.
3) uptime, top –> Uma estatistica muito útil é chamda load average do servidor. Com o uso dos comandos uptime e top podemos ter uma amostragem do chamado load do sistema. Trata-se de uma média de carga, o numero médio de processos executáveis, em geral mostra a média de processos que esperam a E/S de disco e rede.
root@Zen-La:~# uptime
16:17:05 up 1:05, 3 users, load average: 0.26, 0.73, 0.73
Três resultados são mostrados para tempos difrentes de amostragem: 5m, 10m e 15m. Eu já consegui trabalhar razoavelmente bem com servidores Xeon e Opteron 64bits com medias de até 8.0, entretanto em meu laptop se a media chegar a 2.0 ele se torna inutilizável, portanto varia muito da arquitetura do processador e de como ele trata os processos.
Se seu servidor está fazendo Swap (swapando) provavelmente o load irá subir devido ao processo kswapd estar tratando da paginação em disco (E/S), portanto ter pouca memória é pessimo para performance do sistema.
4) free –> O comando free possibilita verificar o uso da memória.
root@Zen-La:~# free -tm
total used free shared buffers cached
Mem: 1009 970 38 0 48 656
-/+ buffers/cache: 265 743
Swap: 476 0 476
Total: 1486 970 515
5) mpstat –> Provê informações (estatísticas) sobre um processador específico ou todos da maquina em tempo real.
root@Zen-La:~# mpstat -P ALL 1
Linux 2.6.15-23-powerpc (Zen-La) 25-06-2006
16:35:30 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16:35:31 all 4,00 0,00 0,00 0,00 0,00 0,00 0,00 96,00 340,00
16:35:31 0 4,00 0,00 0,00 0,00 0,00 0,00 0,00 96,00 340,00
5) iostat –> Este comando nos permite monitorar o processamento de disco e se torna muito útil para verificarmos se o i/o em disco está sendo um gargalo na performance do sistema e a partir daí determinarmos se devemos trocar um HD IDE por um Sata ou Scsi.
Assim como o vmstat ele aceita argumentos que nos permitem dizer o intervalo das medições e quantas deve ser feitas:
root@Zen-La:~# iostat -k 1 1
Linux 2.6.15-23-powerpc (Zen-La) 25-06-2006
avg-cpu: %user %nice %system %iowait %steal %idle
21,83 0,17 3,42 6,61 0,00 67,96
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
hda 21,92 83,20 294,90 531563 188
Se deseja ver somente as informações dos discos digite:
root@Zen-La:~# iostat -d 1 1
Se deja somente as informações do avg-cpu digite:
root@Zen-La:~# iostat -c 1 1
Para informações completas digite:
root@Zen-La:~# iostat ALL -m
DICA:> Procure sempre ter uma partição de swap para cada disco, pois caso aja necessidade de uso da Swap a degradação do Sistema será menor.
6) procinfo –> Todo administrador que se preze deve conhecer muito bem o sistema de arquivos /proc e o comando procinfo te permite ter um resumo das informações de uso de vários recursos do sistema em tempo real.
É possivel verificar o uso dos recursos de irq, memória, processos do espaço do usuário e sistema, load average e muitas outras. O comando abaixo mostra todas as saidas do procinfo, inclusive mostrando os módulos do kernel que estão sendo utilizados.
root@Zen-La:~# procinfo -a
Para ter a saída do comando em modo fullscreen e atualizado a cada 5 segundos digite:
root@Zen-La:~# procinfo -f
Sugiro que explore todas as saidas deste comando, pois após dominá-lo verá que muita dor de cabeça será eliminada e seus diagnósticos muito mais preciso.
7) ifstat –> Fornece estatísticas de uso das Interfaces de rede em tempo real.
root@Zen-La:~# ifstat -a
lo eth0 eth1 sit0
KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out
0.00 0.00 0.00 0.00 4.43 0.00 0.00 0.00
0.00 0.00 0.00 0.00 3.31 0.00 0.00 0.00
0.00 0.00 0.00 0.00 7.00 0.00 0.00 0.00
Outros Comandos muito uteis:
dstat –> Fornece as mesmas informações do vmstat, porém em tempo real e muito bem formatada (cores e etc). Melhor que o vmstat!!
tcpstat –> Fornece estatisticas sobre o uso das interfaces de rede. Prefiro o ifstat!!
sysctl –> permite analisar e mudar paramentros do kernel. Tome cuidado com este comando, pois normalmente nada precisa ser mudado.
ps aux –> Verifica os processos em execução e pode mostrar quais estão consumindo mais recursos.
nice e renice –> Permite setar a prioridade de execução de um processo. É muito util quando um processo está consumindo muita cpu e não pode ser morto, para isso diminuimos sua prioridade.
Conclusão:
Bem este foi um resumo rápido e curto de alguns comandos que podem ajudar um administrador no seu dia-a-dia para fazer uma análise de performance e descobrir alguns problemas e gargalos em seus servidores.
Cabe dizer também que não existe muita mágica e parametros que possam ser ajustados e chegará o momento que deverá aposentar o servidor e/ou fazer um upgrade de hardware.
Manter o sistema atualizado, principalmente o kernel (tome cuidado com o suporte a hardware antigo, caso utilize) é uma medida eficiente.
Esse Artigo é de autoria de Leandro Godoy