Perfmon 简介
Perfmon(Performance Monitor)是一款 Windows 自带的性能监控工具,提供了图表化的零碎性能实时监视器、性能日志和警报治理。通过增加性能计数器 (Performance Counter) 能够实现对 CPU、内存、网络、磁盘、过程等多类对象的上百个指标的监控。其中,性能日志可定义输入格局为二进制文件、文本文件、SQLSERVER 记录等,以不便后续应用第三方工具进行剖析。
Perfmon 数据收集器应用
Perfmon 反对选择性的监控感兴趣的数据收集器,指标范围广、粒度细,而且反对将监控数据长久化。应用办法:
- Win+ r 关上运行窗口,输出 perfmon 后回车关上 perfmon.exe。
- 开展“数据收集器集”,右键单击“用户定义”,指向“新建”,而后单击“数据收集器集”,将启动“创立新数据收集器集”向导。
- 依照向导一步步创立新的数据收集器。举荐手动创立,抉择本人感兴趣的指标监控。
- 创立好后,通过工具栏的启动按钮能够启动数据收集器。
- 点击工具栏上的进行按钮就能够进行数据收集器。之后,能够在右侧导航栏抉择”报告”,开展“用户定义”,查看报告。
- 报告也能够另存为 csv 文件做进一步剖析。
Perfmon 对过程的监控指标
一般来说,咱们次要关注本人过程的 CPU、内存等性能数据。Perfmon 设置了过程监控罕用指标,这些指标比拟直观地体现了过程的运行状况,是进行利用系统监控或利用零碎跟踪调优的根据。先监控这些指标须要在创立数据收集器的时候抉择监控 process 对象,并且选定对象的实例为想要监控的过程。
上面表格列出了 Process 对象的次要指标:
性能对象 | 计数器 | 提供的信息 |
---|---|---|
Process | % Privileged Time | % Privileged Time 是在特权模式下解决线程执行代码所花工夫的百分比。当调用 Windows 零碎服务时,此服务常常在特权模式运行,以便获取对系统专有数据的拜访。在用户模式执行的线程无法访问这些数据。对系统的调用能够是间接的 (explicit) 或间接的(implicit),例如页面谬误或距离。 |
Process | % Processor Time | % Processor Time 是所有过程线程应用处理器执行指令所花的工夫百分比。指令是计算机执行的根底单位。线程是执行指令的对象,过程是程序运行时创立的对象。此计数包含解决某些硬件距离和陷阱条件所执行的代码。 |
Process | % User Time | % User Time 指解决线程用于执行应用用户模式的代码的工夫的百分比。应用程序、环境分系统和汇合分系统是以用户模式执行的。Windows 的可执行程序、内核和设施驱动程序不会被以用户模式执行的代码损坏。 |
Process | Creating Process ID value | Creating Process ID value 指创立该过程的父过程号。 |
Process | Elapsed Time | 该过程运行的总工夫(用秒计算)。 |
Process | Handle Count | 这个解决当初关上的句柄总数。这个数字等于这个解决中每个线程以后关上的句柄的总数。 |
Process | ID Process | ID Process 指这个解决的特地的辨认符。ID Process 号可重复使用,所以这些 ID Process 号只能在一个解决的寿命期内辨认那个解决。 |
Process | IO Data Bytes/sec | 解决从 I/O 操作读取 / 写入字节的速度。这个计数器为所有由本解决产生的包含文件、网络和设施 I/O 的流动计数。 |
Process | IO Data Operations/sec | 本解决进行读取 / 写入 I/O 操作的速率。这个计数器为所有由本解决产生的包含文件、网络和设施 I/O 的流动计数。 |
Process | IO Other Bytes/sec | 解决给不包含数据的 I/O 操作 (如管制操作) 字节的速率。这个计数器为所有由本解决产生的包含文件、网络和设施 I/O 的流动计数。 |
Process | IO Other Operations/sec | 本解决进行非读取 / 写入 I/O 操作的速率。例如,管制性能。这个计数器为所有由本解决产生的包含文件、网络和设施 I/O 的流动计数。 |
Process | IO Read Bytes/sec | 解决从 I/O 操作读取字节的速度。这个计数器为所有由本解决产生的包含文件、网络和设施 I/O 的流动计数。 |
Process | IO Read Operations/sec | 本解决进行读取 I/O 操作的速率。这个计数器为所有由本解决产生的包含文件、网络和设施 I/O 的流动计数。 |
Process | IO Write Bytes/sec | 解决从 I/O 操作写入字节的速度。这个计数器为所有由本解决产生的包含文件、网络和设施。 |
Process | IO Write Operations/sec | 本解决进行写入 I/O 操作的速率。这个计数器为所有由本解决产生的包含文件、网络和设施 I/O 的流动计数。 |
Process | Page Faults/sec | Page Faults/sec 指在这个过程中执行线程造成的页面谬误呈现的速度。当线程援用了不在主内存工作集中的虚拟内存页即会呈现 Page Fault。如果它在备用表中 (即曾经在主内存中) 或另一个共享页的解决正在应用它,就会引起无奈从磁盘中获取页。 |
Process | Page File Bytes | Page File Bytes 指这个解决在 Paging file 中应用的最大字节数。Paging File 用于存储不蕴含在其余文件中的由解决应用的内存页。Paging File 由所有解决共享,并且 Paging File 空间有余会避免其余解决分配内存。 |
Process | Page File Bytes Peak | Page File Bytes Peak 指这个解决在 Paging files 中应用的最大数量的字节。 |
Process | Pool Nonpaged Bytes | Pool Nonpaged Bytes 指在非分页池中的字节数,非分页池是指零碎内存 (操作系统应用的物理内存) 中可供对象 (指那些在不处于应用时不能够写入磁盘上而且只有分派过就必须保留在物理内存中的对象) 应用的一个区域。这个计数器仅显示上一次察看的值;而不是一个平均值。 |
Process | Pool Paged Bytes | Pool Paged Bytes 指在分页池中的字节数,分页池是零碎内存 (操作系统应用的物理内存) 中可供对象 (在不处于应用时能够写入磁盘的) 应用的一个区域。这个计数器仅显示上一次察看的值;而不是一个平均值。 |
Process | Priority Base | 这次解决的以后根本优先权。在一个解决中的线程能够依据解决的根本优先权进步或升高本人的根本优先权。 |
Process | Private Bytes | Private Bytes 指这个解决不能与其余解决共享的、已调配的以后字节数。 |
Process | Thread Count | 在这次解决中正在流动的线程数目。指令是在一台处理器中根本的执行单位,线程是指执行指令的对象。每个运行解决至多有一个线程。 |
Process | Virtual Bytes | Virtual Bytes 指解决应用的虚拟地址空间的以字节数显示的以后大小。应用虚拟地址空间不肯定是指对磁盘或主内存页的相应的应用。虚拟空间是无限的,可能会限度解决加载数据库的能力。 |
Process | Virtual Bytes Peak | Virtual Bytes Peak 指在任何工夫内该解决应用的虚拟地址空间字节的最大数。 |
Process | Working Set | Working Set 指这个解决的 Working Set 中的以后字节数。Working Set 是在解决中被线程最近触到的那个内存页集。如果计算机上的可用内存处于阈值以上,即便页不在应用中,也会留在一个解决的 Working Set 中。当可用内存降到阈值以下,将从 Working Set 中删除页。如果须要页时,它会在来到主内存前软故障返回到 Working Set 中。 |
Process | Working Set Peak | Working Set Peak 指在任何工夫这个在解决的 Working Set 的最大字节数。 |
监控 CPU
利用 Perfmon 监控过程的 % Processor Time 和 % User Time 这 2 个计数器能够监控其 CPU 应用,剖析 CPU 应用是否存在异样。% Processor Time 记录了过程中应用 CPU 的百分比;% User Time 记录了过程用户模式应用 CPU 的百分比;如果这 2 个值始终较大,或者继续升高,则可能存在 CPU 应用异样的问题。
监控内存
利用 Perfmon 监控过程的 Handle Count、Virtual Bytes 和 Working Set 这 3 个计数器能够监控其内存应用,剖析是否存在内存透露。Handle Count 记录了过程以后关上的句柄个数;Virtual Bytes 记录了过程在虚拟地址空间上应用的虚拟内存大小;Working Set 记录了操作系统为程序过程调配的内存总量,如果这个值一直继续减少,而 Virtual Bytes 却跳跃式地减少,则很可能存在内存泄露问题。