¿Cuál es el contador de rendimiento correcto para obtener el uso de la CPU y la memoria de un proceso?

¿Cómo puedo obtener el uso de CPU y memoria de un proceso particular usando la clase .NET PerformanceCounter ? Y también ¿cuál es la diferencia entre

Processor\% Processor Time y Process\% Processor Time ¿ Process\% Processor Time ?

Estoy un poco confundido entre estos dos.

De esta publicación:

Para obtener la CPU completa y el uso de memoria de la PC:

 using System.Diagnostics; 

Luego declara globalmente:

 private PerformanceCounter theCPUCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); 

Luego, para obtener el tiempo de CPU, simplemente llame al método NextValue() :

 this.theCPUCounter.NextValue(); 

Esto te dará el uso de la CPU

En cuanto al uso de la memoria, se aplica lo mismo, creo:

 private PerformanceCounter theMemCounter = new PerformanceCounter("Memory", "Available MBytes"); 

Luego, para obtener el uso de la memoria, simplemente llame al método NextValue() :

 this.theMemCounter.NextValue(); 

Para un proceso específico CPU y uso de memoria:

 private PerformanceCounter theCPUCounter = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName); 

donde Process.GetCurrentProcess().ProcessName es el nombre del proceso sobre el que desea obtener la información.

 private PerformanceCounter theMemCounter = new PerformanceCounter("Process", "Working Set", Process.GetCurrentProcess().ProcessName); 

donde Process.GetCurrentProcess().ProcessName es el nombre del proceso sobre el que desea obtener la información.

Tenga en cuenta que Working Set puede no ser suficiente por sí solo para determinar la huella de memoria del proceso ; consulte ¿Qué es un byte privado, un byte virtual, un conjunto de trabajo?

Para recuperar todas las Categorías, consulte Tutorial: Recuperar categorías y contadores

La diferencia entre Processor\% Processor Time y Process\% Processor Time is Processor es desde la propia PC y Process es por proceso individual. Entonces, el tiempo del procesador del procesador sería el uso en la PC. El tiempo del procesador de un proceso sería el uso de procesos especificado. Para una descripción completa de los nombres de las categorías: Contadores del monitor de rendimiento

Una alternativa al uso del contador de rendimiento

Use las propiedades System.Diagnostics.Process.TotalProcessorTime y System.Diagnostics.ProcessThread.TotalProcessorTime para calcular el uso de su procesador como se describe en este artículo .

Pelo Hyper-V:

 private PerformanceCounter theMemCounter = new PerformanceCounter( "Hyper-v Dynamic Memory VM", "Physical Memory", Process.GetCurrentProcess().ProcessName);