c# - ¿Cuál es el contador de rendimiento correcto para obtener el uso de la CPU y la memoria de un proceso?
memory-management cpu-usage (2)
¿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 this 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 article describe en este article .
Pelo Hyper-V:
private PerformanceCounter theMemCounter = new PerformanceCounter(
"Hyper-v Dynamic Memory VM",
"Physical Memory",
Process.GetCurrentProcess().ProcessName);