Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida di scenario illustra come usare Monitor prestazioni per raccogliere dati e come usare i dati per limitare il collo di bottiglia che rallenta il computer. Introduce approcci generali e tenta di spiegare i concetti di risoluzione dei problemi.
Usare Monitor prestazioni per registrare i dati sulle prestazioni
Ogni versione completa di Windows include uno strumento posta in arrivo denominato Monitor prestazioni. È possibile utilizzare questo strumento per tenere traccia delle informazioni relative alle prestazioni relative a vari aspetti del sistema Windows usando contatori delle prestazioni integrati in Windows, che forniscono altre informazioni sull'utilizzo dell'unità di elaborazione centrale (CPU) o sull'utilizzo della memoria.
Ogni contatore viene costruito nello stesso modo semplice:
[Performance counter object]\<Instance>\<Counter Name>
Ad esempio:
[Processor Information]\<CPU 0\>\% Processor Time
Per archiviare i dati sulle prestazioni forniti dai contatori, è possibile usare i set di agenti di raccolta dati in Monitor prestazioni. Vedere lo screenshot seguente:
Per creare questi set di agenti di raccolta dati, è possibile usare le interfacce utente grafiche (GUI) o il logman.exe
comando .
Per creare un set di agenti di raccolta dati, eseguire il comando seguente in una finestra del prompt dei comandi con privilegi elevati:
logman.exe create counter PerfLog-15Sec-Contoso -o "c:\perflogs\Contoso_PerfLog-15sec.blg" -f bincirc -v mmddhhmm -max 800 -c "Hyper-V Dynamic Memory Balancer (*)\*" "Hyper-V Hypervisor Virtual Processor(*)\*" "Hyper-V Hypervisor Logical Processor(*)\*" "\LogicalDisk(*)\*" "\Memory\*" "\Cache\*" "\Network Interface(*)\*" "\Paging File(*)\*" "\PhysicalDisk(*)\*" "\Processor(*)\*" "\Processor Information(*)\*" "\Processor Performance(*)\*" "\Process(*)\*" "\Process V2(*)\*" "\Redirector\*" "\Server\*" "\System\*" "\Server Work Queues(*)\*" "\Terminal Services\*" -si 00:00:15
Per avviare il contatore, eseguire il comando seguente in una finestra del prompt dei comandi con privilegi elevati:
logman.exe start PerfLog-15Sec-Contoso
Questo comando genera un monitor simile a "flight box recorder" nel sistema. Il monitoraggio registra i dati sulle prestazioni ogni 15 secondi (vedere -si 00:00:15
per l'intervallo). Ogni volta che viene avviato il set di agenti di raccolta, l'impatto sul sistema deve essere inferiore al 1% e non userà più di 800 megabyte (MB) di spazio sul disco rigido locale. Se si riavvia il computer, è necessario eseguire il comando per avviare nuovamente il monitoraggio.
Per arrestare il contatore, eseguire il comando seguente in una finestra del prompt dei comandi con privilegi elevati:
logman.exe stop PerfLog-15Sec-Contoso
Il set di agenti di raccolta dati segue anche il principio di [Performance counter object]\<Instance>\<Counter Name>
. L'oggetto contatore è denominato "Memoria", perché questo oggetto non ha un'istanza. Il motivo è che c'è una memoria in Windows, ma potrebbero esserci più dischi rigidi o CPU.
È ora disponibile un insieme di agenti di raccolta dati che registra i dati ogni 15 secondi. 15 secondi viene scelto a causa di una limitazione dello strumento usato per analizzare i dati: Monitor prestazioni.
È possibile visualizzare un massimo di 1.000 punti dati all'interno di un grafico. Se l'agente di raccolta dati è configurato per registrare i dati ogni secondo, il grafico può visualizzare solo i dati in 16 minuti e 40 secondi. Se nel log sono presenti più dati, inizia a "riepilogare e combinare" tali punti dati. L'acquisizione viene chiamata acquisizione ad alta densità.
Ciò potrebbe causare una situazione in cui il grafico non mostra numeri accurati. È possibile individuarlo esaminando il grafico e confrontandolo con i valori Minimo o Massimo .
In questo esempio esaminare il contatore % Tempo di inattività dell'istanza _Total per l'oggetto contatore Processore. In base al valore minimo, il grafico dovrebbe raggiungere la linea blu (al 32%), ma non è true. Poiché il numero e il grafico non corrispondono, è necessario verificare il numero di campioni presenti nel periodo visualizzato (22 minuti e 01 secondi). Quando si passa il puntatore sul mouse, viene illustrato il numero di campioni presenti in questo punto dati. Come si può notare, ci sono 10 campioni e quindi lo strumento è costretto a riepilogarli e combinarli così come si tratta di un'acquisizione con un intervallo di un secondo.
Semplificare Windows
Ora che si dispone del log dei contatori delle prestazioni, provare a semplificare Windows in modo da facilitare l'analisi. A tale scopo, suddividere il sistema nei relativi componenti logici: memoria, archiviazione, CPU e rete.
Oltre a eseguire il mapping di alcuni oggetti di monitoraggio delle prestazioni alla risorsa fisica, è importante ricordare che Windows è suddiviso in due aree principali: kernel e modalità utente .
Il kernel fa riferimento al sistema operativo e ai driver (questo include anche il driver del filtro antivirus). Il kernel è rappresentato in Windows da un costrutto logico denominato Processo di sistema, che ha sempre l'ID 4
processo . Per motivi di sicurezza, questa area è fortemente protetta. Anche con strumenti posta in arrivo come Monitor prestazioni, solo poche informazioni possono essere ottenute da esso. Ad esempio, è possibile visualizzare la quantità di pool non di paging in uso, ma non sono disponibili informazioni su chi lo usa.
La modalità utente è la posizione in cui vengono eseguite tutte le applicazioni (appx, servizi ed eseguibili moderni). Con Monitor prestazioni è possibile ottenere informazioni su ogni processo.
Introdurre i 18 contatori più importanti
Per semplificare, le sezioni seguenti introducono i 18 contatori più importanti e le relative soglie, suddivisi in base alle risorse fisiche a cui sono correlati.
Storage
Contatori primari | Healthy | Avviso | Critico |
---|---|---|---|
\LogicalDisk(*)\Avg. Disk sec/Read | < 15 ms | > 25 ms | > 50 ms |
\LogicalDisk(*)\Avg. Disk sec/Write | < 15 ms | > 25 ms | > 50 ms |
\PhysicalDisk(*)\Avg. Disk sec/Read | < 15 ms | > 25 ms | > 50 ms |
\PhysicalDisk(*)\Avg. Disk sec/Write | < 15 ms | > 25 ms | > 50 ms |
Note
I picchi brevi possono essere tollerati. È consigliabile analizzare periodi di latenza più lunghi (più di un minuto o più).
Questi contatori rappresentano latenza. La latenza viene definita in base al tempo trascorso per ottenere le informazioni. Dal punto di vista delle prestazioni del disco, è necessario esaminare più in dettaglio la configurazione. Per un disco rigido normale, invece di un disco rigido a stato solido (SSD), il disco normalmente ha una velocità di rotazione di 5.400 rivoluzioni al minuto (RPM). Ciò significa che il disco gira lo spindle (dove le informazioni vengono archiviate come blocchi) 5.400 volte al minuto. Dovrebbe essere possibile calcolare il tempo necessario per leggere qualsiasi blocco dal disco:
Un blocco / (RPM / 60) = latenza per un blocco
Un blocco / 5400 RPM / 60 = 0,011111 sec = 11 ms
Pertanto, in teoria, il disco dovrebbe essere in grado di leggere qualsiasi blocco entro 11 ms. Se è presente una latenza di ~100 ms
, il disco dovrebbe essere in grado di leggere il blocco almeno otto volte, quindi perché si verifica un ritardo? Il disco è sovraccarico e, in tal caso, chi lo usa?
Per identificare chi lo usa, è ora possibile controllare l'oggetto contatore Process .
Contatori dei processi correlati alle operazioni su disco:
- \Process(*)\Operazioni di lettura I/O/sec (tempi di lettura del disco specifici del processo)
- \Process(*)\Operazioni di scrittura I/O/sec (tempi di scrittura del disco specifici del processo)
È possibile usare questi contatori e provare a correlare l'utilizzo della latenza o del disco con l'utilizzo del processo.
Si passerà al componente fisico successivo.
Memoria
Contatori di memoria virtuale e memoria fisica | Healthy | Avviso | Critico |
---|---|---|---|
\Memory\Pool paged Bytes Pool Nonpaged Bytes | | 0–50% | 60–80% | 80–100% |
\Memory\Available MBytes | > 10% o almeno 4 gigabyte (GB) gratuiti | < 10% | < 1% o minore di 500 MB |
\Memory\% Commit byte in uso | 0–50% | 60–80% | 80–100% |
In questa sezione vengono descritti i contatori seguenti:
- Byte di paging del pool
- Byte non di paging del pool
Questi contatori rappresentano le risorse del kernel condivise dall'intero sistema. Anche se i processi possono richiedere pool di paging e non di paging, questa operazione viene eseguita principalmente dai driver; pertanto, i dati non sono visibili per Monitor prestazioni. Anche se il pool con paging può essere eseguito il paging nel file di pagina, il pool non di paging non può. Tenere presente che queste risorse del kernel dipendono dalle dimensioni della memoria (RAM) di accesso casuale presenti nel sistema. Il limite del pool non di paging è il 75% della RAM e influisce direttamente sui byte disponibili. Available MBytes è la quantità di RAM disponibile per tutti i programmi, incluso il kernel.
Per comprendere l'impatto del processo sull'utilizzo della RAM, è possibile usare il contatore seguente:
Contatore del processo | Commento |
---|---|
\Process(*)\Working Set | Provare a correlare a Available MBytes per identificare il consumer principale della RAM. Il working set viene definito come quantità di RAM (non il file di pagina) usato da un processo in qualsiasi momento. |
Tenere presente che Memory\% Committed Bytes In Use rappresenta la memoria virtuale disponibile in Windows. Questa è la combinazione del file di pagina e della RAM, che può essere visualizzata in Gestione attività nella scheda Prestazioni dopo aver selezionato Memoria:
Questo sistema ha 128 GB di RAM e un file di pagina di 128 GB, quindi la memoria di cui è stato eseguito il commit è 256 GB. È anche possibile esaminare il pool di pagine e la memoria del pool non di paging.
Quando si analizzano i problemi di memoria, tenere presente che entrambe le aree (Kernel e Utente) condividono effettivamente la stessa risorsa fisica. Pertanto, se il computer ha memoria insufficiente, provare a scoprire chi lo usa.
Si passerà alla risorsa fisica successiva.
CPU
Durante la risoluzione dei problemi relativi alle prestazioni della CPU, è necessario suddividere di nuovo il sistema operativo in modalità kernel e utente . Tuttavia, la divisione è più facile da comprendere. La modalità Utente è rappresentata da qualsiasi applicazione o servizio, incluse le applicazioni eseguite in modalità utente, che utilizza cicli cpu e non implica hardware diverso dalla CPU. Se è necessario accedere all'hardware, questo comporta la modalità kernel perché lo strumento deve comunicare con i driver per accedere a GPU, archiviazione o rete.
Di seguito sono riportati alcuni esempi.
- SQL Server esegue un calcolo = Modalità utente
- SQL Server che scrive file di log nel disco = modalità kernel
- File Server che accede alle condivisioni di rete = Modalità kernel
Verranno ora esaminati i contatori principali:
Contatori primari | Healthy | Avviso | Critico |
---|---|---|---|
\Informazioni processore(*)\% Tempo utente (modalità utente) | < 50% | 50–80% | > 80% |
\Informazioni processore(*)\% Tempo con privilegi (modalità kernel) | < 30% | 30–50% | > 50% |
\Informazioni processore(*)\% tempo di inattività | >20% | >10% | <10% |
Anche in questo caso, i picchi brevi sono accettabili, ma se lo si vede per più di un minuto, iniziare l'analisi.
Ogni volta che viene usata una CPU, la CPU utilizza % Tempo utente (modalità utente) o % Tempo con privilegi (modalità kernel). Se si verifica una situazione elevata della CPU (= % tempo di inattività basso), è necessario scoprire chi lo usa esaminando i contatori secondari seguenti:
Contatori secondari | Commento |
---|---|
\Process(*)\% User Time | Tenere presente che potrebbe essere presente più di un processo attivo. |
*\Process()\% Privileged Time** | Tenere presente che sono presenti solo informazioni limitate sul processo di sistema. Il processo di sistema è in genere il driver principale per % Privileged Time perché il processo ospita unità all'interno di questo costrutto logico. Tuttavia, non è limitato a questo. |
100% Processo\% Tempo utente = una CPU. Se si dispone di 16 CPU, l'utilizzo massimo che un processo può raggiungere è 1600 %. Vedere lo screenshot seguente:
In questo esempio è stato usato uno strumento per simulare l'utilizzo della CPU (% tempo utente). È stato limitato l'esecuzione dello strumento solo su quattro CPU (CPU 12, 13, 14 e 15). Quando quattro thread sono attivi, diventa chiaro come tutte le CPU raggiungano il 100% mentre l'applicazione stessa (stress CPU) raggiunge il 400%. Questo esempio illustra la relazione tra l'utilizzo della CPU di Stress CPU e il carico della CPU sulle CPU a cui l'applicazione è stata limitata. Stabilire questo tipo di relazione aiuta a comprendere appieno i processi sottostanti.
Questo ci porta all'ultimo oggetto fisico.
Rete
Poiché Monitor prestazioni è uno strumento locale, è possibile ottenere informazioni di base solo dalla rete. Tuttavia, i seguenti contatori sono ancora utili:
Contatori primari | Healthy | Avviso | Critico |
---|---|---|---|
\Interfaccia di rete(*)\Byte Totale/sec | < 50% | 50–80% | > 80% |
\Interfaccia di rete(*)\Byte inviati/sec | * | * | * |
\Interfaccia di rete(*)\Byte ricevuti/sec | * | * | * |
Note
Altre informazioni sulle celle contrassegnate con simboli a stella (*): il carico di lavoro di \Interfaccia di rete(*)\Byte inviati/sec e \Interfaccia di rete(*)\Byte ricevuti/sec deve dipendere dal ruolo del server. Ad esempio, il numero di byte inviati al secondo è in genere superiore al numero di byte ricevuti al secondo in un server di streaming. Al contrario, il numero di byte ricevuti al secondo è in genere superiore ai byte inviati al secondo in un server di backup che esegue un backup.
I valori sono correlati alla velocità della scheda di rete ed è necessario eseguire il calcolo. In questo caso, tenere presente che la velocità di rete viene misurata in bit e 8 bit = 1 byte. Pertanto, se si dispone di una scheda di rete da 1 GB, la velocità effettiva può raggiungere 125 MB/sec.
Mentre il contatore Byte totali/sec consente di comprendere l'utilizzo complessivo della scheda di rete, gli altri due contatori consentono di sapere se si ricevono o si inviano più dati. Se si dispone di queste informazioni, è possibile confrontarla con il comportamento previsto. Se si vuole analizzare la rete, è necessario un set di strumenti diverso perché sono necessarie tracce end-to-end da entrambi i lati per comprendere appieno il comportamento della rete.
Conclusione
Questa guida di scenario conclude con la suddivisione e i componenti fisici di un sistema Windows. Quando si verifica un collo di bottiglia su qualsiasi componente fisico, il sistema presenta dei problemi. E anche l'applicazione è interessata.
Speriamo che questa guida di scenario possa aiutarti a ottenere una conoscenza di base di Monitor prestazioni e come preparare il sistema per un'acquisizione di "scatola nera", come un registratore di volo. Per ulteriori informazioni sull'analisi dei dati, è possibile contattare Microsoft aprendo un ticket di supporto.