De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Jairo Willian Pereira
Data de Publicação: 24 de Abril de 2004
Sistemas Unix possem ferramentas de monitoramento de subsistemas do Sistema Operacional (dependendo do sabor a sintaxe pode variar). Baseando-se em Solaris (opcoes bem mais restritas que em Linux), apresentarei as mais populares, seguidas de um resumo funcional de como podem ser utilizadas para amostrar atividades do sistema, possibilitando a quantização e detecção de pontos de latência.
ps é uma das ferramentas que lista todos os processos presentes no Sistema Operacional com informações sobre CPU, parâmetros passados na inicialização do processo, uso de memória, etc.
Através desse comando é possível verificar, por exemplo, o número de processos filhos criados pelo servidor (ou não) para atender múltiplas requisições simultâneas (diferentemente do que acontece no Solaris, onde as threads são ocultadas no processo pai).
O ps pode-se detectar também serviços desnecessários que estejam sendo executados pelo sistema e que devem ser desabilitados. Caso esteja usando uma versao recente de Solaris, tente ps -elf. Veja saida tipica do comando num SunOS 5.5.1
jairo@caolho[5] ps -aux PID TT S TIME COMMAND 0 ? T 0:00 sched 3 ? S 1:31 fsflush 125 ? S 1:24 /usr/lib/netsvc/yp/ypserv -d 183 ? S 1:23 /usr/lib/autofs/automountd 570 ? S 0:00 su -c umask 022; /var/tmp/lm_TMW12.ld -z -c /var/tmp/lm_TMW12.dat 573 ? S 0:00 sh -c while read line; do echo "$line" >> /var/tmp/lm_TMW12.log; done 574 ? S 0:01 /var/tmp/lm_TMW12.ld -z -c /var/tmp/lm_TMW12.dat ...
O top é utilizado para determinar em real-time processos que estão consumindo mais recursos num determinado momento. Assemelha-se bastante a um ps "auto-refreshing". Uma informação bastante interessante fornecida pelo top é o load average (carga média) que indica a média de utilização por processos já finalizados, onde um número elevado indica deficiência de capacidade da CPU.
Entre os parametros mais usados, -stime prove a capacidade de alterar o reflesh de tela, -ofield recebe um campo para ordenação da amostragem, -Uusername torna restrita a amostragem apenas ao usuario especifico.
Podemos também optar pela não visualização de processos ociosos (idle) via a flag -I, e caso algum teste específico sugira a alteração da prioridade de um processo, poderemos altera-lo via top pressionando r em modo interativo. Segue exemplo de chamada do utilitário:
jairo@caolho[5] top -s3 -ocpu -Uroot -I last pid: 16240; load averages: 1.04, 1.03, 1.05 09:43:37 54 processes: 52 sleeping, 2 on cpu CPU states: 49.5% idle, 30.0% user, 20.5% kernel, 0.0% iowait, 0.0% swap Memory: 64M real, 2072K free, 21M swap in use, 379M swap free PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND 13082 root 1 0 0 2748K 1876K cpu2 58:53 50.00% sshd2 16100 root 1 58 0 2748K 2052K sleep 0:02 0.19% sshd2 125 root 1 58 0 1636K 1016K sleep 1:24 0.05% ypserv
vmstat provê um resumo das atividades de várias funções do sistema incluindo utilização de swap/paginação, cache, interrupções de dispositivos do sistema, etc., armazenados desde o processo de boot/carga do sistema.
Vale lembrar, que as amostragens poderão ocorrer em qualquer momento ou em horários previamente agendados via crontab de acordo com utilização/pico do sistema.
jairo@caolho[42] vmstat -s 0 swap ins 0 swap outs 0 pages swapped in 0 pages swapped out 1464929 total address trans. faults taken 94367 page ins 3544 page outs 535354 pages paged in 34498 pages paged out 1803 total reclaims 1793 reclaims from free list 1464929 minor (as) faults 93745 major faults 424884 copy-on-write faults 173342 zero fill page faults 498132 pages examined by the clock daemon 32 revolutions of the clock hand 352700 pages freed by the clock daemon 16447 forks 411 vforks 35747 execs 5325052 cpu context switches 22919370 device interrupts 2245758 traps 300140039 system calls 2345923 total name lookups (cache hits 92%) 12031 toolong 1210309 user cpu 821546 system cpu 34165151 idle cpu 99863 wait cpu
iostat mesmo tendo parte de suas funcionalidades sobrepostas pelo sar, possui mais uma infinidade de recursos que podem ser usados em paralelo com as demais ferramentas mencionadas. bi (blocks in) e bo (blocks out) indicam a freqüência de gravação e leitura de blocos/seg para dispositivos gerais, -x forca um resumo sucinto para operacoes de disco, -c a utilizacao do sistema em user mode, system mode e quanto tempo ficou aguardando por recursos de I/O (escrita em disco, por exemplo).
jairo@caolho[50] iostat -x -c extended disk statistics cpu disk r/s w/s Kr/s Kw/s wait actv svc_t %w %b us sy wt id sd1 0.0 0.0 0.1 0.1 0.0 0.0 44.4 0 0 3 2 0 94 sd3 0.2 0.3 0.9 2.0 0.0 0.0 59.6 0 1 sd6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0
netstat exibe várias informações relacionadas ao ambiente de rede, sendo as mais comuns:
Em caso de desconfiança sobre a performance oferecida pela infra-estrutura de redes local, a ferramenta poderá ser utilizada como mecanismo de acompanhamento.
jairo@caolho[64] netstat -n -r -v IRE Table: Destination Mask Gateway Device Mxfrg Rtt Ref Flg Out In/Fwd -------------------- --------------- -------------------- ------ ----- ----- --- --- ----- ------ 127.0.0.1 255.255.255.255 127.0.0.1 lo0 8232* 0 0 UH 0 0 143.106.11.128 255.255.255.192 143.106.11.144 hme0 1500* 0 3 U 1391 0 224.0.0.0 240.0.0.0 143.106.11.144 hme0 1500* 0 3 U 0 0 default 0.0.0.0 143.106.11.129 1500* 0 0 UG 682 0
O sar provê informações semelhantes ao vmstat/iostat/netstat (esses com algumas particularidades), embora seja mais completo e flexível. Ocupa aproximadamente 750Kb de RAM, com uso aproximado de CPU em torno de 0,25% causando um relativo pequeno impacto no sistema. Entre as informações fornecidas pelo sar destacam-se:
O agendamento e coleta de dados podem ser armazenados num formato binário compacto, para a coleta durante um longo período, onde amostras serão captadas em momentos críticos do sistema em intervalos regulares de tempo.
Armazendados em /usr/lib/sa/, sadc, sa1 e sa2 estão diretamente envolvidos na coleta automatica de dados do sistema.
sadc coleta dados do sistema e salva em formato binário (no diretório /var/adm/sa), sendo 1 arquivo para cada período de 24h, nomeados pela convenção sadd, onde dd corresponde a data corrente.
O arquivo gerado por sadc, pode ser posteriormente consulado com sar usando a opcao -f. Abaixo, exemplo de execucao de 100 amostragens com intervalo de 5 segundos entre cada coleta.
jack@caolho[66] /usr/lib/sa/sadc 5 100 sa_`date +%d_%a_%h_%Y`
sadc também pode ser invocado durante o boot, descomentando a seguinte linha no arquivo /etc/init.d/perf
/usr/bin/su sys -c "/usr/lib/as/sadc /var/adm/sa/as`date +%d`"
ou agendado para rodar periodicamente via script sa1, ativando as seguintes linhas no arquivo /var/spool/cron/crontab/sys
# 0 * * * 0-6 /usr/lib/sa/sa1 # 20,40 8-18 * * 1-5 /usr/lib/sa/sa1 # 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A
No exemplo, as duas primeiras linhas inseridas no crontab, gerarão um arquivo binário em /var/adm/sa/sadd a cada 20 minutos entre 8h e 18h, exclusive aos finais de semana. O script sa1 chama sadc passando requisição de 1 amostra com 1 segundo de intervalo. A terceira linha, gera relatórios completos (-A) a cada no período das 8h até 18h, salvos em /var/adm/sa/sardd, sendo que o Shell Script sa2, provê a geração dos arquivos sarDD em ASCII.
Opções Ações Opções Ações -a Operações de acesso arquivos -q Status da fila de processos -b Atividades do buffer -r Memória sem uso -c Chamadas do sistema -u Utilização da CPU -d Dispositivos de blocos -nv Status da tabela do sistema -g Memória livre e page-out -w Volume de troca e SWAP -k Alocação memória pelo kernel -y Atividade dos terminais -m Comunicação entre processos -A Todas as informações anteriores -p Espaço de troca
Sintaxe: sar [-aAbc...] [-s time] [-e time] [-i sec] [-f file]
As ferramentas mencionadas utilizadas em conjunto, formam um excelente arsenal para analise e tunning de qualquer SO. Ajustes mais finos e personalizacoes podem ser efetuadas com pequenas mudancas em scripts ou encontrando o parametro ideal para amostrar sua necessidade.
Embora nao documentado, algumas ferramentas conseguem alimentar um arquivo de saida, fazendo o redirecionamento da saida padrao para um arquivo qualquer.
Existem ferramentas comerciais (o sarcheck e uma delas - www.sarcheck.com) que conseguem interagir com esse resultados e gerar relatorios mais intuitivos e nos mais diferentes formatos (html, pdf, png, ps, doc...).
Diante desse pequeno how-to, recomendo fortemente que os interessados pelas ferramentas consultem suas respectivas manpages. Embora com enfase em Solaris (em funcao de nao ser tao popular e versatil quanto Linux), qualquer distribuicao *NIX possui as ferramentas mencionadas e aceitam a maioria dos exemplos mencionados.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários