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.

Habilitando SAR para coletar dados no Solaris

Colaboração: Angelo Roberto Bonfieti Junior

Data de Publicação: 25 de Julho de 2006

SAR é a abreviação de *System Activity Reporter*, cuja tradução seria algo como Relator de Atividades do Sistema, ou seja, o "dedo-duro" da utilização de recursos da máquina. É uma ferramenta que monitora os principais dispositivos de performance de um sistema, tais como utlização de CPU, memória e paginação.

Em ambientes Solaris, ele é instalado como parte de um pacote opcional (SUNWaccu).

O SAR provê informações preciosas sobre a performance de um Sistema, entretanto também pode gerar uma pequena carga na performance do sistema sendo monitorado, dependendo da frequência com a qual estiver configurado para ser executado.

Os dados provenientes do SAR ajudam a rastrear problemas no sistema e identificar gargalos, e são utilizados pela própria Sun em muitas ocasiões quando o assunto é análise de performance. Existem alguns scripts que transformam o SAR am gráfico, que será abordado em outra oportunidade. Por enquanto, falemos do SAR somente.

O SAR

O SAR pode ser executado para mostrar recentes (mas já passadas) ou atuais estatísticas de performance. Se você quer saber como seu sistema neste momento, o SAR coleta informações do Kernel para reportar os numerosos aspectos de performance de um sistema.

Segue abaixo algumas flags que podem ser usadas e o que elas coletam. Maiores informações sobre essas flags estão no man do sar.

  • -a --> uso de rotinas de acesso a arquivos
  • -A --> todos os dados - equivalente a -abcdgkmpqruvwy
  • -b --> atividade de buffer (leitura, escrita, cache, etc)
  • -c --> chamadas de sistema (system calls read, write, fork, exec, etc)
  • -d --> atividade de cada block device (por exemplo disco ou fita)
  • -g --> atividade de paginação (paging out, free, scan, etc)
  • -k --> atividade de KMA (Kernel Memory Allocation)
  • -m --> atividade de mensagens e semáforos
  • -o --> salva a saída em um arquivo binário
  • -p --> atividade de paginação (paging in, requests, faults, etc)
  • -q --> média de tamanho de fila enquanto ocupado e percentual de tempo ocupado
  • -u --> utilização de CPU (flag padrão)
  • -r --> páginas de memória e blocos de disco não utilizados
  • -w --> atividades de swap e switch
  • -y --> mostra atividade de TTY

Para visualizar como está a perfomance agora, basta digitar o comando sar com o(s) parâmetro(s) desejado(s), mencionar o intervalo (em segundos) no qual você deseja obter os dados e a quantidade desejada.

Assim, digitando

  # sar 5 5

o output seria similar ao abaixo:

  root@chaos >> sar 5 5
  
  SunOS chaos 5.9 Generic_118558-13 sun4u    01/07/2006
  
  11:30:41    %usr    %sys    %wio   %idle
  11:30:46      23      46       0      31
  11:30:51      20      47       0      32
  11:30:56      19      48       0      33
  11:31:01      16      51       0      33
  11:31:06      17      48       0      35
  
  Average       19      48       0      33

Geralmente a primeira linha é ignorada, por conter uma estatística (as vezes um pouco bizarra) desde o último reboot.

Rodando-o na forma retroativa, o SAR pode mostrar como estava a performance do sistema ontem ou na semana passada. Nesse modo, o SAR coleta dados durante as horas em que o servidor está em pleno processamento e também nos períodos mais calmos. Normalmente procura-se obter dados das horas em que o servidor está mais ocupado e guardá-las para posterior análise.

Se você digitar somente SAR sem nenhum parâmetro, a ferramenta vai procurar pelo arquivo SAR do dia (geralmente em /var/adm/sa) indicando atividade de CPU até a mais recente hora completa.

  chaos$ sar
  SunOS chaos 5.9 Generic_118558-13 sun4u    01/07/2006
  00:00:00    %usr    %sys    %wio   %idle
  01:00:00       5       3       3      89
  02:00:00       5       3      49      43
  03:00:00       5       3       4      89
  04:00:00       6       2      15      77
  05:00:00       5       3      46      46
  06:00:00       6       6      42      45

Quando estiver configurado para coletar dados automaticamente de um sistema, o SAR o faz através de diversos binários e scripts. O comando SADC põe um marcador no arquivo de dados indicando o começo da captação de dados. Geralmente é executado quando o sistema sobe ou quando a captação de dados é iniciada através do script /etc/rc2.d/S21perf

O script /usr/lib/sa/sa1 roda a cada 20 minutos durante o que são normalmente horários de pico (Segunda a Sexta, das 8 as 18hs) e a cada hora fora desse horário.

O script /usr/lib/sa/sa2 prepara relatórios em formato ASCII mostrando médias e números em intervalos de horas.

Em termos de performance o SAR praticamente não agride o sistema. Isso a menos que você queira coletar dados num intervalo de tempo razoávelmente pequeno (digamos 5 ou 10 segundos). Isso certamente daria uma visão mais pontual da utilização de recursos ao longo do dia, mas pode ter alguns dedobramentos indesejáveis como contribuir com um pouco de lentidão no sistema e geração de arquivos muito grandes (na casa de GB).

O considerado padrão, seria:

  0 * * * 0-6 /usr/lib/sa/sa1
  20,40 8-17 * * 1-5 /usr/lib/sa/sa1
  5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A

HABILITANDO O SAR

Para tornar a coleta de dados através do SAR ativa, é necessário seguir alguns procedimentos:

  1. Instalar o pacote SUNWaccu (se ainda não fizer parte do seu SO)

  2. Remover a marca de comentário das seguintes linhas do /etc/rc2.d/S21perf:

      # if [ -z "$_INIT_RUN_LEVEL" ]; then
      #         set -- `/usr/bin/who -r`
      #         _INIT_RUN_LEVEL="$7"
      #         _INIT_RUN_NPREV="$8"
      #         _INIT_PREV_LEVEL="$9"
      # fi
      #
      # if [ $_INIT_RUN_LEVEL -ge 2 -a $_INIT_RUN_LEVEL -le 4 -a \
      #     $_INIT_RUN_NPREV -eq 0 -a \( $_INIT_PREV_LEVEL = 1 -o \
      #     $_INIT_PREV_LEVEL = S \) ]; then
      #
      #         /usr/bin/su sys -c "/usr/lib/sa/sadc /var/adm/sa/sa`date +%d`"
      # fi
    

  3. Remover a marca de comentário das tarefas de cron do usuário sys com o comando "sar -e sys"
      # 0 * * * 0-6 /usr/lib/sa/sa1
      # 20,40 8-17 * * 1-5 /usr/lib/sa/sa1
      # 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A
    
  4. Executar o comando "/etc/rc2.d/S21perf start"

    Feito isso você pode checar se o /var/adm/sa está sendo populado com dados. Os arquivos gerados devem ser algo como:
      root@chaos >> ls -l /var/adm/sa
      ls -l /var/adm/sa
      total 1205120
      -rw-r--r--   1 sys      sys      53033472 Jan  1 23:55 sa01
      -rw-r--r--   1 sys      sys      53033472 Jan  2 23:55 sa02
      -rw-r--r--   1 sys      sys      53033472 Jan  3 23:55 sa03
      -rw-r--r--   1 sys      sys      53033472 Jan  4 23:55 sa04
      -rw-r--r--   1 sys      sys      53033472 Jan  5 23:55 sa05
      -rw-r--r--   1 sys      sys      53033472 Jan  6 23:55 sa06
      -rw-r--r--   1 sys      sys      36828800 Jan  7 16:35 sa07
      -rw-r--r--   1 sys      sys      14627513 Jan  2 23:06 sar02
      -rw-r--r--   1 sys      sys      14627693 Jan  3 23:05 sar03
      -rw-r--r--   1 sys      sys      14627733 Jan  4 23:05 sar04
      -rw-r--r--   1 sys      sys      14627701 Jan  5 23:05 sar05
      -rw-r--r--   1 sys      sys      14627519 Jan  6 23:05 sar06
    
    E pronto, está sendo gerado um relatório de analíse de consumo de recursos do seu servidor.

    Uma dica importante é monitorar o primeiro dia e, se possível, a primeira semana, certificando-se de que a política de limpeza desses arquivos está sendo feita adequadamente, de forma que o /var não fique cheio e possa comprometer seu sistema.

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 Angelo Roberto Bonfieti Junior