Como posso analisar problemas de desempenho antes / durante o processo de logon?

Respostas:

35

Usando o Process Monitor

O Process Monitor é uma ferramenta que coletará eventos de sistema de arquivos, registro e rede para todos os processos em execução. Os eventos coletados podem ser analisados ​​para determinar como um sistema (ou aplicativo) está se comportando internamente em determinadas situações.

Nesse caso, queremos utilizar a ferramenta para determinar quais eventos durante o processo de inicialização levaram muito tempo para serem concluídos.

  1. Faça o download do Process Monitor e execute-o.

  2. No menu Opções , marque Habilitar log de inicialização .

    Habilitar o registro de inicialização

  3. Na caixa de diálogo resultante, marque Gerar eventos de criação de perfil e clique em OK .

    Gere eventos de criação de perfil

  4. Reinicie o sistema e replique seu problema. Depois que o processo de logon for concluído, inicie o Process Monitor.

  5. O Process Monitor notificará você de que ele coletou a atividade de inicialização e perguntará se você deseja salvar esses dados agora. Confirme o processo clicando em Sim .

    Salvar atividade no momento da inicialização

  6. Selecione um local de armazenamento apropriado para o .pmlarquivo e aguarde a conversão dos dados. Depois que os dados forem carregados, exiba a coluna Duração , abrindo o menu de contexto em um dos cabeçalhos da coluna e clicando em Selecionar Colunas ...

    Selecionar colunas ...

    ... e marcando a caixa de seleção apropriada na caixa de diálogo resultante.

    Caixa de seleção Duração

  7. Crie um novo filtro selecionando Filtro ... * no menu ** Filtro .

    Menu Filtro

  8. Crie um filtro para a coluna Duração , na qual ele excede o valor 1 ; nesse caso, a entrada deve ser Incluída . Clique em Adicionar para adicionar o filtro à lista e confirme a seleção com OK .

    insira a descrição da imagem aqui

  9. Nesse momento, a lista de eventos no Process Monitor mostrará apenas eventos que levaram mais de 1 segundo para serem concluídos. Você deseja verificar a coluna Duração quanto a eventos que demoraram muito para serem concluídos.

    Para fins de demonstração, veja uma seleção de eventos que levaram mais de 10 segundos para serem concluídos. Isso foi capturado em uma máquina virtual para fins de demonstração.

    Eventos de exemplo
    Clique para ampliar

    Embora esses eventos não precisem necessariamente ser o culpado pelo bloqueio do processo de logon, desabilitar o serviço de Indexação do Windows e o Avast Anti-Virus pode valer uma chance nesta instalação.

Usando xperf

O xperf é uma ferramenta de análise de desempenho do Windows Performance Toolkit. Usá-lo e poder analisar os dados coletados pode ser um desafio. No entanto, veremos como coletar os dados necessários e como visualizar seções relevantes deles.

Observe que o Kit de Avaliação e Implantação do Windows (ADK), necessário para isso, funciona apenas no Windows 7 e superior.

  1. Baixe o Windows ADK e instale pelo menos o componente Windows Performance Toolkit .

  2. Quando a instalação estiver concluída, abra um prompt de comando elevado.

    Prompt de comando elevado

  3. Mude para um diretório em que deseja que seu rastreio seja localizado. Como a área de trabalho.

  4. A maneira recomendada (de acordo com o uso do XBOOTMGR para capturar inicialização lenta ou logon lento causado por inicialização lenta ) para capturar um rastreamento durante a inicialização é:

    xbootmgr -trace boot -traceflags base+latency+dispatcher -stackwalk profile+cswitch+readythread -notraceflagsinfilename -postbootdelay 10

    O sistema irá agora iniciar o rastreamento e reiniciar.

  5. Após a reinicialização, siga as instruções na tela. Você será solicitado a permitir que o processo de coleta seja elevado. Após a conclusão do processo, você encontrará o rastreamento resultante na pasta de onde você iniciou o rastreamento.

    No meu caso, ele criou um boot_1.etl(e um correspondente boot_1.cab) na área de trabalho.

    Abra o .etlarquivo no Windows Performance Analyzer .

Análise

Depois de abrir o rastreio, você já pode ver possíveis indicações de que seu problema está vinculado ao hardware. Uma rápida olhada nas visões gerais de Computação , Armazenamento e Memória no Graph Explorer mostraria picos que deveriam ser analisados ​​mais detalhadamente.

Para fins de demonstração, vamos dar uma olhada no gráfico Utilização por processo . Para exibir o conteúdo, basta clicar duas vezes no gráfico para adicioná-lo à visualização Análise .

Visão geral do Windows Performance Analyzer
Clique para ampliar

Observe que nenhum dos gráficos exibe picos relativos. Os picos azuis no início pertencem ao processo do sistema e espera-se que ocorram neste momento.

Os outros picos no gráfico Uso da CPU podem ser melhor visualizados no contexto. Então, vamos adicionar outro gráfico à visualização Análise. O gráfico que procuramos é o gráfico de fases de inicialização , localizado na seção Atividade do sistema .

Fases de inicialização
Clique para ampliar

Na captura de tela acima, também adicionei o gráfico Generic Events na parte inferior para fornecer um contexto adicional. No entanto, o que deve ser observado aqui é o fato de que o primeiro pico visível no uso da CPU foi causado pelo serviço Avast. Já vimos na análise do Process Monitor que esse processo foi um dos processos que levou grande parte do tempo no processo de inicialização.

O que também vemos aqui, agora que podemos vê-lo no contexto das fases de inicialização, é que o pico ocorreu após a fase Winlogon Init (e mesmo na fase Pós-inicialização , que ocorre quando você já pode ver a área de trabalho). Portanto, pode ser considerado improvável que esse processo esteja realmente nos causando um problema na fase antes de vermos a área de trabalho.

O que estaríamos procurando são eventos que acontecem na fase Winlogon Init ou ao redor dela . Para facilitar, você pode selecionar a fase no gráfico de fases da inicialização. Isso destacará todas as entradas em todos os gráficos que ocorreram nessa fase.

Um gráfico para uma melhor visualização é certamente o gráfico Serviços , pois a maioria deles é iniciada durante a fase Winlogon Init.

Como eu disse na introdução, a análise desses dados pode ser complicada, a menos que o problema atinja você assim que você abrir o rastreamento. No entanto, essa é definitivamente a ferramenta certa para analisar o problema. Dependendo da situação, você pode até querer coletar rastreamentos de pilha para aprofundar ainda mais. Esse processo está muito fora do escopo deste post.

Leitura adicional

Der Hochstapler
fonte
O xbootmgr do WPT ( msfn.org/board/index.php?showtopic=158252 ) é a melhor ferramenta para começar. Eu só uso o log do ProcMon para obter uma visão mais profunda de uma fase especial da inicialização.
Magicandre1981
@ magicandre1981: A postagem ainda não foi concluída;) Se você quiser adicionar mais detalhes sobre o xperf, sinta-se à vontade para editar.
Der Hochstapler