Il mio computer impiega molto tempo a spegnersi.
Come posso identificare il colpevole? Non voglio aspettare minuti affinché il mio computer si spenga ...
Esiste un programma che posso usare per tenere traccia del tempo necessario per lo spegnimento?
Il mio computer impiega molto tempo a spegnersi.
Come posso identificare il colpevole? Non voglio aspettare minuti affinché il mio computer si spenga ...
Esiste un programma che posso usare per tenere traccia del tempo necessario per lo spegnimento?
Risposte:
Windows fornisce contatori delle prestazioni e Event Tracing che consente alle applicazioni di eseguire analisi delle prestazioni in modo da poter individuare la causa dei problemi di prestazioni, tra quelle esistenti esiste un eccezionale toolkit: Windows Performance Toolkit disponibile in Windows SDK .
In questo toolkit troverai xbootmgr.exe, pensato per l' analisi delle prestazioni della transizione On / Off di Windows .
Sebbene il documento collegato sopra xbootmgrincluda tutti i dettagli per ogni transizione on / off, ecco l'idea generale di tracciare e analizzare la transizione di spegnimento usando e la GUI di xperf:
Scarica Windows SDK, quindi installa Windows Performance Toolkit utilizzandolo.
Apri un prompt dei comandi come amministratore, quindi esegui:
cd %ProgramFiles%\Microsoft Windows Performance Toolkit
Se si desidera aiuto in futuro, è possibile digitare xbootmgr -helpcosì come xperf /?.
Esegui una traccia di riavvio in questo modo:
xbootmgr -trace shutdown -traceFlags BASE+DIAG+LATENCY -noPrepReboot
Dopo l'avvio, genererà una traccia entro due minuti.
La traccia è stata salvata %ProgramFiles%\Microsoft Windows Performance Toolkit, è possibile trascinarla su xperf.exee verrà aperta in una GUI.
Vedrai una GUI con diversi grafici, la freccia sul lato sinistro ti consente di aggiungere / rimuovere grafici.
Guarda i grafici e vedi se riesci a identificare qualcosa fuori dall'ordinario, puoi selezionare un intervallo e ingrandirlo se lo desideri. Fai clic con il tasto destro e annulla se vuoi vedere il tutto.
Per ciascun grafico, è possibile fare clic con il pulsante destro del mouse per ottenere le tabelle di riepilogo per l'intervallo attualmente selezionato .
In queste tabelle, ordina in base al peso o al tempo per capire a cosa sta spendendo di più. Si noti che è possibile trascinare tra le colonne, quindi ad esempio la tabella I / O consente di verificare il processo di utilizzo più elevato e il percorso di utilizzo più elevato.
Il divisore (una colonna di intestazione gialla) fa in modo che le colonne a destra mostrino il totale delle colonne a sinistra. Quindi, se prima hai Path e poi Process, allora puoi aprire l'albero per un file per vedere a quali processi ha avuto accesso e quindi ottenere i totali per quella combinazione processo / file.
Puoi trovare ulteriori informazioni su come funzionano i grafici e le tabelle qui .
Se in qualche modo hai bisogno di scendere per guardare le tracce dello stack; eseguire un'altra traccia di avvio e aggiungere il -stackWalk profileparametro, impostare _NT_SYMBOL_PATH e fare clic con il tasto destro su un grafico e abilitare "Carica simboli". Ciò ti consentirà di verificare quali funzioni sta effettivamente chiamando, in generale non ti servirà comunque per un arresto; ma può consentire cose come scoprire che il tuo firewall sta interferendo con il tuo debugger come programmatore. Abbastanza elegante ...
Buona fortuna, spero che tu possa trovare il colpevole. Altrimenti rilascia la traccia e ti daremo un'occhiata ...
Si noti che i DPC sono chiamate di procedura differite e gli interrupt sono interruzioni del software , entrambe correlate a driver / hardware.
I miei arresti hanno richiesto molto tempo per essere eseguiti. Quello che segue è il mio esempio con la risposta di Tom .
Il primo grafico mostra il problema, I / O del disco :

Il mio arresto sta impiegando più di un minuto ed è tutto I / O del disco rigido.
Il grafico successivo, Utilizzo del disco mostra che un'unità è quasi al massimo al 100% di utilizzo:

Il grafico finale mostra l' utilizzo del disco per processo :

Filtrando mi rendo conto che è tutto causato da WinInit.exe:

Facendo clic con il pulsante destro del mouse su uno dei grafici del disco rigido e selezionando Tabella riepilogativa , posso ottenere i dettagli di quali file sono stati accessibili da quale processo:

56,4 secondi del mio arresto sono stati spesi WinInitscrivendo 6,7 GB su C:\hiberfil.sys.
Ma la domanda è: perché Windows sta scrivendo sul mio file di ibernazione allo spegnimento ?
Poi ho ricordato un'opzione che avevo attivato per cancellare quel file di paging all'arresto:

Quindi ho disabilitato l'opzione ed eseguito di xbootmgrnuovo. Ora il mio spegnimento è di 22 secondi:

Ora 9slo 22sspegnimento viene speso Systemscrivendo in qualche unknownfile. Questo potrebbe essere degno di ulteriori indagini.
Ma per ora ho risolto il mio arresto di un minuto e mezzo.
sono andato oltre e ho risolto il mio spegnimento lento dei 22 anni. Da t = 12sa t = ha 21smostrato l' utilizzo del disco al 100% , ma zero I / O del disco . Era sconcertante.
Fino a quando, durante uno spegnimento, ho sentito il suono familiare di una delle mie unità girare. L'arresto è stato bloccato per 9 secondi perché Windows stava tentando di accedere a un disco che era andato in sospensione. Nove secondi dopo l'unità risponde e un momento dopo la macchina si è spenta.
È ironico che Windows riattivi un disco per dirgli che è ora di andare a dormire.
Ciò renderebbe il mio arresto effettivo 13,5 secondi. Potrebbe valere la pena indagare di più. Ma per ora ho risolto il mio arresto di 22 secondi.