Perfmon: Falso Sentido de Monitoração

No post anterior, introduzi a primeira das 9 regras para otimização de performance:

Regra 1: Monitorar o consumo de recursos
https://blogs.msdn.com/b/fcatae/archive/2016/01/05/monitore-o-consumo-de-recursos-do-banco-de-dados.aspx

Monitore o consumo: É fácil falar, mas é difícil fazer. Vamos usar como exemplo alguns dos contadores (Perfmon) mais usados pelos DBA:

  • Processor
    • %Processor Time = 65%
  • Logical Disk
    • Average Disk Queue Length = 13
  • SQL Buffer Manager
    • Page Life Expectancy = 140
    • Buffer cache hit ratio = 92%
    • Lazy Writer/sec = 0.5
  • SQL General Statistics
    • User Connections = 5200

Então, posso tirar algumas (falsas) conclusões:

  1. Consumo de CPU está relativamente alto em torno de 65%, que pode indicar que o processador está ocupado demais
  2. A fila de disco está acima de 2. Isso pode indicar um problema grave de disco
  3. O contador do Page Life Expectancy (PLE) está abaixo de 300, indicando falta de memória.
  4. Buffer cache hit ratio está acima de 90%, revelando que a falta de memória não impacta o sistema
  5. Há um número alto de usuários conectados (5200) e pode estar causando carga no sistema.

Essas são apenas hipóteses baseadas nos valores observados. Esses fatos isolados são podem responder a perguntas do tipo: Preciso comprar mais CPU? Devo adicionar memória ao banco de dados? Será que há muitos usuários conectados? Recomendaria o uso de discos SSD?

Infelizmente não é possível tomar nenhuma ação com esses dados.

 

Esqueça números, use gráficos

É difícil analisar números frios, por isso, sempre que possível use gráficos. O gráfico revela as oscilações nos indicadores e os dias/horários que houve a mudança. Veja o gráfico a seguir com o contador Page Life Expectancy. Que conclusão temos nesse caso?

image

Parece que as 10h temos o menor valor.

Note que ainda assim, a análise continua difícil. Posso fazer duas afirmações válidas mas contraditórias:

  1. Está ótimo! O servidor está trabalhando muito bem.
  2. Esse servidor poderia se beneficiar de aumento de memória.

Tudo aqui depende da base de comparação. Se compararmos com os servidores com alta carga, podemos dizer que esse servidor está ótimo (#1). Por outro lado, se compararmos com um servidor tranquilo, poderíamos dizer que o gráfico poderia ser melhor (#2).

Minha opinião é que frequentemente tiramos falsas conclusões do perfmon.

 

Perfmon: Ferramenta de Baseline

Perfmon é uma ferramenta essencial para monitorar o banco de dados, mas não use como ferramenta primária de troubleshooting.

Como assim? Imagine que o Perfmon seja igual ao medidor de combustível de um carro (de corrida):

image

Esse medidor é importantíssimo, pois não podemos chegar ao nível zero. Entretanto, é muito difícil determinar o desempenho do carro olhando para esse indicador isoladamente. Pense no Perfmon da mesma forma:

  • Não use ele para medir performance do sistema
  • Não considere ele como principal ferramenta de tuning
  • Não tire conclusões precipitadas com base nele

O correto uso do Perfomance Monitor é fazer “baseline de comparação”:

  • Estou consumindo mais recurso no mês de janeiro?
  • Quanto de recurso foi economizado depois das otimizações?
  • Cheguei no esgotamento de recursos?

Esse foi um exemplo de trabalho de otimização que fiz em um servidor há um tempo:

CPU - ANTES

image

CPU – DEPOIS

image

Parece que houve ganhos correto? Agora veja qual foi a redução no acesso ao disco (quanto menor, melhor):

IOPS de Disco – ANTES

image

IOPS de Disco – DEPOIS

image

É fácil de fazer comparações usando o Performance Monitor.

 

Conclusão

Muitas pessoas usam o Perfmon da maneira incorreta, dando o falso sentimento de monitoração.

Não esqueça que o Perfmon é igual ao medidor de combustível. Não deixe o servidor ficar com o tanque vazio. Adicione alertas e monitore por condições críticas. Faça comparações de baseline e procure responder aos seguintes tipos de perguntas:

  • Estou consumindo mais recurso no mês de janeiro?
  • Quanto de recurso foi economizado depois das otimizações?
  • Cheguei ao esgotamento de recursos?

Essa é a forma correta de usa-lo.

No próximo artigo, vou falar sobre os grandes mitos do Performance Monitor.