什么是正确的性能计数器,以获得一个进程的CPU和内存使用情况?
如何使用.net性能计数器类来获取特定进程的CPU和内存使用情况 ? 还有什么区别
Processor\% Processor Time
和Process\% Processor Time
?
我在这两个之间有点困惑。
从这个职位:
要获取整个PC CPU和内存使用情况:
using System.Diagnostics;
然后在全球声明:
private PerformanceCounter theCPUCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
然后为了获得CPU时间,只需调用NextValue()
方法:
this.theCPUCounter.NextValue();
这会让你的CPU使用率
至于内存使用情况,我也相信同样的事情:
private PerformanceCounter theMemCounter = new PerformanceCounter("Memory", "Available MBytes");
然后为了获得内存使用,只需调用NextValue()
方法:
this.theMemCounter.NextValue();
对于特定的进程CPU和内存使用情况:
private PerformanceCounter theCPUCounter = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName);
其中Process.GetCurrentProcess().ProcessName
是您希望获取有关信息的进程名称。
private PerformanceCounter theMemCounter = new PerformanceCounter("Process", "Working Set", Process.GetCurrentProcess().ProcessName);
其中Process.GetCurrentProcess().ProcessName
是您希望获取有关信息的进程名称。
请注意, 工作集本身可能不足以确定进程的内存占用 – 请参阅什么是专用字节,虚拟字节,工作集?
要检索所有类别,请参阅演练:检索类别和计数器
Processor\% Processor Time
和Processor\% Processor Time
之间的差异在于Processor\% Processor Time
来自PC本身, Processor
是单个进程。 所以处理器的处理器时间将在PC上使用。 进程的处理器时间将是指定的进程使用情况。 有关类别名称的完整说明: 性能监视器计数器
使用性能计数器的替代方法
使用System.Diagnostics.Process.TotalProcessorTime和System.Diagnostics.ProcessThread.TotalProcessorTime属性来计算您的处理器使用情况,如本文所述。
Pelo Hyper-V:
private PerformanceCounter theMemCounter = new PerformanceCounter( "Hyper-v Dynamic Memory VM", "Physical Memory", Process.GetCurrentProcess().ProcessName);