服务器性能是不能凭主观意识去判定的,即使一台服务器状态良好,IT工程师们也需要一台机器测量,明确衡量标准,和衡量其性能。几乎在每一种情况下,基准都是用来测量和监测服务器性能的。本文提供了一个服务器指标和基准测试的概述。
了解服务器的度量和基准测试
服务器测量标准和基准测试技术并非新的概念,其实早在许多年前就已提出来,并用于测试早期的一些计算机系统。但是,设计基准测试以衡量服务器性能其本身就是一门完整的科学。我们的想法是这样的:对服务器的预期工作负载执行一个模拟运行过程。在执行运行过程并计时。然后在不同的系统上执行完全相同的测试并对比结果。
由于服务器体系结构先进,它变得更加难以在不同的计算机系统通过简单地分析确定其性能,因此,度量和基准测试开始出现了。
我们都使用Windows任务管理器,看看某个应用程序或进程影响着我们的内存或CPU使用率。这是度量测试,尽管在一个非常简单的水平。与Windows任务管理器的问题是,它并没有说明如何一台机器的真正效果。分层缓存子系统,自定义应用程序,定制硬件,海量数据库,非统一内存和同时多线程处理器已经作出了现代计算系统的性能产生巨大影响。
“科学”的服务器性能基准测试
服务器性能通常不会由一个因素的影响,因此服务器的性能进行测试应类似于一个科学实验位。最好的方式来进行服务器的性能测试之一是利用在分析的科学方法。这个方法是一个六步的过程,包括观察,初步假设,预测,测试/控制和测试的最终结果即一个理论和结论。那么结论是支持最好的证据收集在运行测试集。无论是最佳和最小的服务器性能水平也得到了同样的证据,是在这个过程中收集的。
1、观察:我们假设系统管理员购买了一台服务器,现在看看它的最佳性能。第一步是确定服务器预期任务。其将作为一个虚拟平台还是运行一个专门的应用程序?确定这些问题之后,就可以开始基准测试了。切记,测量标准和基准测试将根据测试内容和使用的设备而有所变化。例如,如果作为数据库系统可能会强调处理器测试,而用于网络服务系统的话可能会突出网络性能。
2、假设:在这个步骤,工程师设定一个基准目标。假设什么或者测试需要完成什么?简单地进行一个度量测试将得出一些试验结果,但是没有方向或明确的目标的话,这些结果可能是无用的。为测试创建一个基本的目标,并且所有的测试方法都围绕这个目标。例如,工程师可能会设法测试其占用的内存以让应用程序处于最佳运行状态。他或她可能因此推测,给定“X”内存大小可以达到最佳工作负载。这可以立足于以前的研究,供应商提供的基准或其他的来源。确保你的假设是可测试的。也就是说,不要提出一个只是基于数据的而基准测试却无法证实的假设。
3、预测:接下来,对服务器基准测试做一个大体预测。假设该设备将被作为一个专门的应用服务器。系统管理员能够预测,为工作负载增加额外的核心,设备性能将提升,同样,应用程序的性能也将会改善。在某些情况下,工程师甚至可以预测改善的比例,并希望通过基准测试进行验证。
4、环境控制:变量设置。例如,可能要给服务器分配一些核心。此时,管理员每次应只更改一个设置,直到他或她能够接受在此基础上的性能变化。工程师可能需要给服务器设置为6GB的内存,并测试其与其他设备相互配合的情况(CPU、影像、硬盘以及相关联的设备)。设置不同的变量,包括修改处理器设置,但其他设置都处于最初状态。
5、测试:变量都设置好之后,现在开始进行测试。从基准线开始进行测试(已知的起点),并有系统地调整服务器设置。每个测试序列都会有一个结果,记录结果以便以后引用。在这种情况下,一个测试序列可看做是一次硬件设置更改。每应用一次新的设置,都必须重新进行测试并记录结果。一旦有足够的运行周期,工程师应该有一份完整的数据以完成他们的推论。
6、推论和结论:进行测试并确认应用程序的实际性能以及给定预计资源或设置后的性能。例如,在只有一半数量的预期核心后,确定应用程序的最佳运行效果。从这点起,确定核心与其他当前变量(所需的内存大小、当前运行的应用程序数量、软件升级/服务包等)结合给服务器提供的最佳性能。注意,任何变量的改变都需要进一步实验。
服务器性能基准测试的概念十分简单,但如何进行基准测试并获得有价值的数据,就是另外一回事了。微软的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公司的技术总监,该公司在中国,欧洲与美国均设有分支机构。
原文:
- http://www.searchdatacenter.com.cn/showcontent_51106.htm
- http://www.searchdatacenter.com.cn/showcontent_51103.htm