Condividi tramite


Risolvere i problemi relativi all'uso di Monitor prestazioni

Questo articolo illustra come risolvere i problemi relativi all'uso di Monitor prestazioni.

Che cos'è Monitor prestazioni (perfmon)?

Essendo stato disponibile in varie iterazioni fin dai primi giorni di Windows, Monitor prestazioni è uno snap-in MMC in Windows che consente di monitorare l'utilizzo del sistema e varie metriche delle prestazioni. La visualizzazione predefinita all'apertura mostra alcune aree e metriche in tempo reale, tra cui:

  • Monitor prestazioni: visualizzazione in tempo reale delle metriche
  • Set di raccolta dati: raccolta dati definita entro un determinato intervallo di tempo
  • Report: dati raccolti nei set di agenti di raccolta dati

Domande prima della raccolta dati

Dopo aver riscontrato problemi, scoprire altre informazioni su cosa è accaduto prima di qualsiasi risoluzione dei problemi e raccolta di dati.

  • Che tipo di problema?
  • Questo problema può essere riprodotto?
  • Il problema si verifica sporadicamente? In tal caso, quali azioni ha eseguito l'utente?
  • Esiste un modello osservato? In tal caso, che tipo di modello?
  • Succede una sola volta e non si verifica di nuovo?

Ad esempio, si verifica un problema di utilizzo elevato della CPU sporadicamente. In alcuni casi, questo problema si verifica cinque minuti dopo l'avvio del sistema, a volte dopo due ore e così via. Non viene osservato alcun modello. Quando si cerca Gestione attività o altri strumenti di monitoraggio, non è possibile osservarlo oppure non si è certi che l'output degli strumenti di monitoraggio mostri cosa accade.

In questo caso, è necessaria una panoramica generale delle risorse di sistema. Questa operazione può essere ottenuta con un Monitor prestazioni a esecuzione prolungata.

Nota

Monitor prestazioni non ha accesso al kernel e non registra tali informazioni. Inoltre, Monitor prestazioni è leggero rispetto ad altri strumenti di registrazione per problemi di utilizzo elevato della CPU ed è uno strumento predefinito. È possibile eseguire Monitor prestazioni in locale o in remoto.

Eseguire Monitor prestazioni in locale

È possibile aggiungere contatori in base alle esigenze. Aprire un prompt dei comandi con privilegi elevati ed eseguire i comandi seguenti:

  1. Creare un set di agenti di raccolta dati:

    Logman.exe create counter CORE_%computername% -f bin -v mmddhhmm -max 2048 -c "\Memory\*" "\Cache\*" "\Objects\*" "\Network Interface(*)\*" "\Paging File(*)\*" "\PhysicalDisk(*)\*" "\LogicalDisk(*)\*" "\Processor(*)\*" "\Processor Information(*)\*" "\Process(*)\*" "\Server\*" "\System\*" "\Server Work Queues(*)\*" "\Terminal Services\*" "\Terminal Services Session(*)\*" -si 00:00:01
    

    Nota

    -max 2048 indica che la dimensione massima del file di log è 2 GB. -si 00:00:01 indica che l'intervallo è 1 secondo. È possibile modificare questa impostazione in base alle proprie esigenze.

  2. Avviare il set di agenti di raccolta dati:

    logman start CORE_%computername%
    
  3. Arrestare la traccia che verrà archiviata in c:\perflogs\Admin:

    logman stop CORE_%computername%
    

Eseguire Monitor prestazioni in remoto

Per configurare Monitor prestazioni per monitorare il sistema remoto, aprire un prompt dei comandi con privilegi elevati ed eseguire i comandi seguenti:

  1. Creare un set di agenti di raccolta dati:

    Logman create counter <LOGNAME> -u <DOMAIN\USERNAME> * -f bincirc -v mmddhhmm -max 500 -c "\\<SERVERNAME>\LogicalDisk(*)\*" "\\<SERVERNAME>\Memory\*" "\\<SERVERNAME>\Network Interface(*)\*" "\\<SERVERNAME>\Paging File(*)\*" "\\<SERVERNAME>\PhysicalDisk(*)\*" "\\<SERVERNAME>\Process(*)\*" "\\<SERVERNAME>\Redirector\*" "\\<SERVERNAME>\Server\*" "\\<SERVERNAME>\System\*" "\\<SERVERNAME>\Terminal Services\*" "\\<SERVERNAME>\Processor(*)\*" "\\<SERVERNAME>\Cache\*" -si 00:00:02
    

    Nota

    Sostituire <DOMAIN\USERNAME> con le rispettive credenziali utente e <SERVERNAME> con il nome del server problematico.

  2. Avviare l'agente di raccolta dati eseguendo il comando seguente:

    logman start <LOGNAME>
    
  3. Quando il server smette di rispondere, arrestare l'agente di raccolta dati eseguendo il comando seguente:

    logman stop <LOGNAME>
    

Il log Monitor prestazioni si trova nella cartella C:\PERFLOGS. Comprimere quindi il .blg file e caricarlo nell'area di lavoro dopo che si è verificato il problema.

Dopo aver eseguito Monitor prestazioni per uno o due giorni lavorativi, è possibile analizzare il log per verificare se esistono modelli. Quali processi aumentano la CPU? E i processi sono uguali o diversi ogni giorno o ora?

In base ai risultati, andare oltre i passaggi successivi per scoprire di più su cosa li fa picchiare la CPU. Identificare la causa radice tracciando la sequenza di processi, thread, moduli e funzioni.

Esempi di risoluzione dei problemi

Vedere gli esempi seguenti di uso di TroubleShootingScript (TSS) per raccogliere dati e CpuStres per simulare l'attività della CPU.

Uso di TSS

TSS può ottenere una traccia di utilizzo elevato della CPU quando la CPU raggiunge una determinata soglia:

  1. Scaricare TSS ed estrarlo nella cartella C:\tss nel computer interessato.

  2. Da un prompt dei comandi di PowerShell con privilegi elevati eseguire il cmdlet seguente dalla cartella C:\tss .

    .\TSS.ps1 -perfmon general -WaitEvent HighCPU:90 -StopWaitTimeInSec 100
    

    Nota

    Attendere che si verifichi il problema di utilizzo elevato della CPU. Quando l'utilizzo della CPU supera <CpuThreshold>%, continuare a raccogliere dati per una durata di StopWaitTimeInSec settconds (il valore predefinito è 60).

    Di seguito sono riportati altri esempi:

    •  .\TSS.ps1 -PerfMon General -PerfIntervalSec 5 -WaitEvent HighCPU:90
      

      PerfMonrappresenta Monitor prestazioni con un intervallo breve.

    • .\TSS.ps1 -PerfMonLong SMB -PerfLongIntervalMin 11 -WaitEvent HighCPU:90
      

      PerfMonLongrappresenta Monitor prestazioni con un intervallo lungo.

  3. Da un nuovo prompt dei comandi di PowerShell con privilegi elevati eseguire il cmdlet seguente dalla cartella C:\tss .

    .\TSS.ps1 -Stop
    

    Nota

    Se la traccia non si arresta dopo cinque minuti, arrestarla.

TSS supporta i monitoraggi delle prestazioni. È possibile visualizzare i nomi dettagliati dei contatori delle prestazioni eseguendo il .\TSS.ps1 -ListSupportedPerfCounter cmdlet .

Avviare l'acquisizione dei contatori delle prestazioni con il General contatore impostato eseguendo il cmdlet :

.\TSS.ps1 -PerfMon General

Se si desidera modificare l'intervallo per il log delle prestazioni, usare -PerfIntervalSec (l'unità è seconda) o -PerfIntervalMin (l'unità è minuto). Ad esempio, .\TSS.ps1 -PerfMon General -PerfIntervalSec 1 specifica un intervallo di un secondo.

Di seguito sono riportati altri esempi del .\TSS.ps1 -PerfMon <CounterSetName> cmdlet:

  • Avviare Monitor prestazioni con contatori generali (CPU, memoria, disco e così via) e un intervallo di 5 secondi:

    .\TSS.ps1 -PerfMon General -PerfIntervalSec 5
    
  • Avviare Monitor prestazioni (Long) con contatori SMB (contatori SMB e contatori generali) e un intervallo di 11 minuti:

    .\TSS.ps1 PerfMonLong SMB -PerfLongIntervalMin 11
    

È anche possibile farlo con Monitor prestazioni per avviare la traccia quando l'utilizzo della CPU raggiunge una certa quantità, ma è complicato e dispendioso in termini di tempo.

Uso di CpuStres

È possibile usare CpuStres per simulare un'attività di utilizzo elevato della CPU eseguendo diversi thread. Dopo aver tracciato il problema di utilizzo elevato della CPU per sei minuti, Monitor prestazioni mostra le lacune nel grafico seguente, che è un problema:

Screenshot di Monitor prestazioni che mostra le lacune dopo aver tracciato il problema di utilizzo elevato della CPU per sei minuti.

Processore Minimo Massimo Media
% Tempo processore 4.688% 100% 81.605%

Quando si aggiungono contatori per Processore: %ProcessorTime e si esaminano le istanze, si noterà che CPUStres64.exe ha il consumo più elevato. Esistono istanze in cui %Tempo processore ha superato il 100%, raggiungendo circa il 180% nei dati, a indicare picchi significativi.

Screenshot di Monitor prestazioni che mostra CPUStres64.exe è il consumer più alto.

% Tempo processore Minimo Massimo Media
CPUSTRES64 0% 180.309% 19.787%

Screenshot di Monitor prestazioni che mostra le informazioni sui contatori aggiunti.

Controllare la lunghezza della coda del processore, la media di cui è > 10. Si tratta di un problema. Eseguire il drill-down degli utenti che usano % Tempo processore.

Si tratta di una limitazione di Monitor prestazioni. Può solo mostrare così tanti dati.

Contatori delle prestazioni per l'utilizzo della CPU

Per problemi di utilizzo elevato della CPU, controllare prima di tutto l'utilizzo della CPU in Gestione attività. Se l'utilizzo della CPU supera continuamente l'85%, indica che il sistema si trova in un collo di bottiglia della CPU. Ecco l'elenco dei contatori che devono essere controllati:

  • Processore: % tempo processore
  • Processore: % tempo utente
  • Processore: % tempo privilegio
  • Processore: % tempo di interruzione
  • Sistema: Lunghezza coda processore
  • Sistema: chiamate/sec
  • Sistema: commutatori di contesto/sec
  • Processo: Conteggio thread
  • Processo: Conteggio handle

Esaminare i contatori seguenti monitorati per diversi aspetti delle prestazioni:

Componente Aspetto delle prestazioni monitorato Contatori da monitorare
Processore Utilizzo Processore: % tempo processore (tutte le istanze)
Processore: % tempo DPC
Processore: % tempo di interruzione
Processore: % tempo con privilegi
Processore: % tempo utente
Processore Colli di bottiglia Processore: % tempo processore (tutte le istanze)
Processore: % tempo DPC
Processore: % tempo di interruzione
Processore: % tempo con privilegi
Processore: % tempo utente
Processore: interrupt/sec
Processore: DPCs in coda/sec
Sistema: commutatori di contesto/sec
Sistema: Chiamate di sistema/sec
Sistema: Lunghezza coda processore (tutte le istanze)
Nome contatore Metric
Lunghezza coda processore (PQL) Se sono presenti due o più istanze per processore e l'utilizzo della CPU è elevato, controllare i processi per un utilizzo elevato della CPU. Controllare anche i commutatori di contesto, % DPC Time e % Interrupt Time.
% Tempo processore 0-50%: integro.
50-80%: monitoraggio/avviso.
80-100%: critico. Il sistema potrebbe funzionare lentamente.
% DPC Time % Tempo> processore 85% e % tempo DPC> 15%: verificare se sono costantemente superiori a questi livelli. I picchi brevi sono ok.

Ad esempio, solo in un processore con tempo processore del 100% e più del 50% di tempo DPC.
% tempo di interruzione Tempo di interruzione elevato della CPU: più del 30% del tempo di interruzione. Una quantità elevata di % di tempo di interruzione nel processore potrebbe indicare un problema hardware o driver.

Tempo di interruzione cpu molto elevato: più del 50% di tempo di interrupt. Una quantità molto elevata di tempo di interruzione nel processore potrebbe indicare un problema hardware o driver.

Riferimenti

Dichiarazione di non responsabilità sulle informazioni e sulle soluzioni di terze parti

Le informazioni e la soluzione in questo documento rappresentano la visualizzazione corrente di Microsoft Corporation su questi problemi a partire dalla data di pubblicazione. Questa soluzione è disponibile tramite Microsoft o tramite un provider di terze parti. Microsoft non consiglia specificamente alcun provider di terze parti o una soluzione di terze parti che questo articolo potrebbe descrivere. Potrebbero essere presenti anche altri provider di terze parti o soluzioni di terze parti che questo articolo non descrive. Poiché Microsoft deve rispondere a condizioni di mercato mutevoli, queste informazioni non devono essere interpretate come un impegno da parte di Microsoft. Microsoft non può garantire o approvare l'accuratezza di qualsiasi informazione o di qualsiasi soluzione presentata da Microsoft o da qualsiasi provider di terze parti menzionato.

Microsoft non fornisce alcuna garanzia ed esclude tutte le rappresentazioni, le garanzie e le condizioni, sia espressa, implicita o legale. Queste condizioni includono, ad esempio, rappresentazioni, garanzie o condizioni di titolo, non violazione, condizioni soddisfacenti, commerciabilità e idoneità per uno scopo specifico, riguardanti qualsiasi servizio, soluzione, prodotto o qualsiasi altro materiale o informazione. In nessun caso Microsoft sarà responsabile di qualsiasi soluzione di terze parti menzionata in questo articolo.