在“过程”中哪个性能计数器?类别返回进程实例的内存大小

本文关键字:进程 返回 实例 内存 过程 性能计数器 | 更新日期: 2023-09-27 17:49:16

我写了一个监控当前运行进程的应用程序。

在下面的代码片段中,我得到了"Process"类别中的所有实例。

   var category = new PerformanceCounterCategory("Process");
   var instanceNames = category.GetInstanceNames();

稍后,我得到了单个实例的所有类别。它是这样的。

   var counters = category.GetCounters(instanse);

我看到这个类别中的每个实例包含28个计数器。在计数器列表下面。

%处理器时间
%用户时间
%特权时间
虚拟字节峰值
虚拟字节
页面错误/秒
工作集峰值
工作集
页文件字节峰值
Page File Bytes
私有字节
线程数
优先级基地
运行时间
ID过程
创建进程ID
池分页字节
非分页字节池
处理数
IO读操作/秒
IO写操作/秒
IO数据操作/秒
IO其他操作/秒
IO读字节/秒
IO写字节/秒
IO数据字节/秒
IO其他字节/秒
工作集- Private

所以问题。哪个计数器提供有关当前实例所使用的内存的信息?
我认为这是一个简单的问题,但我找不到答案。如果有人告诉我,我会很感激的。

如果我们假设这个"工作集":

ProcessName: SkypeC2CPNRSvc | ProcessId: 2500进程:
组:Process |进程:SkypeC2CPNRSvc |名称:工作集|值:311296

该值的计算方法如下:prfc.NextValue()/1024
在这个进程的任务管理器中,我看到316K

在“过程”中哪个性能计数器?类别返回进程实例的内存大小

"Working Set"。"工作集-私有"answers"私有字节"都是描述当前进程使用的内存的计数器。

你可以看到这个链接来很好地讨论不同之处:

什么是私有字节,虚拟字节,工作集?

我将使用TraceEvent,启动一个实时会话,并使用keywork 0x40 (KERNEL_MEM_KEYWORD_MEMINFO_EX)激活提供程序Microsoft-Windows-Kernel-Memory

现在Windows用这些数据每0.5s触发一次事件:

Count, ProcessID, WorkingSetPageCount, CommitPageCount, VirtualSizeInPages, PrivateWorkingSetPageCount

按您需要的方式解析它们