Como posso identificar o culpado pelo meu desligamento lento do Windows?

29

Meu computador está demorando muito para ser desligado.

Como posso identificar o culpado? Eu não quero esperar minutos para o meu computador desligar ...

Existe algum programa que eu possa usar para rastrear quanto tempo demora para desligar?

    
por wizlog 10.10.2011 / 17:40

2 respostas

31

O Windows fornece Contadores de desempenho como bem como o Rastreamento de eventos , que permite que os aplicativos fazer análise de desempenho para que possa identificar a causa de problemas de desempenho, entre os que existem, há um kit de ferramentas excelente: Windows Performance Toolkit disponível no Windows SDK .

Neste kit de ferramentas, você encontrará xbootmgr.exe , destinado a Análise de desempenho de transição do Windows On / Off a>.

Embora o documento vinculado acima tenha todos os detalhes para cada transição de ativação / desativação, aqui está a idéia geral sobre o rastreamento e a análise da transição de desligamento usando xbootmgr e a GUI xperf:

  1. Faça o download do SDK do Windows e instale o Windows Performance Toolkit usando-o.

  2. Abra um prompt de comando como administrador e execute:

    cd %ProgramFiles%\Microsoft Windows Performance Toolkit

  3. Se você quiser ajuda no futuro, digite xbootmgr -help e xperf /? .

  4. Faça um rastreamento de reinicialização como este:

    xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot

  5. Após a inicialização, ele gerará um rastreamento em dois minutos.

  6. O traço foi salvo em %ProgramFiles%\Microsoft Windows Performance Toolkit , você pode arrastá-lo para xperf.exe e ele será aberto em uma GUI.

  7. Você verá uma GUI com diferentes gráficos, a seta à esquerda permite adicionar / remover gráficos.

  8. Veja os gráficos e veja se consegue identificar algo fora do comum, pode selecionar um intervalo e ampliar o zoom se quiser. Clique com o botão direito e descompacte quando quiser ver o todo.

  9. Para cada gráfico, você pode clicar com o botão direito para obter tabelas de resumo para o intervalo atualmente selecionado .

  10. Nessas tabelas, classifique por peso ou por hora para descobrir a que mais gasta. Por favor, note que você pode arrastar em torno de colunas, assim, por exemplo, a tabela de I / O permite que você verifique o processo de maior utilização, bem como o mais alto usando o caminho.

    O divisor (uma coluna de cabeçalho amarela) faz com que as colunas à direita mostrem o total das colunas restantes. Então, se você tiver o Path primeiro e depois o Process, você pode abrir a árvore de um arquivo para ver quais processos o acessaram e então obter os totais para essa combinação de processo / arquivo.

  11. Você pode encontrar mais informações sobre como os gráficos e tabelas funcionam aqui .

  12. Se você, de alguma forma, precisar descer para examinar os rastros da pilha; faça outro rastreamento de inicialização e anexe o parâmetro -stackWalk profile , configure o _NT_SYMBOL_PATH e clique com o botão direito do mouse em qualquer gráfico e ative "Carregar símbolos ". Isso permitirá que você verifique quais funções ele está realmente chamando, em geral você não precisará disso para um desligamento; mas pode permitir coisas como descobrir que seu firewall está interferindo no depurador como programador. Muito bacana ...

Boa sorte, espero que você possa encontrar o culpado. Se não, então, solte o traço e vamos dar uma olhada para você ...

Por favor note que os DPCs são Chamadas de Procedimento Adiadas e Interrupções são Software Interrupts , ambos estão relacionados a drivers / hardware.

    
por 16.10.2011 / 22:04
22

Meus desligamentos demoram muito para serem executados. O que segue é o meu exemplo com Resposta de Tom .

O primeiro gráfico mostra o problema, Disco I / O :

MeudesligamentoestádemorandomaisdeumminutoetudoéE/Sdediscorígido.

Opróximográfico,Utilizaçãodediscomostraqueumaunidadeestáquasenomáximocom100%deuso:

O gráfico final mostra Utilização de disco por processo :

Filtrando,perceboquetudofoicausadoporWinInit.exe:

Clicando com o botão direito do mouse em qualquer um dos gráficos do disco rígido e selecionando Tabela de resumo , posso obter os detalhes de quais arquivos foram acessados por qual processo:

Foramgastos56,4segundosdomeudesligamentoporWinInitescrevendo6,7GBparaC:\hiberfil.sys.

MasaquestãoéporqueoWindowsestágravandonomeuarquivodehibernaçãonoshutdown?

Emseguida,lembrei-medeumaopçãoqueeutinhaativadoparalimparessearquivodepaginaçãonodesligamento:

  • Iniciar->Executar->SecPol.msc
    • Configuraçõesdesegurança,políticaslocais,opçõesdesegurança
    • Desligamento:limparoarquivodepaginaçãodamemóriavirtual

Por isso, desativei a opção e execute xbootmgr novamente. Agora meu desligamento é de 22 segundos:

Agora, 9s do 22s de desligamento é gasto em System gravando em algum arquivo unknown . Isso pode valer a pena mais investigação.

Mas por enquanto resolvi meu minuto e meio de desligamento.

eu fui mais longe e resolvi o meu desligamento lento 22s. De t = 12s a t = 21s mostrou 100% Utilização de disco , mas zero disco I / O . Foi desconcertante.

Até que durante um desligamento eu ouvi o som familiar de uma das minhas unidades girando. O desligamento foi interrompido por 9 segundos porque o Windows estava tentando acessar um disco que tinha ido dormir. Nove segundos depois, a unidade responde e, um instante depois, a máquina é desligada.

Irônico que o Windows inicie um disco para informar que é hora de dormir.

Isso tornaria meu desligamento real em 13,5 segundos. Isso pode valer mais investigação. Mas por enquanto resolvi meu desligamento de 22 segundos.

    
por 01.11.2011 / 03:35