2.4. O Que Monitorar?

Conforme dito antes, os recursos presentes em todos os sistemas são energia da CPU, largura de banda, memória e armazenamento. À primeira vista, pode parecer que o monitoramento consistiria apenas da avaliação destes quatro fatores distintos.

Infelizmente, não é tão simples. Por exemplo: considere um drive de disco. Quais as coisas que você gostaria de saber sobre seu desempenho?

Há outras maneiras de estudar o desempenho do drive de disco; estes pontos apenas abrangem a superfície. O conceito principal é ter em mente que há muitos tipos diferentes de dados para cada recurso.

As seções seguintes exploram os tipos de utilização das informações úteis para cada tipo de recurso principal.

2.4.1. Monitorando a Energia da CPU

Na sua forma mais simples, monitorar a energia da CPU consiste em determinar se a utilização da CPU atinge, em algum momento, 100%. Se a utilização da CPU traz algo abaixo de 100%, não importa o que o sistema está fazendo, há energia de processamento disponível para mais carga de trabalho.

Entretanto, é raro um sistema que não atinge 100% de utilização da CPU em pelo menos parte do tempo. Neste ponto é importante examinar os dados de utilização mais detalhadamente. Ao fazer isso, é possível começar a determinar onde a maioria da sua energia de processamento está sendo consumida. Aqui estão algumas das estatísticas mais comuns de utilização da CPU:

Usuários Versus Sistema

A porcentagem de tempo gasto com o processamento a nível de usuário versus o processamento a nível do sistema pode indicar se a carga de um sistema deve-se à execução de aplicações ou à sobrecarga do sistema operacional. As altas porcentagens a nível de usuário tendem a ser boas (assumindo que os usuários tenham desempenho satisfatório), enquanto as altas porcentagens a nível de sistema tendem a indicar problemas que requerem uma investigação mais profunda.

Mudanças de Contexto

Uma mudança de contexto ocorre quando a CPU para de rodar um processo e começa a rodar outro. Como cada mudança de contexto requer que o sistema operacional tome o controle da CPU, mudanças de contexto excessivas e altos níveis de consumo da CPU a nível de sistema tendem a caminhar juntos.

Interrupções

Como o nome implica, as interrupções são situações nas quais o processo desempenhado pela CPU é alterado abruptamente. As interrupções geralmente ocorrem devido a atividade do hardware (como um dispositivo I/O completando uma operação I/O) ou devido a software (como interrupções do software que controla o processamento da aplicação). Como as interrupções devem ser resolvidas a nível do sistema, altas taxas de interrupção levam a um consumo maior da CPU a nível do sistema.

Processos Executáveis (runnable)

Um processo pode estar em estados diferentes, como:

  • Aguardando a finalização de uma operação I/O

  • Aguardando o sub-sistema de administração da memória resolver uma falha de página

Nestes casos, o processo não precisa da CPU.

No entanto, o processo sofre mudanças eventualmente e torna-se executável. Como o nome implica, um processo executável é capaz de executar o trabalho assim que estiver agendado para receber tempo da CPU. Entretanto, se mais de um processo for executável numa determinada hora, todos os processos executáveis menos um[1] devem esperar pela sua vez na CPU. Ao monitorar o número de processos executáveis, é possível determinar o quanto seu sistema depende da CPU.

Outras medidas de desempenho que refletem um impacto na utilização da CPU tendem a incluir serviços diferentes que o sistema operacional oferece aos processos. Podem incluir estatísticas da administração da memória, do processamento I/O e assim por diante. Estas estatísticas também revelam que, quando o desempenho do sistema é monitorado, não há limites entre as estatísiticas diferentes. Em outras palavras: as estatísticas de utilização da CPU podem terminar apontando para um problema no sub-sistema I/O ou as estatísticas de utilização da memória podem revelar uma falha no design da aplicação.

Consequentemente, ao monitorar o desempenho do sistema, não é possível examinar nenhuma estatística isoladamente; só é possível extrair informações significativas ao examinar o quadro geral de quaisquer estatísticas que você coletar.

2.4.2. Monitorando a Largura de Banda

Monitorar a largura de banda é mais difícil que monitorar outros recursos aqui descritos. A razão disso deve-se ao fato que as estatísticas de desempenho geralmente baseiam-se nos dispositivos, enquanto a maioria dos lugares onde a largura de banda é importante são os canais que conectam dispositivos. Nestes casos, onde mais de um dispositivo compartilha um canal em comum, você deve observar estatísticas razoáveis para cada dispositivo, mas a carga agregada imposta por estes dispositivos no canal seria bem maior.

Um outro desafio ao monitorar a largura de banda: pode haver circunstâncias nas quais as estatísticas dos dispositivos podem não estar disponíveis. Isto é particularmente verdadeiro para canais de expansão do sistema e caminhos de dados[2]. No entanto, mesmo que as estatísticas relacionadas à largura de banda não estejam 100% corretas, frequentemente há informações necessárias para possibilitar algum nível de análise, particularmente ao considerar as estatísticas relacionadas.

Estas são algumas das estatísticas mais comuns relacionadas à largura de banda:

Bytes recebidos/enviados

As estatísticas da interface de rede oferecem um indicador da utilização da largura de banda de um dos canais mais visíveis — a rede.

Contagens e taxas da interface

Estas estatísticas relacionadas à rede podem indicar colisões excessivas, transmitir e receber erros, entre outros. Através do uso destas estatísticas (particularmente, se houver estatísticas para mais de um sistema em sua rede), é possível solucionar um mínimo de problemas de rede, mesmo antes de usar as ferramentas de diagnóstico de rede mais comuns.

Transferências por Segundo

Normalmente coletada para dispositivos I/O de bloco, como drives de fita de alto desempenho e drives de disco, esta estatística é uma boa maneira de determinar se a largura de banda de um determinado dispositivo atingiu seu limite. Devido sua natureza eletromecânica, os drives de fita e de disco podem executar somente um determinado número de operações I/O a cada segundo; seu desempenho decai rapidamente quando esse limite é atingido.

2.4.3. Monitorando a Memória

Se existe alguma área onde podemos encontrar uma riqueza de estatísticas de desempenho, essa área é o monitoramento da utilização da memória. Devido à complexidade inerente dos sistemas operacionais com memória virtual paginada por demanda, as estatísticas de utilização da memória são muitas e variadas. É aqui que reside a maioria do trabalho do administrador de sistemas com a administração dos recursos.

Os dados seguintes representam uma visão geral superficial das estatísticas comumente encontradas sobre a administração da memória:

Páginas Dentro/Páginas Fora (Page Ins/Page Outs)

Estas estatísticas possibilitam medir o fluxo de páginas da memória do sistema para os dispositivos de armazenamento em massa anexos (geralmente drives de disco). Taxas altas de ambas estatísticas podem significar que o sistema tem pouca memória física e está com thrashing, ou seja, gastando mais recursos do sistema para mover páginas para dentro e para fora da memória que para rodar aplicações.

Páginas Ativas/Inativas (Active/Inactive Pages)

Estes dados mostram como são usadas as páginas altamente residentes na memória. Uma falta de páginas inativas pode indicar a falta de memória física.

Páginas Livres, Compartilhadas, no Buffer e no Cache (Free, Shared, Buffered, and Cached Pages)

Estes dados oferecem detalhes adicionais sobre as estatísticas de páginas inativas/ativas mais simplistas. Ao usar estas estatísticas, é possível determinar a mistura geral da utilização da memória.

Swap Dentro/Swap Fora (Swap Ins/Swap Outs)

Estes dados mostram o comportamento da memória swap do sistema. Altas taxas podem indicar a falta de memória física.

O bom monitoramento da utilização da memória requer um bom entendimento de como funcionam os sistemas operacionais com memória virtual paginada por demanda. Apesar do assunto isoladamente poder ocupar um livro inteiro, seus conceitos básicos estão abordados no Capítulo 4. Este capítulo, juntamente ao tempo gasto com o monitoramento de um sistema real, oferece a base para aprender mais sobre o assunto.

2.4.4. Monitorando o Armazenamento

O monitoramento do armazenamento geralmente ocorre em dois níveis diferentes:

A razão disto: é possível ter problemas sérios em uma área e nenhum problema em outra. Por exemplo: é possível fazer com que um drive de disco esgote seu espaço sem causar nenhum tipo de problema relacionado ao desempenho. Da mesma forma, é possível ter um drive de disco com 99% de espaço livre com seus limites de desempemnho sendo forçados.

Entretanto, é mais provável que o sistema mediano experimente vários graus de falta de recursos em ambas áreas. Por causa disso, também é provável que — até certo ponto — os problemas de uma área impactem noutra área. Frequentemente, esse tipo de interação toma a forma de desempenho I/O descendente, conforme o drive de disco se aproxima de 0% de espaço livre; não obstante, nos casos de cargas I/O extremas, pode ser possível diminuir I/O para um nível no qual as aplicações não mais rodam apropriadamente.

Em qualquer caso, as estatísticas a seguir são úteis para monitorar o armazenamento:

Espaço Livre (Free Space)

Espaço livre é provavelmente o recurso que todos os administradores de sistemas monitoram de perto; seria raro um administrador de sistemas que nunca verifica o espaço livre (ou que não tenha uma maneira automatizada de fazê-lo).

Estatísticas Relaciondas ao Sistema de Arquivo

Estas estatísticas (como número de arquivos/diretórios, tamanho médio de arquivo, etc) oferecem detalhes adicionais sobre a simples porcentagem de espaço livre. Como tais, estas estatísticas possibilitam aos administradores configurar o sistema para o melhor desempenho, já que a carga I/O imposta por um sistema de arquivo com muitos arquivos pequenos não é a mesma que àquela imposta por um sistema de arquivo com um único arquivo enorme.

Transferências por Segundo

Esta estatística é uma boa maneira de determinar se os limites de largura de banda de um determinado dispositivo foram atingidos.

Acessos/Gravações por Segundo (Reads/Writes per Second)

Uma análise um pouco mais detalhada das transferências por segundo, estas estatísticas permitem ao administrador de sistemas entender melhor a natureza das cargas I/O experimentadas por um dispositivo de armazenamento. Isto pode ser crítico já que algumas tecnologias de armazenamento têm características de desempenho bem diferentes para operações de acesso (read) e para operações de gravação (write).

Notas

[1]

Assumindo um sistema com processador único.

[2]

Mais informações sobre canais, caminhos de dados e largura de banda podem ser encontradas no Capítulo 3.