Os 7 Grandes Mitos do Perfmon (Parte 1)

No post anterior, fiz uma breve introdução sobre o Perfmon. Agora é hora de comentar sobre os principais mitos que sempre as pessoas falam sobre os contadores do Perfmon.

1. Buffer Manager:Buffer Cache Hit Ratio

Buffer Cache Hit Ratio determina a eficiência do cache de memória, sendo que as pessoas recomendam que seja acima de 90%. O cálculo desse contador é baseado nos contadores de Page Lookups/sec e Page Reads/sec, sendo calculado como uma média móvel ao longo do tempo. Esse é um dos contadores favoritos dos DBA’s, embora seja muito enganoso.

Um pouco de matemática:

90% de Buffer Cache Hit Ratio significa 10% de Buffer Cache Miss. Em outras palavras, podemos dizer que 10% das requisições vão para o disco. Um servidor com carga realiza cerca de 100.000 a 1.000.000 de leituras por segundo. Portanto, os 10% de cache miss corresponde a valores entre 10.000 a 100.000 IOPS contra seu storage.

Minha recomendação é que você não use esse contador, mas que use o contador de “Buffer Manager:Page Reads/sec” para saber quantas requisições (em valor absoluto) estão indo ao disco.

Entretanto, se você realmente gosta desse contador, então sempre procure valores acima de 99.5%. Dessa forma, você enxergará um Buffer Cache Hit Ratio de 98% como sendo RUIM; 92% sendo MUITO RUIM; 85% sendo DESASTROSO.

Normalmente quando o servidor está subindo, ele se encontra em processo de warm-up. Durante essa condição, o contador de hit ratio fica extremamente baixo.

2. Average Disk Queue Length e %Disk Busy

Os contadores de fila de disco e porcentagem de uso do disco são os piores indicadores de Performance. Jamais use.

  • Não existe um valor de mínimo ou máximo

As pessoas falam em 2 vezes o número de spindle, sendo que podemos considerar que os spindles são os discos físicos. Entretanto, o mundo atual de SAN e virtualização impede que esse número seja determinado com precisão. Além disso, os discos montados em LUN podem compartilhar os mesmos arrays de disco com outras LUN – fica inviável determinar qual seria esse valor limite.

  • Esses contadores fornecem muitos falsos-positivos.

Todos os sistemas de alta performance de disco realizam enfileiramento de disco para aumentar o throughput. Por isso, ao invés de monitorar a fila, é mais importante medir o tempo de latência do storage. A fila é consêquência: quando o storage apresenta alta latência de disco, causa enfileiramento das requisições.

  • Esses contadores não possuem nenhum significado real. Primeiro, faça a seguinte experiência: colete essas informações do servidor e depois compare os valores. Você notará que os gráficos de %Disk Busy e Average Disk Queue Length são exatamente iguais! Eu diria que o cálculo é mais ou menos o seguinte:
    • Average Disk Queue Length = IOPS x Latência
    • %Disk Busy = IOPS x Latência x 100%

O problema desse contador é que ninguém sabe o que isso significa. Se você quiser falar sobre fila com pessoal de storage, então fale sobre “outstanding I/O” e não sobre “Average Disk Queue Length”. Curiosamente, o contador para medir “outstanding I/O” possui um nome muito semelhante: “Current Disk Queue Length”.

No próximo post vou comentar sobre outros contadores do Performance Monitor que não devem ser usados.