获取进程的CPU和内存使用情况的正确性能计数器是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取进程的CPU和内存使用情况的正确性能计数器是什么?相关的知识,希望对你有一定的参考价值。
如何使用.NET PerformanceCounter
类获取特定进程的CPU和内存使用情况?还有什么区别
Processor\% Processor Time
和Process\% Processor Time
?
我对这两者感到有些困惑。
来自this帖子:
要获得整个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
是您希望获得有关信息的进程名称。
请注意,工作集本身可能不足以确定进程的内存占用 - 请参阅What is private bytes, virtual bytes, working set?
要检索所有类别,请参阅Walkthrough: Retrieving Categories and Counters
Processor\% Processor Time
和Process\% Processor Time
之间的区别是Processor
来自PC本身,Process
是每个单独的过程。因此,处理器的处理器时间将在PC上使用。进程的处理器时间将是指定的进程使用情况。有关类别名称的完整描述:Performance Monitor Counters
使用性能计数器的替代方法
使用System.Diagnostics.Process.TotalProcessorTime和System.Diagnostics.ProcessThread.TotalProcessorTime属性来计算您的处理器使用情况,如article所述。
Pelo Hyper-V:
private PerformanceCounter theMemCounter = new PerformanceCounter(
"Hyper-v Dynamic Memory VM",
"Physical Memory",
Process.GetCurrentProcess().ProcessName);
以上是关于获取进程的CPU和内存使用情况的正确性能计数器是什么?的主要内容,如果未能解决你的问题,请参考以下文章