Bottlenecks – Métricas de performance de servidores

Métricas para avaliação de performance – Análise de utilização de disco

Ter um servidor bem dimensionado que suporte uma aplicação para um ambiente produtivo empresarial de mais de 30.000 usuários é um desafio. O que fazer para obter confiança, performance, desempenho e sossego na manutenção? A resposta é investir em testes de performance. Os testes de performance certificarão que o hardware escolhido irá suprir as necessidades da aplicação e do ambiente produtivo da empresa.

Para realizar estes testes, antes, é necessário criar as métricas que serão observadas e mensuradas durante os testes. É sobre isso que trata esse artigo.

As métricas aqui identificadas poderão servir como verificadores de existência de bottlenecks em um equipamento dimensionado para um ambiente produtivo com S.O. Linux.

Métricas para avaliação de performance – Análise de utilização de disco:

Physical Disk Read Latency Analysis: Esta métrica corresponde à média da velocidade de leitura de uma partição primária de uma unidade de disco rígido. Esta análise determina se uma unidade de disco rígido está respondendo em uma velocidade lenta. Se o tempo de resposta permanecer entre 0.015 e 0.025 milissegundos então o sistema de leitura do disco rígido está respondendo de forma normal. Porém, caso a aferição seja superior a 0.025 milissegundos então o disco rígido estará respondendo lentamente caracterizando um bottleneck de leitura de disco rígido. 

Physical Disk Write Latency Analysis: Afere a média da velocidade de gravação em uma partição primária de uma unidade de disco rígido. Esta análise determina se uma unidade de disco rígido está gravando os dados de forma lenta demais. Como ocorre com a latência de leitura, o recomendado é que os valores permaneçam entre 0.015 e 0.025 milissegundos para que se possa homologar como uma situação normal, porém a aferição superior a 0.025 caracterizará um bottleneck.

Logical Disk Read Latency Analysis: Esta métrica corresponde à média da velocidade de leitura de uma partição lógica de uma unidade de disco rígido. Esta análise determina se uma unidade de disco rígido está respondendo em uma velocidade lenta. Se o tempo de resposta permanecer entre 0.015 e 0.025 milissegundos então o sistema de leitura do disco rígido está respondendo de forma normal. Porém, caso a aferição seja superior a 0.025 milissegundos então o disco rígido estará respondendo lentamente caracterizando um bottleneck de leitura de disco rígido.

Logical Disk Write Latency Analysis: Afere a média da velocidade de gravação em uma partição lógica de uma unidade de disco rígido. Esta análise determina se uma unidade de disco rígido está gravando os dados de forma lenta demais. Como ocorre com a latência de leitura, o recomendado é que os valores permaneçam entre 0.015 e 0.025 milissegundos para que se possa homologar como uma situação normal, porém a aferição superior a 0.025 caracterizará um bottleneck.

Disk Transfers/sec: Disk Transfers/sec é a taxa de transferência de gravação e leitura em disco.

Métricas para avaliação de performance – Análise de utilização do processador

Processor Time: É a porcentagem de tempo que o processador leva para processar um thread. É calculado mensurando-se o tempo que um thread em espera leva para tornar-se ativa e subtraindo-se do intervalo total de processamento. Esta métrica é um indicador primário de atividade do processador e, em porcentagem, revela a média dos dados processados em um intervalo de tempo. Essa média é calculada aferindo-se o tempo que o serviço encontra-se inativo e subtraindo-se de 100%.

Processor Queue Length: É o número de threads na fila de dados a serem processados pelo processador. Encontramos somente uma fila para um processador. No caso de um computador com dois ou mais processadores teremos uma fila para cada processador. A aferição de 10 threads por segundo em uma processor queue é considerada normal, dependendo da carga de trabalho imposta ao processor. Caso a análise da média do comprimento da fila de processamento for maior do que o número de processos, então, teremos um bottleneck.

Priority Process CPU Analysis: Indica a prioridade que um processo pode assumir na fila de processos do processador. Pode variar de -20 a 20. Quanto menor o número maior será a sua prioridade. Muitos processos com prioridade alta podem constituir um bottleneck.

Interrupt Time: É o tempo que o processador leva para receber e responder as interrupções de hardware. Este valor é um indicador indireto das atividades nos dispositivos de hardware que geram interrupções, como mouse, teclado, discos rígidos, placas de rede e outros dispositivos de periféricos. A maioria dos sistemas interrompem os processadores de 10 em 10 milissegundos, criando uma atividade de interrupção em background. Um grande aumento neste contador indica um potencial problema de hardware.

Network Utilization Analysis: Aferido em Bytes total/segundos, refere-se à taxa de envio e de recebimento de cada interface de rede. Corresponde a soma de cada byte enviado e recebido por cada interface de rede a cada segundo. Este indicador nos permite conhecer a capacidade de envio e recebimento de bytes de cada interface de rede. Com o conhecimento da capacidade de cada interface de rede é possível saber se existe um bottleneck no tráfego de rede. Esta análise convert Bytes total/segundos em bits e compara com a largura de banda disponível na rede. Uma porcentagem segura é manter o indicador abaixo de 50% de consumo de banda de rede.

Network Output Queue Length: Esta métrica informa a quantidade de threads aguardando na interface de rede. Caso haja uma grande quantidade de threads aguardando podemos considerar um bottleneck de I/O similar a baixa latência ou baixa bandwith da rede. Caso haja pelo menos dois pacotes na fila (sim, medimos as threads em pacotes) é necessário corrigir este bottleneck. Uma aferição que não caracteriza a presença de um bottleneck é zero.

Memory Committed Bytes: Este indicador refere-se à quantidade (bytes) em memória virtual. Memória virtual são espaços físicos reservados para paginação no disco rígido. Podem haver um ou mais arquivos em cada disco rígido. Memory Committed Bytes é aferido de forma precisa e não por média, geralmente retorna o último valor observado.

Métricas para avaliação de performance – Análise de utilização da Memória

Total Available Memory: Available Memory é o tamanho, em Mbytes, de memória disponível no sistema para os processos rodarem.

Total Used Memory: Used memory é a memória total utilizada pelos processos em estado de execução, hibernação, Zumbi e Interrompido.

Maximum number of processes: Maximum number of processes é o número máximo de processos na memória, não importando o seu estado atual.

Priority processor number: Priority processor number é a prioridade que um processo recebe ao ser iniciado. Esta prioridade reflete na disposição do sistema operacional em processá-lo. Processo com baixa prioridade (-20) terão uma maior prioridade de processamento por parte do sistema. Processos com alta prioridade (20) serão executados após os outros processos. Um processo em estado de sleeping ou zombie, com baixa prioridade pode caracterizar um bottleneck.

Total SWAP space available: O espaço total da partição, de tipo swap Linux, é utilizado como memória de swap para processos. No Linux essa memória só é utilizada como memória virtual para paginação de processos a partir do momento em que toda a memória RAM do sistema já fora consumida. Enquanto ainda sobrar memória RAM disponível a partição swap será utilizada como memória cached do sistema.

Used SWAP memory: Refere-se ao espaço na partição SWAP utilizado. Este espaço poderá será utilizado como cached.

Shared memory: O sistema operacional Linux utiliza um recurso de compartilhamento de bibliotecas para economizar o espaço utilizado na memória do sistema. Esta memória compartilhada é também chamada de Shared Memory. Através da sua aferição é possível obter um valor mais preciso de utilização da memória de um processo.

Métricas para avaliação de performance – Análise de utilização da Rede

Incoming traffic: Incoming traffic é o total de tráfego que é recebido pela placa de rede em um determinado espaço de tempo. É medido comumente em Kbps, ou seja, kilobytes per second ou Mbps, Megabytes per second. Toda placa de rede suporta uma determinada taxa de transmissão e recebimento medida em Mbps. Caso o volume de dados recebido em um determinado espaço de tempo seja maior que a taxa de recebimento de dados da interface de rede, teremos um bottleneck.

Outgoing traffic: Outgoing traffic é o total de tráfego que é enviado pela placa de rede em um determinado espaço de tempo. É medido comumente em Kbps, ou seja, kilobytes per second ou Mbps, Megabytes per second. Toda placa de rede suporta uma determinada taxa de transmissão e recebimento medida em Mbps. Caso o volume de dados recebido em um determinado espaço de tempo seja maior que a taxa de recebimento de dados da interface de rede, teremos um bottleneck.

Rolar para cima