在“过程”中哪个性能计数器?类别返回进程实例的内存大小
本文关键字:进程 返回 实例 内存 过程 性能计数器 | 更新日期: 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
按您需要的方式解析它们