Xperfview: Qual è la differenza tra il campionamento della CPU e utilizzo della CPU?

StackOverflow https://stackoverflow.com/questions/3567093

  •  01-10-2019
  •  | 
  •  

Domanda

Questa domanda riguarda xperf e xperfview, utilità che sono parte di Windows Performance Toolkit (a sua volta parte del SDK di Windows 7.1).

Confronto tra due grafici, "campionamento CPU da filo" e "utilizzo della CPU da filo", ci sono molte differenze che non capisco. Userò audiodg.exe come esempio.

  1. Nel pulldown Fili, v'è un solo filo per audiodg sul grafico CPU campionamento; L'utilizzo della CPU grafico indica vari fili audiodg.

  2. Entrambi i grafici hanno un asse Y marcato "% Utilizzo", ma le misure differiscono. Tipicamente l'utilizzo% per un dato filo inferiore sul grafico campionamento CPU che sul grafico di utilizzo della CPU.

  3. Il peso CPU campionamento Tabella riepilogativa spettacoli e il peso% per ogni modulo / processo. Se carico simboli, posso scavare abbastanza in profondità nel processo audiodg. La CPU Scheduling Aggregato Tabella riassuntiva (lanciato dalla CPU Usage grafico) mostra l'utilizzo della CPU e della% di CPU - Il peso non è disponibile. (Al contrario, utilizzo della CPU non è disponibile sul tabella riassuntiva CPU campionamento.) Non posso scavare profondo nelle audiodg -. Solo vedo il filo principale e filato di pochi ntdll.dll

  4. I numeri per ogni processo nelle colonne utilizzo% della CPU e della% di peso sono sempre diverse. A volte essi differiscono di oltre il 75%.

Quindi le mie domande ... che cosa è la misura affidabile di utilizzo della CPU qui? Non sono i numeri di utilizzo della CPU derivati ??da campioni della CPU? Non dovrebbero i numeri si riferiscono in qualche modo?

È stato utile?

Soluzione

xperf fa fanno un po 'di confusione, questo è la mia comprensione di quello che sta succedendo:

  • dati di esempio CPU, abilitati con la bandiera del kernel PROFILO. dati di esempio CPU vengono raccolti ad un certo intervallo regolare, e registra le informazioni su ciò che la CPU stava facendo in quel momento (ad esempio il processo, filo Id, e stack di chiamate al momento del campione.)
  • Dati cambio di contesto, abilitati con la bandiera del kernel CSWITCH. Questo registra i dati circa ogni cambio di contesto che accade (per esempio, che è stato acceso in / out e le stack di chiamate.)

campionamento CPU filo mostra il numero di eventi di profilo che sono stati registrati per ciascun filo, con aggregazione su un certo intervallo di tempo per la durata della traccia. Per esempio, se audiodg stava eseguendo il 10% del tempo per 2 secondi, ci si aspetterebbe di vedere circa 10 "utilizzo%" più di quel tempo. Tuttavia, poiché questo si basa sul campionamento, è possibile che ad ogni evento di esempio, le discussioni da un altro processo è capitato di essere in esecuzione -. In altre parole, il 10% è stato 'perso' dagli eventi di esempio

CPU Usage da filo è calcolata utilizzando i dati di interruttore contesto. Il 'utilizzo' è la quantità di tempo tra l'essere contesto attivata e poi fuori (e, naturalmente, questi dati sono aggregati su qualche piccolo intervallo).

Ci sono vantaggi ad ogni dati:

  • di campionamento CPU effettivamente vi dirà quello che il thread è fa al momento del campione perché raccoglie stack di chiamate durante l'esecuzione di il filo. Le informazioni context switch solo vi dirà quando un thread viene acceso dentro o fuori, ma nulla tra.
  • Contesto informazioni interruttore vi dirà esattamente quanto tempo ogni thread avuto modo di eseguire. Questi dati sono corretti. Campionamento, naturalmente, è solo probabilistico.

Quindi, per rispondere alla tua domanda, il grafico utilizzo della CPU è "più precisa" per capire quanto tempo ogni thread stava eseguendo. Tuttavia, non esclude l'uso dei dati di campionamento, perché può essere molto più utile per capire dove le discussioni che sono stati effettivamente passano il loro tempo! Per i dati di campionamento della CPU, la tabella riassuntiva è più prezioso perché vi mostrerà le pile. Per i dati di utilizzo della CPU, il grafico è probabilmente più utile rispetto alla tabella di riepilogo.

Speranza che aiuta!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top