基准测试系列技巧:巧用PerfMon工具

日期: 2011-07-31 作者:Bill Kleyman翻译:陈德文 来源:TechTarget中国 英文

本文是服务器基准测试系列文章的第二篇。相关内容见第一篇服务器基准测试最佳实践以及第三篇服务器基准测试工具与压力测试。   服务器性能基准测试的概念十分简单,但如何进行基准测试并获得有价值的数据,就是另外一回事了。微软的Performance Monitor(PerfMon),是款十分灵活的基准测试工具,但其内置的供各种丰富计数器和设置参数可能让测试变得更加复杂,甚至使测试结果难以解释。

通过本文,我们将介绍PerfMon在基准测试中最常用的计数器,并深入了解它们是如何影响实际测试的。   内存分配与一般内存设置   如果给某个应用程序分配过多内存,可能影响到服务器上其它进程的性能。实际上,内存利……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

本文是服务器基准测试系列文章的第二篇。相关内容见第一篇服务器基准测试最佳实践以及第三篇服务器基准测试工具与压力测试

  服务器性能基准测试的概念十分简单,但如何进行基准测试并获得有价值的数据,就是另外一回事了。微软的Performance Monitor(PerfMon),是款十分灵活的基准测试工具,但其内置的供各种丰富计数器和设置参数可能让测试变得更加复杂,甚至使测试结果难以解释。通过本文,我们将介绍PerfMon在基准测试中最常用的计数器,并深入了解它们是如何影响实际测试的。

  内存分配与一般内存设置

  如果给某个应用程序分配过多内存,可能影响到服务器上其它进程的性能。实际上,内存利用不当将给整体系统性能带来消极影响。

  在利用PerfMon进行服务器基准测试时,可利用以下计数器来验证内存分配是否影响到服务器整体性能:

  • Memory::Available Bytes——该计数器显示操作系统可使用物理内存与服务器进程及应用程序运行所需内存总和比较的结果。
  • Memory:Committed Bytes——该计数器显示的结果会随时间推移而变化,需要追踪记录以了解某段时间内的负载峰值活动。可以通过追踪Committed Bytes中峰值与谷值所出现的时间了解服务器是如何运行的。需确保可用内存(available memory)比提交的内存(committed memory)至少多4MB或5%以上。
  • Memory:Page Faults/sec——该计数器记录某应用程序尝试从被标识为“不存在(not present)”的虚拟内存位置读取数据时产生的页面错误。大多数情况下,0是最理想的测量结果。任何高于0的测量值都意味着响应时间的延迟。记住,Memory:Page Faults/sec测量值为硬页面错误和软页面错误总和。硬页面错误发生在当某个文件需要从硬盘而不是虚拟内存中获取时。与此相反,软页面错误发生在某已解决的页面错误,数据在物理内存的其他位置被找到,虽然有中断处理器,但对性能的影响微乎其微。

  基准测试线程与进程监控

  注意留心处理器的几个重要计数器,尤其在当你尝试最大化每个CPU的线程数时。留心“上下文交换(context switches)”发生的次数。

  “上下文交换”发生在内核或操作系统核心把进程从一个切换至另一个时。需要避免上下文交换状况发生,每次上下文交换都会使处理器清空L1和L2缓存并重新填装。缓存刷新与重填将浪费宝贵的时间并降低系统性能。

  • Process:Thread Count:Inetinfo——记录由Inetinfo进程所创建的线程数并显示最新数值。
  • Thread:% Processor Time:Inetinfo =>Thread #——测量Inetinfo进程所属线程消耗的处理器时间总量。
  • Thread:Context Switches:sec:Inetinfo =>Thread#——测量每处理器或线程池的最大线程数。监控这个计数器十分重要,可以防止因过多上下文交换而的造成内存损失,如果内存损失过高,增加线程的优势也将不复存在,这里存在一个平衡点,一旦打破平衡,系统性能将不会提升,反而会降低。

  基准测试的测量与分析

  不幸的是,进程与服务器指标有着异常广泛的内容——我们无法在此文中一一例举。尽管如此,就大部分情况下,系统性能和指标测试可被划分为以下几类:

  • 内存管理
  • 网络容量
  • 处理器性能
  • 磁盘优化

  测试工程师应该可以通过以上这些分组,获得可靠的基准测试结果,并利用这些数值对整个服务器环境加以改善优化。

  了解基准测试所面临的挑战

  在服务器环境中完成的任何测试,相关基准测试与指标评价报告通常都会附带一些注意事项。

  1、警惕供应商所提供的基准测试结果。供应商们倾向于将产品按一般照行业标准进行基准测试。这意味着官方提供的基准测试文档或白皮书可能不适用你所处的环境。例如,我们假设某IT经理计划采购一款软件,以实现将用户数据信息库存储在服务器上。有参数显示该软件在Windows Server 2008上运行的稳定,而且响应也很迅速。虽然这听起来不错,但未必适合当前的环境。举个例子,如果该指标是供应商在一台独立并增强配置的服务器上进行测试的结果,而你的环境却是共享宿主资源的虚拟机,会发生什么情况呢?记住,供应商的目的是把软件卖给你,所以他们会利用一些“作弊”手段,让基准测试的分数看起来很美好。这样做可以提高书面上的数据,但可能会让事情在真实环境中变得更糟。虽然大型硬件和软件供应商不屑于此,但某些规模较小的销售公司确实会在这些数据上做些手脚。举例来说,某台硬件号称能够满足通过WAN实现VPN连接,并能获得较理想的速度,因为系统已经经过基准测试并进行了优化。但在实际部署上线后,该设备在速度性能上却明显下降了20%-30%。所以,对那些依赖性高,承载关键任务的设备或软件,需要进行严谨和尽职的调查。

  2、永远不要只关注一项测试指数。在进行服务器基准测试时,因尽可能的涉及多种组件。不要只关注其中一项因素,如CPU速度。关注服务器中各项组件的行为,可以让工程师更为全面的了解整体系统在不同环境下是如何运行,这样可以便于在未来快速定位与修正性能问题。

  3、留心基准测试服务提供商。如果你正计划将基准和指标测试进行外包,确保你已经做了足够详尽的调查。很多时候,即使是最著名的咨询公司也会无视或不遵循基本的科学方法。这包括但不限于,小型服务器与应用程序样本大小,缺乏变量控制,结果的重复性有限以及软件硬件上的数值偏差。查找极端数值,如SQL Server测试后发现数值比预期的还高,这很可能与测试采用的硬件有关。模糊的硬件需求定义也是个陷阱。如果产商列出硬件却没有提供任何详细清单——如双核CPU,4GB内存,512MB显卡——你需要对此额外留心。在弄清基准测试的微小细节时,每个变量都很重要。在这种情况下,该用那种类型的处理器?需要使用哪种型号的内存以及何种型号的显卡?所有这些细节都大有不同。

  关键在于意识到每个环境都是独一无二的,都有属于自己的特定需求集。利用如PerfMon一类的工具进行指标测试,是个持续的过程,其中涉及大量参数,这些参数都可以在很大程度上影响测试数据的结果。通过规划测试方案并遵循严谨的科学方法,测试管理员可以更加准确地评估硬件与软件的运行状况。如果进展顺利,一个好的基准测试分析所提供的信息对改进服务器架构与性能可以起到很大的帮助。

  关于作者:Bill Kleyman,MBA,MISM,一名狂热的技术专家,在网络基础设施管理领域具有丰富的经验。其工程经验包括大型虚拟化环境部署以及商业网络设计与实施。目前他是World Wide Fittings公司的技术总监,该公司在中国,欧洲与美国均设有分支机构。

作者

Bill Kleyman
Bill Kleyman

暂无

翻译

陈德文
陈德文

TechTarget中国特约编辑

相关推荐