Dev (Back & Front)ARTIGO

Rumo ao .NET mais rápido: dicas de ajustes

Quando você precisa medir a quantidade de recursos do sistema que o seu aplicativo consome, é preciso uma atenção especial a uma série de coisas. Continue lendo o artigo e descubra quais coisas são essas e o porquê de tanta atenção.

Recursos do sistema

Quando você precisa medir a quantidade de recursos do sistema que o seu aplicativo consome, é preciso uma atenção especial ao seguinte:

  • Processador: utilização do processador, trocas de contexto, interrupções e assim por diante;
  • Memória: quantidade de memória disponível, memória virtual, e utilização de cache;
  • Rede: porcentagem da largura de banda disponível a ser utilizada, engarrafamentos de rede;
  • Disk I/O: quantidade de atividade do disco de ler e escrever.Estrangulamentos I/O ocorrem se as operações ler e escrever começarem a ficar na fila.

As próximas seções descrevem os contadores de desempenho que ajudam a medir os indicadores anteriores.

Processador

Para medir a utilização do processador e a troca de contexto, você pode usar os seguintes contadores:

  • Processador \% tempo de processamento

Limite:o panorama geral para o valor-limite dos processadores é de 85%.

Significado: este contador é o principal indicador da atividade do processador. Os valores muitos elevados, necessariamente, não são ruins. No entanto, se os outros processadores relacionados estão aumentando de forma linear como % tempo privilegiado, ou (comprimento da fila de espera do processador, pode valer a pena investigar a alta utilização de CPU.

  • Processador \% tempo privilegiado

Limite: uma figura que está consistentemente acima de 75% indica um estrangulamento.

Significado: Este contador indica o percentual de tempo que um segmento é executado em modo privilegiado. Quando o aplicativo chama funções do sistema operacional (por exemplo, para executar arquivo ou rede de E/S ou para alocar memória), essas funções do sistema operacional são executadas em modo privilegiado.

  • Processador \% tempo de interrupção

Limite: depende do processador.

Significado: este contador indica o percentual de tempo que o processador gasta recebendo e fazendo a manutenção das interrupções de hardware. Este valor é um indicador indireto da atividade dos dispositivos que geram as interrupções, tais como placas de rede. Um aumento dramático neste contador indica problemas potenciais de hardware.

  • Sistema\comprimento da fila de espera de um processador

Limite: um valor médio consistentemente superior a dois indica um gargalo.

Significado: se houver mais tarefas prontas para serem executar do que o número processadores, os threads se enfileram. O processador de fila de espera é a coleção de threads que estão prontos, mas não são capazes de serem executado pelo processador porque outro thread ativo está em execução. Uma fila sustentada ou recorrente de mais de dois tópicos é uma clara indicação de um estrangulamento de processador. Você pode obter mais produtividade, reduzindo paralelismo nesses casos.

Você pode usar este contador em conjunto com o processador \% processador de tempo para determinar se o seu aplicativo pode se beneficiar de mais CPUs. Existe uma única fila de espera para o tempo do processador, mesmo em computadores com múltiplos processadores. Portanto, em um computador multiprocessador, divida o valor do comprimento da fila de espera pelo número de processadores fazendo a manutenção da carga de trabalho.

Se a CPU estiver muito ocupada (90% ou mais) e a média PQL for consistentemente maior que dois por processador, você pode ter um estrangulamento de processador que pode se beneficiar de CPUs adicionais. Ou, você pode reduzir o número de threads e filas mais no nível do aplicativo. Isso causará menos comutação de contexto e isso é bom para reduzir a carga da CPU. A razão comum para um PQL de dois ou mais com baixa utilização da CPU é que os pedidos de tempo do processador chegam aleatoriamente e os threads exigem quantidades irregulares de tempo do processador. Isto significa que o processador não está em um estrangulamento, mas que é a sua lógica de threads que precisa ser melhorada.

  • Interruptores de sistema\contexto por segundo

Limite: como regra geral, as taxas de troca de contexto de menos de 5.000 por segundo por processador não valem a pena se preocupar. Se as taxas de troca de contexto exceder 15.000 por segundo por processador, então não é uma restrição.

Significado: a troca do contexto ocorre quando um thread de prioridade maior prevalece sobre um thread de menor prioridade que está sendo executado ou sobre um bloco de thread de alta prioridade. Os altos níveis de troca de contexto podem ocorrer quando muitos threads compartilham o mesmo nível de prioridade. Isso indica muitas vezes que existem vários threads concorrentes para os processadores no sistema. Se você não olha muito a utilização do processador e você vê níveis muito baixos de troca de contexto, isso pode indicar que os threads estão bloqueados.

Memória

Para medir a utilização da memória e do impacto da paginação, você pode usar os contadores a seguir:

  • Memória\Mbytes Disponíveis

Limite: um valor consistente de menos de 25% de RAM instalada é um indicativo de insuficiência de memória.

Significado: isso indica a quantidade de memória física disponível para os processos em execução no computador. Note que este contador exibe somente o último valor observado. Não é uma média.

  • Memória\Leituras de página por segundo

Limite: valores sustentados superiores a cinco indicam um grande número de falhas de página para solicitações de leitura.

Significado: este contador indica que o conjunto de trabalho de seu processo é muito grande para a memória física e que está paginando para o disco. Ele mostra o número de operações de leitura, sem levar em conta o número de páginas recuperadas em cada operação. Os valores mais altos indicam um estrangulamento de memória.

Se um baixo índice de operações de páginas lidas coincide com valores elevados para disco físico\% tempo de disco e disco físico\comprimento da fila de espera do disco pode haver um afunilamento de disco. Se um aumento no comprimento da fila de espera não é acompanhado por uma diminuição da taxa de páginas de leitura, é porque existe uma falta de memória.

  • Memória\Páginas por segundo

Limite: valores sustentados superiores a 500 indicam um estrangulamento.

Significado: este contador indica a velocidade com que as páginas são lidas ou gravadas em disco para resolver as falhas de página. Multiplique os valores do disco físico\Avg. Disk sec/transferência e memória\Páginas por segundo. Se o produto desses contadores ultrapassa 0,1, a paginação está demorando mais do que 10% do tempo de acesso ao disco, o que indica que você precisa de mais memória RAM.

  • Memória\ pool de bytes não paginados

Limite: assista ao valor de memória\ pool de bytes não paginados aumentar em 10% ou mais do seu valor na inicialização do sistema.

Significado: se houver um aumento de 10% ou mais do seu valor no arranque, um vazamento sério poderá acontecer.

  • Servidor/pool de falhas não paginadas

Limite: valores regulares diferentes de zero indicam um estrangulamento.

Significado: este contador indica o número de vezes que as alocações a partir do pool não paginado falharam. Ele indica também que a memória física do computador é muito pequena. O pool não paginado contém páginas de um processo de espaço de endereço virtual que não devem ser trocadas por um arquivo de página em disco, como um processo de mesa de objeto kernel. A disponibilidade do pool não paginado determina quantos processos, threads e outros objetos podem ser criados. Quanto às alocações de falhas não paginadas, isso pode ser devido a um vazamento de memória em um processo, especialmente se o uso do processador não tiver aumentado em conformidade.

  • Servidor \ pool de falhas paginadas

Limite: nenhum valor específico.

Significado: este contador indica o número de vezes que as alocações a partir do pool paginado falharam. Este contador indica que a memória física do computador ou arquivo de paginação é muito pequena.

  • Servidor \ pool de picos não paginados

Limite: nenhum valor específico.

Significado: este é o número máximo de bytes no pool não paginado que o servidor teve em uso em qualquer ponto. Ele indica também a quantidade de memória física que o computador deve ter. Pelo pool não paginado ter que ser residente, e porque ele precisa de ter um pouco de memória de sobra para outras operações, você pode quadruplicá-lo para obter a memória física real que você deve ter para o sistema.

  • Memória\cache de Bytes

Limite: nenhum valor específico.

Significado: monitora o tamanho do cache sob diferentes condições de carga. Este contador mostra o tamanho do cache de arquivos estáticos. Por padrão, ele utiliza cerca de 50% de memória disponível, mas diminui se a memória disponível encolher, e isso afeta o desempenho do sistema.

  • Memória\ Falhas de cache por segundo

Limite: nenhum valor específico.

Significado: este contador indica quantas vezes o sistema operacional procura dados no cache do sistema de arquivos, porém não consegue encontrá-lo. Este valor deveria ser o mais baixo possível. O cache é independente da localização de dados, mas é extremamente dependente da densidade de dados dentro do conjunto de páginas. A alta taxa de falhas dele pode indicar falta de memória ou também pode denotar dados mal localizados.

  • Cache\MDL Read Hits %

Limite: quanto maior for este valor, melhor será o desempenho do cache do sistema de arquivos. Os valores devem ser preferencialmente o mais próximo de 100% possível.

Significado: este contador fornece o percentual de lista descritiva de memória (MDL) – leia-se pedidos para o cache do sistema de arquivos, onde o cache retorna o objeto diretamente ao invés de exigir uma leitura a partir do disco rígido.

Disk I/O

Para medir a atividade do disco I/O você pode usar os seguintes contadores:

  • Disco físico\Avg. comprimento da fila de espera do disco

Limite: não deve ser maior do que o número de rotações + 2.

Significado: este contador indica o número médio dos pedidos de leitura e escrita que foram enfileirados para o disco selecionado durante o intervalo de amostragem.

  •  Disco físico\Avg. comprimento da fila de espera do disco de leitura

Limite: deve ser inferior a dois.

Significado: este contador indica o número médio de solicitações de leitura que foram enfileiradas para o disco selecionado durante o intervalo de amostragem.

  • Disco físico\Avg. comprimento da fila de espera do disco de escrita

Limite: deve ser inferior a dois.

Significado: este contador indica o número médio de pedidos de gravação, que foram colocados em fila para o disco selecionado durante o intervalo de amostragem.

  • Disco físico \ Avg. leitura de disco por segunda

Limite: nenhum valor específico.

Significado: este contador indica o tempo médio, em segundos, de uma leitura de dados do disco.

  • Disco físico \ Avg. transferência de disco por segundo

Limite: não deve ser superior a 18 milésimos de segundo.

Significado: este contador indica o tempo, em segundos, da média de transferência por segundo do disco. Isso pode indicar uma grande quantidade de fragmentação do disco, discos lentos, ou falhas de disco. Multiplique os valores dos contadores disco físico\Avg. transferência de disco por segundo e memória/páginas por segundo. Se o produto desses contadores exceder 0,1, a paginação está levando mais do que 10% do tempo de acesso ao disco, então você precisa de mais memória RAM.

  • PhysicalDisk \ Disk Writes / sec

Limite: depende especificação do fabricante.

Significado: este contador indica a taxa de operações de gravação no disco.

Rede I/O

Para medir a rede de I/O, você pode usar os seguintes contadores:

  •  Interface network\total de bytes por segundo

Limite: valores sustentados superiores a 80% da largura de banda de rede.

Significado: este contador indica a taxa na qual os bytes são enviados e recebidos por cada placa de rede. Este contador ajuda saber se o tráfego em seu adaptador de rede está saturado e se você precisar adicionar outra placa de rede. O quão rápido você pode identificar um problema depende do tipo de rede que possui, bem como se você compartilha largura de banda com outros aplicativos.

  • Interface network \bytes recebidos por segundo

Limite: nenhum valor específico.

Significado:eEste contador indica a velocidade à qual os bytes são recebidos em cada placa de rede. Pode-se calcular a taxa de dados de entrada como uma parte da largura de banda total. Isso vai ajudar você a saber o que precisa para otimizar os dados de entrada do cliente ou que você precisa adicionar outra placa de rede para lidar com o tráfego de entrada.

  • Interface network\total de bytes por segundo

Limite: nenhum valor específico.

Significado: este contador indica a velocidade à qual os bytes são enviados através de cada placa de rede. Pode-se calcular a taxa de dados de entrada como uma parte da largura de banda total. Isso vai ajudar você a saber que precisa otimizar os dados que estão sendo enviados para o cliente ou que precisa adicionar uma outra placa de rede para lidar com o tráfego de saída.

  • Servidor \ total de bytes por segundo

Limite: o valor não deve ser superior a 50% da capacidade da rede.

Significado: este contador indica o número de bytes enviados e recebidos pela rede. Os valores mais altos indicam largura de banda de rede como o estrangulamento. Se a soma de total de bytes por segundo para todos os servidores for praticamente igual às taxas de transferência máximas de sua rede, você pode precisar segmentar a rede.

  • Contadores de protocolo relacionados:
  1. Protocol_Object \ Segmentos recebidos por segundo
  2. Protocol_Object \ Segmentos enviados por segundo

O Protocol_Object pode ser TCP, UDP, NetBEUI, IPX NWLink, NWLink NetBIOS, NWLink SPX, ou outros objetos de desempenho do protocolo de camada.

Limite: específico para cada aplicativo.

Significado: contadores de protocolo relacionados ajudam a diminuir o tráfego para vários protocolos, porque você pode usar um ou mais protocolos de sua rede. Você pode querer identificar o protocolo que está consumindo a largura de banda de forma desproporcional.

  • Processor\% tempo e interromper

Limite: depende do processador.

Significado: este contador indica o percentual de tempo que o processador gasta recebendo e fazendo a manutenção das interrupções de hardware. Este valor é um indicador indireto da atividade de dispositivos que geram interrupções, tais como as placas de rede.

Na próxima parte deste artigo vamos discutir mais detalhadamente o quê e como medir.

****

Texto original da equipe Monitis, liderada por Hovhannes Avoyan, disponível em: http://blog.monitis.com/index.php/2012/09/11/towards-faster-net-tuning-tips/

é CEO do Monitis, um provedor de gerenciamento de sistemas e de monitoramento de software on-demand.

Ver perfil