Compartilhar via


Guia de cenário: Solucionar problemas de desempenho no Windows

Este guia de cenário explica como usar o Monitor de Desempenho para coletar dados e como usar os dados para restringir o gargalo que torna o computador lento. Ele apresenta abordagens gerais e tenta explicar os conceitos de solução de problemas.

Usar o Monitor de Desempenho para registrar dados de desempenho

Cada versão completa do Windows vem com uma ferramenta de caixa de entrada chamada Monitor de Desempenho. Você pode utilizar essa ferramenta para controlar informações relacionadas ao desempenho sobre vários aspectos do sistema Windows usando contadores de desempenho integrados ao Windows, que nos fornecem mais informações sobre o uso da CPU (unidade central de processamento) ou o uso da memória.

Cada contador é construído da mesma maneira simples:
[Performance counter object]\<Instance>\<Counter Name>

Por exemplo:
[Processor Information]\<CPU 0\>\% Processor Time

Para armazenar os dados de desempenho fornecidos pelos contadores, você pode usar os Conjuntos de coletores de dados no Monitor de Desempenho. Veja a seguinte captura de tela:

Captura de tela do Monitor de Desempenho e dos Conjuntos de Coletores de Dados.

Para criar esses conjuntos de coletores de dados, você pode usar as interfaces gráficas com o usuário (GUI) ou o logman.exe comando.

Para criar um conjunto de coletores de dados, execute o seguinte comando em uma janela de prompt de comando com privilégios elevados:

logman.exe create counter PerfLog-15Sec-Contoso -o "c:\perflogs\Contoso_PerfLog-15sec.blg" -f bincirc -v mmddhhmm -max 800 -c "Hyper-V Dynamic Memory Balancer (*)\*" "Hyper-V Hypervisor Virtual Processor(*)\*" "Hyper-V Hypervisor Logical Processor(*)\*" "\LogicalDisk(*)\*" "\Memory\*" "\Cache\*" "\Network Interface(*)\*" "\Paging File(*)\*" "\PhysicalDisk(*)\*" "\Processor(*)\*" "\Processor Information(*)\*" "\Processor Performance(*)\*" "\Process(*)\*" "\Process V2(*)\*" "\Redirector\*" "\Server\*" "\System\*" "\Server Work Queues(*)\*" "\Terminal Services\*" -si 00:00:15

Para iniciar o contador, execute o seguinte comando em uma janela de prompt de comando com privilégios elevados:

logman.exe start PerfLog-15Sec-Contoso

Este comando gera um monitor semelhante a um "gravador de caixa de voo" em seu sistema. O monitor registra dados de desempenho a cada 15 segundos (consulte -si 00:00:15 o intervalo). Cada vez que o conjunto de coletores é iniciado, o impacto no sistema deve ser inferior a 1% e ele não usará mais de 800 megabytes (MB) de espaço no disco rígido local. Se você reiniciar o computador, precisará executar o comando para iniciar o monitor novamente.

Para interromper o contador, execute o seguinte comando em uma janela de prompt de comando com privilégios elevados:

logman.exe stop PerfLog-15Sec-Contoso

O conjunto de coletores de dados também segue o princípio de [Performance counter object]\<Instance>\<Counter Name>. O objeto contador é chamado de "Memória", pois esse objeto não tem uma instância. O motivo é que há uma memória no Windows, mas pode haver mais de um disco rígido ou CPU.

Agora você tem um conjunto de coletores de dados que registra dados a cada 15 segundos. 15 segundos é escolhido devido a uma limitação da ferramenta usada para analisar os dados: Monitor de Desempenho.

Um máximo de 1.000 pontos de dados podem ser exibidos em um gráfico. Se o coletor de dados estiver configurado para registrar dados a cada segundo, o gráfico só poderá exibir os dados em 16 minutos e 40 segundos. Se houver mais dados no log, ele começa a "resumir e combinar" esses pontos de dados. A captura é chamada de captura de alta densidade.

Isso pode levar a uma situação em que o gráfico não mostra números precisos. Você pode identificar isso olhando para o gráfico e comparando-o com os valores Mínimo ou Máximo .

Neste exemplo, observe o contador % Tempo ocioso da instância _Total para o contador Processador de objetos. Com base no valor mínimo, o gráfico deve atingir a linha azul (em 32%), mas não é verdade. Como o número e o gráfico não coincidem, você precisa verificar quantas amostras existem dentro do período exibido (22 minutos e 01 segundos). Ao passar o mouse, um "fly-out" mostra quantas amostras existem neste ponto de dados. Como você pode ver, existem 10 amostras e, portanto, a ferramenta é forçada a resumi-las e combiná-las, pois essa foi uma captura com intervalo de um segundo.

Captura de tela do valor mínimo do Monitor de Desempenho.

Simplificar o Windows

Agora que você tem o log do contador de desempenho, vamos tentar simplificar o Windows de uma forma que ajude na análise. Para fazer isso, divida o sistema em seus componentes lógicos: memória, armazenamento, CPU e rede.

Captura de tela dos componentes lógicos do sistema.

Além de mapear alguns objetos do monitor de desempenho para o recurso físico, é importante lembrar que o Windows é dividido em duas áreas principais: Kernel e Modo de usuário .

Kernel refere-se ao sistema operacional (SO) e drivers (isso também inclui o driver do filtro antivírus). O kernel é representado no Windows por uma construção lógica chamada System Process, que sempre tem a ID 4do processo . Por razões de segurança, esta área é fortemente protegida. Mesmo com ferramentas de caixa de entrada como o Monitor de desempenho, apenas algumas informações podem ser obtidas dele. Por exemplo, você pode ver quanto pool não paginado está em uso, mas não há informações sobre quem o está usando.

O modo de usuário é onde todos os aplicativos (Appx modernos, serviços e executáveis) são executados. Com o Monitor de Desempenho, você pode obter informações sobre cada processo.

Apresentar os 18 contadores mais importantes

Para simplificar, as seções a seguir apresentam os 18 contadores mais importantes e seus limites, divididos pelos recursos físicos aos quais estão relacionados.

Armazenamento

Contadores primários Íntegros Aviso Crítico
\LogicalDisk(*)\Média de disco s/leitura < 15 ms > 25 ms > 50 ms
\LogicalDisk(*)\Média de Disco s/Gravação < 15 ms > 25 ms > 50 ms
\Disco Físico(*)\Média de Disco s/Leitura < 15 ms > 25 ms > 50 ms
\Disco Físico(*)\Média de Disco s/Gravação < 15 ms > 25 ms > 50 ms

Observação

Picos curtos podem ser tolerados. Você deve investigar períodos de latência mais longos (mais de um minuto ou mais).

Esses contadores representam latência. A latência é definida por quanto tempo ele gasta para obter as informações. Do ponto de vista do desempenho do disco, você precisa examinar mais de perto a configuração. Para um disco rígido normal, em vez de um disco rígido de estado sólido (SSD), o disco normalmente tem uma velocidade de rotação de 5.400 rotações por minuto (RPM). Isso significa que o disco gira o fuso (onde as informações são armazenadas como blocos) 5.400 vezes por minuto. Você deve ser capaz de calcular o tempo que leva para ler qualquer bloco do disco:

Um bloco / (RPM / 60) = latência para um bloco

Um bloco / 5400 RPM / 60 = 0,011111 seg = 11 ms

Portanto, em teoria, o disco deve ser capaz de ler qualquer bloco em 11 ms. Se houver uma latência de , o disco deve ser capaz de ~100 msler o bloco pelo menos oito vezes, então por que há um atraso? O disco está sobrecarregado e, em caso afirmativo, quem o está usando?

Para identificar quem o está usando, agora você pode verificar o objeto do contador Process .

Contadores de processo relacionados a operações de disco:

  • \Process(*)\Operações de Leitura de E/S/s (tempos de leitura de disco específicos do processo)
  • \Process(*)\Operações de Gravação de E/S/s (tempos de gravação de disco específicos do processo)

Você pode usar esses contadores e tentar correlacionar a latência ou o uso do disco com o uso do processo.

Vamos passar para o próximo componente físico.

Memória

Contadores de memória virtual e memória física Íntegros Aviso Crítico
\Memória\Bytes paginados | do pool Bytes não paginados do pool 0–50% 60–80% 80–100%
\Memória\MBytes disponíveis > 10% ou pelo menos 4 gigabytes (GB) livres < 10% < 1% ou menos de 500 MB
\Memória\% Bytes Confirmados em Uso 0–50% 60–80% 80–100%

Esta seção descreve os seguintes contadores:

  • Bytes paginados do pool
  • Bytes não paginados do pool

Esses contadores representam recursos do kernel compartilhados por todo o sistema. Embora os processos possam reivindicar pools paginados e não paginados, isso é feito principalmente por drivers; portanto, os dados não são visíveis para o Monitor de Desempenho. Embora o pool paginado possa ser paginado para o arquivo de paginação, o pool não paginado não pode. Lembre-se de que esses recursos do kernel dependem do tamanho da memória (memória de acesso aleatório (RAM)) que você tem no sistema. O limite do pool não paginado é de 75% da RAM e eles afetam diretamente os MBytes disponíveis. MBytes disponíveis é a quantidade de RAM disponível para todos os programas, incluindo o kernel.

Para entender o impacto do seu processo na utilização da RAM, você pode usar o seguinte contador:

Contador de processo Comentário
\Processo(*)\Conjunto de Trabalho Tente se relacionar com MBytes disponíveis para identificar o principal consumidor de sua RAM. O conjunto de trabalho é definido como a quantidade de RAM (não o arquivo de paginação) que um processo usa em qualquer momento.

Lembre-se de que Memória\% Bytes Confirmados em Uso representa a memória virtual que você tem no Windows. Esta é a combinação do arquivo de paginação e RAM, que pode ser visualizada no Gerenciador de Tarefas na guia Desempenho após selecionar Memória:

Captura de tela da memória exibida no Gerenciador de Tarefas.

Este sistema tem 128 GB de RAM e um arquivo de paginação de 128 GB, portanto, a memória comprometida é de 256 GB. Você também pode dar uma olhada no pool paginado e na memória do pool não paginado.

Ao investigar problemas de memória, lembre-se de que ambas as áreas (Kernel e Usuário) compartilham o mesmo recurso físico. Portanto, se o computador tiver pouca memória, tente descobrir quem o está usando.

Vamos passar para o próximo recurso físico.

CPU

Ao solucionar problemas de desempenho da CPU, você precisa dividir o sistema operacional no modo Kernel e Usuário novamente. No entanto, a divisão é mais fácil de entender. O modo Usuário é representado por qualquer aplicativo ou serviço, incluindo os aplicativos executados no modo Usuário, que consome ciclos de CPU e não envolve hardware diferente da CPU. Se você precisar acessar o hardware, isso resultará no modo Kernel, pois a ferramenta precisa se comunicar com os drivers para acessar a GPU, o armazenamento ou a rede.

Eis alguns exemplos:

  • SQL Server fazendo um cálculo = Modo de usuário
  • SQL Server gravando arquivos de log no disco = modo kernel
  • Servidor de arquivos acessando compartilhamentos de rede = modo kernel

Em seguida, vamos examinar os contadores primários:

Contadores primários Íntegros Aviso Crítico
\Informações do Processador(*)\% Tempo do Usuário (Modo de Usuário) < 50% 50–80% > 80%
\Informações do Processador(*)\% Tempo Privilegiado (modo Kernel) < 30% 30–50% > 50%
\Informações do processador(*)\% Tempo ocioso >20% >10% <10%

Novamente, picos curtos são aceitáveis, mas se você vir por mais de um minuto, comece a investigar.

Cada vez que uma CPU é usada, a CPU consome % de tempo de usuário (modo de usuário) ou % de tempo privilegiado (modo de kernel). Se você encontrar uma situação de CPU alta (= % de tempo ocioso baixo), precisará descobrir quem a está usando examinando os seguintes contadores secundários:

Contadores secundários Comentário
\Process(*)\% Tempo do usuário Lembre-se de que você pode ter mais de um processo ativo.
*\process()\% Tempo Privilegiado** Lembre-se de que há apenas informações limitadas sobre o processo do sistema. O processo do sistema é normalmente o principal driver para % Tempo Privilegiado, pois o processo hospeda unidades dentro dessa construção lógica. No entanto, não se limita a isso.

100% Processo\% Tempo do Usuário = uma CPU. Se você tiver 16 CPUs, o uso máximo que um processo pode atingir é 1600%. Veja a seguinte captura de tela:

Captura de tela de um gráfico do Monitor de Processo para quatro CPUs.

Neste exemplo, você usou uma ferramenta para simular o uso da CPU (% de tempo do usuário). Você limitou a ferramenta para ser executada em apenas quatro CPUs (CPUs 12, 13, 14 e 15). Uma vez que quatro threads estão ativos, fica claro como todas as CPUs atingem 100% enquanto o próprio aplicativo (CPU Stress) atinge 400%. Este exemplo demonstra a relação entre o uso da CPU do Estresse da CPU e a carga da CPU nas CPUs às quais o aplicativo foi limitado. Estabelecer esse tipo de relacionamento ajuda a entender completamente os processos subjacentes.

Isso nos leva ao último objeto físico.

Rede

Como o Monitor de Desempenho é uma ferramenta local, você só pode obter informações básicas da rede. No entanto, os seguintes contadores ainda são úteis:

Contadores primários Íntegros Aviso Crítico
\Interface de Rede(*)\Total de Bytes/s < 50% 50–80% > 80%
\Interface de Rede(*)\Bytes Enviados/s * * *
\Interface de Rede(*)\Bytes Recebidos/s * * *

Observação

Mais informações para células marcadas com símbolos de estrela (*): a carga de trabalho de \Interface de Rede(*)\Bytes Enviados/s e \Interface de Rede(*)\Bytes Recebidos/s deve depender da função do servidor. Por exemplo, o número de bytes enviados por segundo é normalmente maior do que o número de bytes recebidos por segundo em um servidor de streaming. Em contraste, o número de bytes recebidos por segundo é geralmente maior do que os bytes enviados por segundo em um servidor de backup que faz um backup.

Os valores estão relacionados à velocidade da placa de rede e você precisa fazer o cálculo. Ao fazer isso, lembre-se de que a velocidade da rede é medida em bits e 8 bits = 1 byte. Portanto, se você tiver uma placa de rede de 1 GB, sua taxa de transferência poderá chegar a 125 MB/s.

Enquanto o contador Total de Bytes/s ajuda você a entender a utilização geral de sua placa de rede, os outros dois contadores podem ajudá-lo a saber se você está recebendo ou enviando mais dados. Se você tiver essas informações, poderá compará-las com o comportamento esperado. Se você quiser investigar sua rede, um conjunto de ferramentas diferente será necessário, pois você precisa de rastreamentos de ponta a ponta de ambos os lados para entender completamente o comportamento da rede.

Conclusão

Este guia de cenário termina com o detalhamento e os componentes físicos de um sistema Windows. Quando você enfrenta um gargalo em qualquer componente físico, seu sistema está com problemas. E seu aplicativo também é afetado.

Esperamos que este guia de cenário possa ajudá-lo a obter uma compreensão básica do Monitor de Desempenho e como preparar seu sistema para uma captura de "caixa preta", como um gravador de voo. Se precisar de mais ajuda para analisar os dados, sinta-se à vontade para entrar em contato conosco abrindo um tíquete de suporte.