Meu computador está demorando muito tempo para desligar.
Como posso identificar o culpado? Não quero esperar minutos para o meu computador desligar ...
Existe um programa que eu possa usar para rastrear quanto tempo leva para desligar?
Meu computador está demorando muito tempo para desligar.
Como posso identificar o culpado? Não quero esperar minutos para o meu computador desligar ...
Existe um programa que eu possa usar para rastrear quanto tempo leva para desligar?
Respostas:
O Windows fornece contadores de desempenho , bem como rastreamento de eventos, que permite que os aplicativos analisem o desempenho, para que se possa identificar a causa dos problemas de desempenho. Entre os que existem, existe um excelente kit de ferramentas: o Windows Performance Toolkit disponível no Windows SDK .
Neste kit de ferramentas você encontrará xbootmgr.exe
, destinado à Análise de Desempenho de Transição On / Off do Windows .
Embora o documento vinculado acima entre em todos os detalhes de cada transição liga / desliga, aqui está a idéia geral sobre como rastrear e analisar a transição de desligamento usando xbootmgr
e a GUI do xperf:
Baixe o Windows SDK e instale o Windows Performance Toolkit usando-o.
Abra um prompt de comando como administrador e execute:
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
Se você quiser ajuda no futuro, poderá digitar xbootmgr -help
também xperf /?
.
Faça um rastreamento de reinicialização como este:
xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot
Após a inicialização, ele gerará um rastreio em dois minutos.
O rastreio foi salvo %ProgramFiles%\Microsoft Windows Performance Toolkit
, você pode arrastá-lo xperf.exe
e será aberto em uma GUI.
Você verá uma GUI com gráficos diferentes. A seta no lado esquerdo permite adicionar / remover gráficos.
Olhe para os gráficos e veja se você consegue identificar algo fora do comum, pode selecionar um intervalo e aumentar o zoom, se quiser. Clique com o botão direito e descompacte quando quiser ver o todo.
Para cada gráfico, você pode clicar com o botão direito do mouse para obter tabelas de resumo para o intervalo atualmente selecionado .
Nestas tabelas, classifique por peso ou tempo para descobrir para o qual está gastando mais. Observe que você pode arrastar as colunas; portanto, a tabela de E / S permite verificar o processo de uso mais alto e o caminho de uso mais alto.
O divisor (uma coluna de cabeçalho amarela) faz com que as colunas à direita mostrem o total das colunas restantes. Portanto, se você tiver o Path primeiro e depois o Process, poderá abrir a árvore de um arquivo para ver quais processos o acessaram e obter os totais dessa combinação de processo / arquivo.
Você pode encontrar mais informações sobre como os gráficos e tabelas funcionam aqui .
Se você precisar, de alguma forma, descer para examinar os rastreamentos da pilha; faça outro rastreio de inicialização e inclua o -stackWalk profile
parâmetro, defina _NT_SYMBOL_PATH e clique com o botão direito do mouse em qualquer gráfico e ative "Load Symbols". Isso permitirá que você verifique quais funções estão realmente chamando; em geral, você não precisará disso para um desligamento; mas pode permitir coisas como descobrir que seu firewall está interferindo no seu depurador como programador. Muito bacana ...
Boa sorte, espero que você possa encontrar o culpado. Caso contrário, abandone o rastreamento e daremos uma olhada em você ...
Observe que os DPCs são chamadas de procedimento adiado e interrupções são interrupções de software , ambas relacionadas a drivers / hardware.
Meus desligamentos demoravam muito tempo a correr. O que se segue é o meu exemplo com a resposta de Tom .
O primeiro gráfico mostra o problema, Disk I / O :
Meu desligamento está demorando mais de um minuto e é tudo E / S do disco rígido.
O próximo gráfico, Utilização de disco , mostra que uma unidade está quase no máximo com 100% de uso:
O gráfico final mostra a utilização do disco por processo :
Filtrando para baixo, percebo que tudo é causado por WinInit.exe
:
Ao clicar com o botão direito do mouse em qualquer um dos gráficos do disco rígido e selecionar Tabela de resumo , posso obter os detalhes de quais arquivos foram acessados por qual processo:
56,4 segundos do meu desligamento foram gastos WinInit
escrevendo 6,7 GB para C:\hiberfil.sys
.
Mas a pergunta é por que o Windows está gravando no meu arquivo de hibernação no desligamento ?
Lembrei-me de uma opção que havia ativado para limpar esse arquivo de paginação no desligamento:
Desativei a opção e execute xbootmgr
novamente. Agora meu desligamento é de 22 segundos:
Agora, 9s
o 22s
desligamento é gasto System
gravando em algum unknown
arquivo. Isso pode ser digno de mais investigação.
Mas por enquanto resolvi meu minuto e meio de desligamento.
fui mais longe e resolvi meu desligamento lento de 22 anos. De t = 12s
até t = 21s
mostrou 100% de utilização de disco , mas zero de E / S de disco . Foi desconcertante.
Até que durante um desligamento 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 havia adormecido. Nove segundos depois, a unidade responde e um momento depois a máquina foi desligada.
Irônico que o Windows ative um disco para dizer 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.