Linux教程

四、操作系统:windows计数器

本文主要是介绍四、操作系统:windows计数器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.  Performancecouonter

Windows自带的性能监视工具

https://blog.csdn.net/weixin_31635001/article/details/119404730?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2

1.1. 系统(System)

1.1.1.  Context Switches/sec:每秒上下文切换次数

每秒上下文切换次数

指计算机上的所有处理器从一个线程切换到另一个线程的综合速率。

当正在运行的线程主动放弃处理器时,发生上下文切换,优先级更高的就绪线程将占先,或在用户模式和特权(内核)模式间切换以使用执行或子系统服务。

它是在计算机所有处理器上运行的所有线程的Thread\Context Switches/sec(每秒线程/上下文切换次数)总和,可用切换次数来计算。系统和线程对象上有上下文切换计数器。

此计数器显示最后两次采样期间观察到的值差除以采样间隔时间所得到的值。

 

阀值:按照通常的规律,context switching速率小于5000/秒/CPU是不需要担心的。如果Context Switching速率达到15000/秒/CPU的话就是一个制约因素了。

 

含义:当一个高优先级的线程取代一个正在运行的低优先级线程,或者高优先级线程阻塞的时候就会发生Context Switching。大量的Context Switching可以发生在许多线程拥有相同的优先级的情况下,这通常表示有太多的线程竞争CPU,如果你没有看到太高的处理器使用率而且发现Context Switch非常低,那么表示线程被阻塞。

 

1.1.2.  Processor Queue Length:处理器队列的瞬时长度

处理器队列的瞬时长度(以线程数为单位)

如果不同时启动线程计算器,则此计算器始终为0。

所有处理器都使用一个队列,线程在该队列中等待处理器周期。

此长度不包括当前正在执行的线程,一般情况下,如果处理器队列的长度一直超过2,则表示处理器堵塞,此值为瞬时计数,不是一段时间的平均值。

(参考值:<=处理器个数+1)

         研究系统处理器瓶颈,查看System\Processor Queue Length计数器的值,当该计数器的值大于CPU数量的总数1时,说明产生了处理器阻塞。在处理器的%Process Time值很高时一般都伴随着处理器阻塞,但产生处理器阻塞时,Processor\%Process Time计数器的值并不一定很大,此时就是必须查看处理阻塞的原因。

         %DPC Time是另一个需要关注的内容,该计数器值越低越好。在多处理器系统中,如果该值大于50%并且Processor\%Processor Time值非常高,则考虑加入一个网卡来提高性能。

阀值:平均值持续大于2那么表示CPU存在瓶颈

含义:如果就绪的任务超过处理能力线程就会被放进队列。处理器队列是就绪但是未能被处理器执行的线程的集合,这是因为另外一个线程正在执行状态。持续或者反复发生2个以上的队列则明确的表示存在处理器瓶颈。你也能通过减少并发取得更大的吞吐量。

 

可以结合Processor/% Processor Time来决定增加CPU的话你的程序是否能够受益。即使在多处理器的电脑上,对于CPU时间也是单队列。因此,在多处理器电脑上,Processor Queue Length (PQL)的值除以用来处理负载的CPU个数。

 

如果CPU非常忙(90%以上的使用率),PQL的平均值也持续大于2/CPU, 这是应该存在CPU瓶颈而且能够从更多的CPU中受益。或者,你可以减少线程的数量以及增加应用程序层的队列。这会引起少量的Context Switching,但是少许的Context Switching对于减少CPU负载是有好处的。PQL大于2但是CPU使用率却不高的的常见原因是对CPU时间的请求随机到达而且线程却从处理器申请到不对称的CPU时间。这意味着处理器并不是瓶颈,而你的线程逻辑是需要改进的。

 

 

1.1.3. File Data Operations per second:文件数据读写操作速率

指计算机向文件系统设备发出读写操作的速率。它不包括文件控制操作。

 

1.2. CPU(Processor_Total处理器)

1.1.1.  % Processor Time:CPU利用率

CPU利用率

可以查看处理器是否处于饱和状态,如果该值持续超过95%,就表示当前系统的瓶颈为CPU,可以考虑增加一个处理器或更换一个性能更好的处理器。

(参考值:<80%)

阀值:处理器的阀值一般设为85%

含义:这个计数器是处理器活动的主要指标。高数值并不一定是坏事,但是如果其他处理器相关的计数器(比如% Privileged Time 或者 Processor Queue Length线性增加的话,高CPU使用率就值得调查了

查看每个CPU的Processer\%Processor Time和Processor\%User Time 和 Processor\%Privileged Time

1.1.2.  %User Time:非核心操作消耗的CPU时间

指系统的非核心操作消耗的CPU的时间

如果该值较大,可以考虑是否能通过算法优化等方法降低该值。

如果服务器是数据库,Processor\%User Time值大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。

1.1.3.  % Interrupt Time:中断时间百分比

中断时间百分比

指处理器在采样间隔期间接收和维修硬件中断的时间。

该值是生成中断的设备(如系统时钟、鼠标、磁盘驱动器、数据通信线路、网卡和其他外设)活动的间接指标。

在中断期间,正常的线程执行将暂停。大多数系统时钟每10毫秒中断一次处理器,创建中断活动背景。在中断期间,暂停正常线程执行。

此计数器显示平均繁忙时间在采样时间内所占的百分比。

阀值:取决于处理器

含义:这个计数器表示处理器接收处理硬件中断所使用的时间比例。这个值间接指出产生中断的硬件设备活动,比如网络变化。这个计数器显著增加的话表示硬件可能存在问题。

1.1.4.  % Privileged Time:特权时间百分比

特权时间百分比

指进程中的线程在特权模式下执行代码所花时间的百分比。

在调用Windows系统服务时,该服务通常在特权模式下运行,以便访问系统专有数据。在用户模式下执行的线程无法访问这些数据。对系统的调用可以是显式的,也可以是隐式的,例如页面错误或中断。

与某些早期操作系统不同,Windows除了使用用户模式和特权模式这种传统保护方法外,还使用进程边界来保护子系统。除了在进程中的特权时间内出现,Windows代表应用程序执行的某些操作还可能出现在其他子系统进程中。

阀值:如果数值持续大于75%就表示存在瓶颈

含义:这个计数器表示一个线程在特权模式下所使用的时间比例。当你的程序调用操作系统的方法(比如文件操作,网络I/O或者分配内存),这些操作系统的方法是在特权模式下运行的

 

1.1.5.  %DPC Time:处理器在网络处理上消耗的时间

处理器在网络处理上消耗的时间,该值越低越好。

1.1.6.  Interrupts/sec:每秒接收和处理中断的数量

指处理器平均每秒接收和处理硬件中断的数据。

不包括单独计数的DPC,此值是生成中断的设备(如系统时钟、鼠标、磁盘驱动器、数据通信线路、网络接口卡和其他外围设备)活动的间接指示。这些设备在完成任务或需要注意时,通常会中断处理器。中断期间,正常执行的线程将挂起。大多数系统时钟每隔10毫秒会中断一次处理器,从而创建后台中断活动。

         该计数器显示最后两次采样中观察到的值再除以采样间隔持续时间之后的差。

 

1.3. 进程 (Process_Total)

1.3.1.  Private Bytes:进程无法与其他进程共享的字节数量

进程无法与其他进程共享的字节数量。

该计数器的值较大时,有可能是内存泄露的信号。

Work set:最近处理线程使用的内存页

进程分析方法:

  1. 查看进程的%Processor Time值,每个进程%Processor Time值反映出进程所消耗的处理时间。将不同进程所消耗的处理器时间进行对比,可以容易地看出具体哪个进程在性能测试过程中消耗了最多的处理器时间,从而可以据此针对应用进行优化
  2. 查看每个进程产生的页面失效
  3. 了解进程的Process\Private Bytes

1.4. 内存 (Memory)

1.4.1.  Available Mbytes:可用内存 MB 数

可用内存 MB 数

指可供计算机上的进程运行时使用的物理内存量,以 MB,而不是 Memory\Available Bytes (可用内存字节数) 中使用的字节为单位。它是通过将填零内存、可用内存和备用内存列表上的空间量相加进行计算。可用内存是指可以使用的内存; 填零内存是指用零填充以防止后面的进程看到前面进程所用数据的内存页; 备用内存是指在磁盘路径上从进程工作区 (其物理内存) 释放,但仍可以被重新调用的内存。此计数器不显示平均值,只显示最后观察到的值。

(参考值:>=10%)

要监视内存不足的状况,请从以下的对象计数器开始:

• Memory\ Available Bytes:可用内存字节数

• Memory\ Pages/sec

1.4.2.  Cache Bytes:缓存字节数

是 Memory\System Cache Resident Bytes (内存/系统缓存驻留字节数)、Memory\System Driver Resident Bytes (内存/系统驱动程序驻留字节数)、Memory\System Code Resident Bytes (内存/系统代码驻留字节数) 和 Memory\Pool Paged Resident Bytes (内存/分页池驻留字节数) 计数器的总和。此计数器不显示平均值,只显示最后观察到的值。

1.4.3.  Committed Bytes:确认字节数

是指以字节为单位的确认虚拟内存量。确认内存是指在磁盘分页文件上预留了空间的物理内存。每个物理盘上可以有一个或多个分页文件。此计数器不显示平均值,只显示最后观察到的值。

1.4.4.  System Cache Resident Bytes:系统缓存驻留字节数

是文件系统缓存中可分页操作系统代码的大小 (以字节为单位)。该值只包括当前的物理页面,不包括当前未驻留的虚拟内存页面。它等于任务管理器中显示的系统缓存值。因此,该值可能会比文件系统缓存使用的实际虚拟内存量要小。该值是 Memory\System Code Resident Bytes (内存/系统代码驻留字节数) 的一部分,后者表示当前在物理内存中的所有可分页操作系统代码。此计数器不显示平均值,只显示最后观察到的值。

1.4.5.  Pool Nonpaged Bytes:非分页池中的字节数

非分页池是一种系统内存区域,操作系统组件在完成其指定任务时在此获得空间。非分页池页面不能退出到分页文件,但是这些页面一经分配就可一直位于主内存中。

1.4.6.  Pool Paged Bytes:字节池分页数

是指分页池的大小 (以字节为单位)。分页池是系统内存 (操作系统使用的物理内存) 中的一个区域,用于存放不使用时可以写入磁盘的对象。Memory\Pool Paged Bytes (内存/分页池字节数) 的计算方式与 Process\Pool Paged Bytes (进程/分页池字节数) 的不同,因此可能不等于 Process\Pool Paged Bytes\_Total (进程/分页池字节数/总数)。此计数器不显示平均值,只显示最后观察到的值。

1.4.7.  Pages/sec 从磁盘读取的或写入磁盘的页面数

指为解决引用时不在内存中的页面的内存引用问题,从磁盘读取的或写入磁盘的页面数。这是 Pages Input/sec 和 Pages Output/sec 的和。此计数器中包括代表系统高速缓存访问应用程序文件数据的分页流量。此值还包括传递到/来自非高速缓存映射内存文件的页数。如果您关心内存压力过大问题 (即系统失效) 和可能产生的过多分页,则这是值得考虑的主要计数器。

(参考值:00~20)

 

1.4.8.  Page Input/sec:每秒写入硬盘的页数

表示为了解决硬错误而写入硬盘的页数

(参考值:>=Page Reads/sec)

 

1.4.9. Page Reads/sec:每秒页面读取次数

是指为解决页面硬故障而读取磁盘的速率。它显示读取次数,而不考虑每次读取时检索的页面数。当一个进程引用虚拟内存中的页面,而此页面不在工作集中或位于物理内存中的其他位置,并且必须从磁盘检索时,就会发生页面硬故障。此计数器是引起系统级延迟的故障的主要指标。它包括为解决文件系统缓存 (通常由应用程序请求) 和非缓存映射内存文件中的故障而执行的读取操作。比较 Memory\Pages Reads/sec (每秒内存/页面读取次数) 与 Memory\Pages Input/sec (每秒内存/页面输入次数) 的值可以确定每个操作读取的平均页面数量。

 

1.4.10.      Page Faults/sec :每秒错误的页面数

是指处理器中页面错误的计数。当进程引用虚拟内存页面,而该页面不在其位于主内存的工作集当中时,将出现页面错误。如果某页面位于待机列表中(因此它已位于主内存中),或者它正在被共享该页面的其他进程所使用,则页面错误不会导致该页从磁盘中取出。

1.5. 物理盘 (PhysicalDisk_Total)

1.5.1.  Disk Transfers/sec :每秒磁盘传输率

是指磁盘上的读写速率。

1.5.2.  Split IO/Sec :每秒 IO 分割率

报告磁盘的 I/O 分割成多个 I/O 的速率。分割 I/O 可能是因为请求的数据太大,无法放入单个 I/O 或者因为磁盘碎片太多。

1.5.3.  Avg. Disk Queue Length :平均磁盘队列长度)

是指在采样间隔期间所选磁盘的平均排队读取和写入请求数。

(<=磁盘数的2倍)

1.5.4.  Avg. Disk Bytes/Transfer :平均磁盘传送字节数

是指在写入或读取时传入或传出磁盘的平均字节数。(<=磁盘数的2倍)

1.5.5.  % Idle Time :空闲时间百分比)

报告采样间隔期间磁盘空闲时间的百分比。

1.5.6.  %Disk Time:处理时间所占百分比

是指选定的磁盘驱动器忙于处理读或写请求的已用时间所占百分比。

%Disk Time:表示磁盘驱动器为读取或写入请求提供服务所用的时间百分比,如果只

有%Disk Time比较大,硬盘有可能是瓶颈。

磁盘I/O分析方法

1)      计算每磁盘的I/O数。每磁盘的I/O数可用来与磁盘的I/O能力进行对比,如果经过计算得到的每磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。

2)      与Processor\Privileged Time合并进行分析。如果在Physical Disk计数器中,只有%Disk Time值较大,其他值都比较适中,则硬盘可能会是瓶颈。若几个值都比较大,且数值持续超过80%,则可能是内存泄露。

3)      根据Disk sec/Transfer进行分析。一般来说,定义Transfer数值小于15毫秒为优秀,介于15~30毫秒之间为良好,30~60毫秒之间为可接受,超过60毫秒则需要考虑更换硬盘或硬盘的RAID方式

 

这篇关于四、操作系统:windows计数器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!