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.


sar e ferramentas de monitoramento e análise Unix e Linux

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 (Process Status)

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
  
  ...

top (top CPU process)

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 / iostat / netstat

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:

  • Observar quais as conexões atuais, origem e qual o seu status.
  • Inspecionar informações de configuração, fragmentação e tráfego de interfaces de rede.
  • Informações estatísticas de vários protocolos de rede & rotas (útil apenas para roteadores).

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

sar ( System Activity Reporter)

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:

  • Paginação: exibe freqüência de paginação em KB/s de dados lidos e gravados (-w, -p)
  • Buffer: uso, reinicialização e atividade do buffer (-b)
  • Fila: atividade e uso da fila de processos (-q)
  • CPU: exibe informações sobre relação uso da CPU por usuário x sistema (-u)
  • Memória: exibe como a memória está sendo utilizada (-g ou -k via kernel allocation)
  • Geral: coleta geral de todas informações providas via sar (-A)

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.

Parâmetros sar ( System Activity Reporter)

     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]

Finalizando

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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Jairo Willian Pereira