引入
在做性能分析的时候,Windows 中自带的 Performance Monitor 非常有效,可以用来分析一些非常复杂的性能问题。

其他计数器解析:
进程相关计数器
关于进程相关的计数器,建议采用 Process V2,而不是 Process。
Process V2 是对 Process 的增强版本,提供了更精细的数据以及对现代进程特性(例如 UWP、多会话)更好的支持。
计数器 | 含义 | 用法 | 补充说明 |
---|---|---|---|
\Process V2\Working Set - Private | 该进程专有的工作集大小(私有的内存页),不包含可共享内存部分。 | 用于衡量进程在物理内存中真正私有的内存使用量。 | 相比 \Process V2\Working Set,排除了共享内存页,对于诊断高私有内存占用十分有用。 |
\Process V2\IO Other Bytes/sec | 每秒进行的“其他”类型 IO(非读写)的字节数速率。 | 监控控制类、网络类或其他特殊 I/O 的负载及带宽使用情况。 | 这些 I/O 操作不包含实际数据读写,通常用于命令或控制操作,会反映在 Handle、网络通信等操作上。 |
\Process V2\IO Data Bytes/sec | 每秒进行的数据读写(Read/Write)所涉及的字节总数速率。 | 用于监控进程的读写带宽,比如文件读写或网络数据读写的速率。 | 只统计读写操作的字节数,不包含“Other”类型 I/O,对评估进程数据吞吐量有帮助。 |
\Process V2\IO Write Bytes/sec | 进程每秒写入数据的字节数速率。 | 用于监控进程写操作的实时带宽,如文件写入、数据库写入等场景。 | 常与 \Process V2\IO Read Bytes/sec 搭配使用,以评估数据读写比重。 |
\Process V2\IO Read Bytes/sec | 进程每秒读取数据的字节数速率。 | 用于监控进程读操作的实时带宽,如文件读取、流媒体读取等场景。 | 常与 \Process V2\IO Write Bytes/sec 搭配使用,以评估数据读写比重。 |
\Process V2\IO Other Operations/sec | 每秒进行的“其他”类型 I/O 操作次数速率(非读写)。 | 监控进程控制类或非数据读写类 I/O 操作频率,找出高频率的控制操作来源。 | 包含如设备控制、网络控制等操作,数量过高可能表明进程在执行大量的系统调用或网络控制操作。 |
\Process V2\IO Data Operations/sec | 每秒进行的读写(Read/Write)操作次数速率。 | 用于监控进程进行数据读写的操作频率,例如数据库查询写入次数。 | 与 \Process V2\IO Data Bytes/sec 相辅相成,前者衡量次数、后者衡量字节量。 |
\Process V2\IO Write Operations/sec | 每秒进行的写操作(Write)次数速率。 | 用于监控写操作频率,如文件或网络写操作次数。 | 常与 \Process V2\IO Read Operations/sec 搭配使用,以评估读取与写入操作次数之间的差异。 |
\Process V2\IO Read Operations/sec | 每秒进行的读操作(Read)次数速率。 | 用于监控读操作频率,如文件或网络读操作次数。 | 常与 \Process V2\IO Write Operations/sec 搭配使用,以评估读取与写入操作次数之间的差异。 |
\Process V2\Handle Count | 进程当前打开的句柄(Handle)总数。 | 可用于监控进程是否存在句柄泄漏或资源使用过多的问题。 | 包含对文件、线程、同步对象、注册表键等的所有操作句柄。 |
\Process V2\Pool Nonpaged Bytes | 进程使用的非分页内核池的字节数(Nonpaged Pool)。 | 监控进程在内核非分页区域所占的内存资源,防止非分页内存过度使用。 | 非分页内存无法写出到磁盘,会一直驻留在物理内存中,通常由驱动或内核数据结构使用。 |
\Process V2\Pool Paged Bytes | 进程使用的可分页内核池的字节数(Paged Pool)。 | 监控进程对分页内核池的使用情况,排查可能的内核池泄漏。 | 可分页内存在不使用时可以被写出到磁盘,因此通常不会一直驻留在物理内存中。 |
\Process V2\Creating Process ID | 创建该进程的父进程 ID。 | 了解进程的父子关系,用于排查进程派生树或进程管理问题。 | 某些情况下可能显示为 0 或无法获知,具体取决于创建方式及权限等。 |
\Process V2\Process ID | 当前进程的 PID(Process Identifier)。 | 唯一标识进程,用于关联其他计数器或在脚本中对进程进行操作。 | 与操作系统进程调度以及其他性能计数器的对应关系密切。 |
\Process V2\Elapsed Time | 进程自启动到现在的总运行时间。 | 监控进程存活时长,分析进程长时间运行后性能是否衰减。 | 包含了进程处于各种状态(例如等待、挂起)的时间,并非 CPU 占用时间。 |
\Process V2\Priority Base | 进程的基本优先级。 | 判断进程在 CPU 调度中的优先级,识别是否被人为或系统调高/降低过。 | Windows 会根据进程状况等动态调整优先级,Base Priority 为其根本优先级参考点。 |
\Process V2\Thread Count | 该进程当前拥有的线程数量。 | 监控进程的并发规模及线程创建情况,发现线程泄漏或线程过多导致的性能问题。 | 线程在运行时可动态增加或减少,并非固定值。 |
\Process V2\Private Bytes | 该进程私有的虚拟内存总量,不与其他进程共享。 | 监控一个进程的专有内存消耗,可用于衡量进程是否存在内存泄漏。 | 与 Working Set 不同,Private Bytes 包括未实际装载到物理内存的部分,只要是专属于该进程即可计入。 |
\Process V2\Page File Bytes | 该进程使用的页面文件(Page File)大小总量。 | 评估进程将多少内存内容存放在页面文件(虚拟内存)中。 | 当 Page File Bytes 很高时,可能意味着物理内存不足或进程在大量使用虚拟内存。 |
\Process V2\Page File Bytes Peak | 该进程历史上使用的页面文件大小峰值。 | 查看进程在历史上是否出现过高虚拟内存使用峰值,以排查内存不足。 | 可结合当前值判断是否进程最近的内存需求高于以往或者是否在某一时间段出现异常。 |
\Process V2\Working Set | 该进程当前的工作集(物理内存驻留集合)大小,包括共享页面。 | 监控进程在物理内存中的实际驻留大小,观察进程整体的内存负载。 | 若进程使用大量共享 DLL,那么 Working Set 可能与 Private Bytes 差距较大。 |
\Process V2\Working Set Peak | 该进程历史上工作集大小的峰值(包括共享页)。 | 分析进程在历史上是否出现过突发的内存占用尖峰。 | 可辅助排查发生在某段时间的内存高占用情况。 |
\Process V2\Page Faults/sec | 每秒发生的页面错误数,包括软错误和硬错误。 | 监控进程的内存换页压力和可能的抖动情况。 | 软错误(Soft Fault)并不一定会导致磁盘访问,硬错误(Hard Fault)会触发磁盘读写,值过高时说明需要关注内存或磁盘性能。 |
\Process V2\Virtual Bytes | 该进程当前使用的虚拟地址空间总量。 | 监控进程申请的总虚拟地址空间,以发现可能的内存碎片或过度申请问题。 | 值并不代表实际物理内存占用量,只是进程能看到的地址空间大小。 |
\Process V2\Virtual Bytes Peak | 该进程历史上使用的虚拟地址空间峰值。 | 判断进程在历史上是否出现过异常的地址空间分配情况。 | 用于分析进程在特定时间点的内存需求高峰,排查内存溢出或碎片问题。 |
\Process V2% Privileged Time | 进程在特权模式(内核模式)下运行所占 CPU 时间的百分比。 | 分析该进程是否有大量的系统调用或驱动调用,导致 CPU 花费在内核模式的时间占比变高。 | 若该值过高可能意味着驱动或者系统服务调用频繁,也可能是 I/O 密集型任务引起。 |
\Process V2% User Time | 进程在用户模式下运行所占 CPU 时间的百分比。 | 评估进程主要消耗在用户态运算还是内核态运算(可与 % Privileged Time 对比)。 | 对普通用户进程来说,该值通常更高;若 % Privileged Time 也高,则说明进程在内核态和用户态间切换都较为频繁。 |
\Process V2% Processor Time | 进程占用 CPU 总时间的百分比(综合用户态和内核态)。 | 衡量该进程在整体 CPU 资源中所占比重,可与其他进程作对比排查性能瓶颈。 | 理论上 % Processor Time = % User Time + % Privileged Time(在多核系统上此值可能进行按核加总后再与总 CPU 进行对比)。 |
0