性能计数器(counter)是描述服务器或操做系统性能的一些数据指标。计数器在性能测试中发挥着“监控和分析”的关键做用,尤为是在分析系统的可扩展性、进行性能瓶颈的定位时,对计数器的取值的分析很是关键。但必须说明的是,单一的性能计数器只能体现系统性能的某一个方面,对性能测试结果的分析必须基于多个不一样的计数器。web 与性能计数器相关的另外一个术语是“资源利用率”。该术语指的是系统各类资源的使用情况。为了方便比较,通常用“资源的实际使用/总的资源可用量”造成资源利用率的数据,用以进行各类资源使用的比较。算法 性能测试以内存篇(windows)数据库 要监视内存不足的情况,请从如下的对象计数器开始:windows · Memory/ Available Bytes缓存 · Memory/ Pages/sec服务器 Available Bytes剩余的可用物理内存,单位是兆字节(参考值:>=10%)。代表进程当前可以使用的内存字节数。Pages/sec 代表因为硬件页面错误而从磁盘取出的页面数,或因为页面错误而写入磁盘以释放工做集空间的页面数。网络 若是 Available Bytes 的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。若是 Pages/sec 的值为 20 或更大,那么您应该进一步研究页交换活动。Pages/sec 的值很大不必定代表内存有问题,而多是运行使用内存映射文件的程序所致。多线程 操做系统常常会利用磁盘交换的方式提升系统可用的内存量或是提升内存的使用效率。下列四个app 指标直接反映了操做系统进行磁盘交换的频度。 当处理器在内存中读取某一页出现错误时,就会产生缺页中断,也就是 page Fault。若是这个页 位于内存的其余位置,这种错误称为软错误,用Transition Fault/sec 来衡量;若是这个页位于硬盘上,必须从硬盘从新读取,这个错误成为硬错误。硬错误会使系统的运行效率很快将下来。Page Faults/sec这个计数器就表示每秒钟处理的错误页数,包括硬错误和软错误。
必须同时监视 Available Bytes、Pages/sec 和 Paging File % Usage,以便肯定是否发生这种状况。若是正在读取非缓存内存映射文件,还应该查看缓存活动是否正常。 Cathe Bytes 内存泄露 · Memory/Available Bytes · Memory/ Committed Bytes 若是您怀疑有内存泄露,请监视 Memory/Available Bytes 和 Memory/ Committed Bytes,以观察内存行为,并监视你认为可能在泄露内存的进程的 Process/ Private Bytes、Process/ Working Set 和Process/ Handle Count。若是您怀疑是内核模式进程致使了泄露,则还应该监视 Memory/ Pool Nonpaged Bytes、Memory/ Pool Nonpaged Allocs 和 Process(process_name)/ Pool Nonpaged Bytes。 private Bytes 检查过于频繁的页交换 因为过多的页交换要使用大量的硬盘空间,所以有可能将致使将页交换内存不足,这容易与致使页交换的磁盘瓶颈混淆。所以,在研究内存不足不太明显的页交换的缘由时,您必须跟踪以下的磁盘使用状况计数器和内存计数器: · Physical Disk/ % Disk Time · Physical Disk/ Avg.Disk Queue Length 例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。若是页面读取操做速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。可是,若是队列长度增长的同时页面读取速率并未下降,则内存不足。 要肯定过多的页交换对磁盘活动的影响,请将 Physical Disk/ Avg.Disk sec/Transfer 和 Memory/ Pages/sec 计数器的值增大数倍。若是这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。若是长时间发生这种状况,那么您可能须要更多的内存。 研究程序的活动 接下来,检查正在运行的程序致使的过多的页交换。若是可能,请中止具备最高工做集值的程序,而后查看页交换速率是否有显著变化。若是您怀疑存在过多的页交换,请检查 Memory/ Pages/sec 计数器。该计数器显示因为页面不在物理内存中而须要从磁盘读取的页面数。(注意该计数器与 Page Faults/sec 的区别,后者只代表数据不能在内存的指定工做集中当即使用。) 性能测试之处理器篇(windows) 监视“处理器”和“系统”对象计数器能够提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。须要包含下列内容:
该计数值用于体现服务器总体的处理器利用率,对多处理器的系统而言,该计数值体现的是全部CPU的平均利用率。若是该值的数值持续超过90%,则说明整个系统面临着处理器方面的瓶颈,须要经过增长处理器来提升性能。 要注意的是,因为操做系统自己的特性,在某些多CPU系统中,该数据自己并不大,但此时CPU之间的负载情况极不均衡,此时也应该视做系统产生了处理器方面的瓶颈。
Processor/ % User Time是指系统的非核心操做消耗的CPU时间,若是该值较大,能够考虑是否经过优化算法等方法下降这个值。若是该服务器是数据库服务器,Processor/ % User Time大的缘由极可能是数据库的排序或是函数操做消耗了过多的CPU时间,此时能够考虑对数据库系统进行优化。
%Total Processor Time %Processor Time 观察处理器使用状况的值 要测量处理器的活动,请查看 Processor/ % Processor Time 计数器。该计数器显示处理器忙于执行非空闲线程所耗时间的百分比。 检查处理器使用时,请考虑计算机的角色和所完成工做的类型。根据计算机进行的工做,较高的处理器值意味着系统正有效地处理较重的工做负载或正在努力维持。例如,若是正在监视用户的计算机,而且该计算机用于计算,计算程序可能容易使用 100% 的处理器时间。即便这会形成该计算机中其余应用程序的性能受到影响,但能够经过改变负载来解决。 另外一方面,在处理许多客户请求的服务器计算机中,100% 左右的值表示这些过程在队列中,正在等待处理器时间,而且形成瓶颈。如此持续高层次的处理器使用对服务器而言是没法接受的。 考察处理器瓶颈 进程的线程所须要的处理器周期超出可用周期时,处理器瓶颈将逐步显示出来。能够创建较长的处理器队列,而且系统响应会受到影响。处理器瓶颈两种常见的缘由是 CPU 限制程序和产生过多中断的驱动程序或子系统组件。 要决定是否因为对处理器时间的要求较高而存在处理器瓶颈,请查看 System/ Processor Queue Length 计数器。队列中包含两个或更多的项目则代表存在瓶颈。若是多个程序进程竞争大多数处理器时间,安装更快速的处理器会提升吞吐量。若是正在运行多线程的进程,附加处理器会有所帮助,可是请注意,附加处理器可能只有有限的益处。 此外,跟踪计算机的服务器工做队列当前长度的 Server Work Queues/ Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。 要决定中断活动是否形成瓶颈,请观察 Processor/ Interrupts/sec 计数器的值,该计数器测量来自输入/输出 (I/O) 设备的服务请求的速度。若是此计数器的值明显增长,而系统活动没有相应增长,则代表存在硬件问题。 也能够对生成中断的磁盘驱动器、网卡和其余设备活动的间接指示器监视 Processor/ % Interrupt Time 时间。 注意 要检测可能影响处理器性能的硬件问题,例如 IRQ 冲突,请观察 System/ File Control Bytes/second 的值。 监视多处理器系统 要观察多处理器计算机的效率,请使用下列附加计数器。
性能测试之磁盘篇(windows) 监测对象:PhysicalDisk 每磁盘的I/O数可用来与磁盘的I/O能力进行对比,若是通过计算获得的每磁盘I/O数超过了磁盘标称的I/O能力,则说明确实存在磁盘的性能瓶颈。 下表给出了每磁盘I/O的计算公式:
Disk Bytes/sec 提供磁盘系统的吞吐率。 计数器反映磁盘完成请求所用的时间。较高的值代表磁盘控制器因为失败而不断重试该磁盘。这些故障会增长平均磁盘传送时间。通常来讲,定义该值小于15ms最为优异,介于15-30ms之间为良好,30-60ms之间为能够接受,超过60ms则须要考虑更换硬盘或硬盘的RAID方式了
Average Disk Bytes/Transfer 值大于 20 KB 表示该磁盘驱动器一般运行良好;若是应用程序正在访问磁盘,则会产生较低的值。例如,随机访问磁盘的应用程序会增长平均 Disk sec/Transfer 时间,由于随机传送须要增长搜索时间。 性能测试之网络篇(windows) 监测对象:Network Interface Network Interface/Bytes Total/sec为发送和接收字节的速率(包括帧字符在内)。能够经过该计数器的值判断网络链接速度是不是瓶颈,具体操做方法是用该计数器的值与目前的网络带宽进行比较。
Byte Total/sec
性能测试之进程篇(windows) 查看进程的%Processor Time值 每一个进程的%Processor Time反映进程所消耗的处理器时间。用不一样进程所消耗的处理器时间进行对比,能够很容易的看出具体是哪一个进程在性能测试过程当中消耗了最多的处理器时间,从而能够据此针对应用进行优化。 查看每一个进程产生的页面失效 能够用每一个进程产生的页面失效(经过Process/Page Failures/sec计数器得到)和系统的页面失效(可经过Memory/Page Failures/sec计数器得到)的比值,来判断哪一个进程产生了最多的失效页面,这个进程要么是须要大量内存的进程,要么是很是活跃的进程,能够对其进行中的分析。 了解进程的Process/Private Bytes Process/Private Bytes是指进程所分配的没法与其余进程共享的当前字节数量。该计数器主要用拉判断进程在性能测试过程当中有无内存泄漏。 例如:对于一个IIS之上的web应用,咱们能够重点监控inetinfo进程的Private Bytes,若是在性能测试过程当中,该进程的Private Bytes计数器值不断增长,或是性能测试中止后一段时间,该进程的Private Bytes仍然持续在高水平,则说明应用存在内存泄漏。 (备注:进程分析方法用到的计数器主要有:Process/%Processor Time、Page Failures/sec、Page Failures/sec、Private Bytes)
相关连接: ① 内存映射文件机制 内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此以后进程操做文件,就像操做进程空间里的地址同样了,省去了读和写I/O的时间。 好比使用memcpy等内存操做的函数。这种方法可以很好的应用在须要频繁处理一个文件或者是一个大文件的场合,这种方式处理IO效率比普通IO效率要高。 利用内存映射文件您能够认为操做系统已经为您把文件所有装入了内存,而后您只要移动文件指针进行读写便可了。这样您甚至不须要调用那些分配、释放内存块和文件输入/输出的API函数,另外您能够把这用做不一样的进程之间共享数据的一种办法。运用内存映射文件实际上没有涉及实际的文件操做,它更象为每一个进程保留一个看得见的内存空间。至于把内存映射文件当成进程间共享数据的办法来用,则要加倍当心,由于您不得不处理数据的同步问题,不然您的应用程序也许极可能获得过期或错误的数据甚至崩溃。 内存映射文件自己仍是有一些局限性的,譬如一旦您生成了一个内存映射文件,那么您在那个会话期间是不可以改变它的大小的。因此内存映射文件对于只读文件和不会影响其大小的文件操做是很是有用的。固然这并不意味着对于会引发改变其大小的文件操做就必定不能用内存影射文件的方法,您能够事先估计操做后的文件的可能大小,而后生成这么大小一块的内存映射文件,而后文件的长度就能够增加到这么一个大小。咱们的解释够多的了,接下来咱们就看看实现的细节:
|
转自:http://blog.csdn.net/oobibigo/article/details/3341591