谨慎对待厂商提供的服务器基准测试结果前沿技术
在上一篇文章《管理员必知:服务器基准测试六大步骤》中,我们介绍了服务器性能衡量的标准以及进行服务器性能测试所必须的六大步骤。所有的准备工作都做好之后,我们接下来就开始进行服务器的基准测试吧!
基准测试的概念很容易理解,但是用基准测试获得的数据来提高系统的性能则完全是另外一回事。诸如微软Performance Monitor (PerfMon)之类的基准测试工具使用相当的灵活,但其工具集成的各种功能和繁琐的设置可能会让测试复杂化,并且很难看懂结果。在本文中,我们将介绍在PerfMon中最常见的一些功能,并演示其将如何影响基准测试结果。
内存的分配与设置
给某个应用程序分配太多的内存实际上会影响服务器正在运行的进程的性能。事实上,错误的内存利用率可能会导致系统性能的下降。
在使用PerfMon进行服务器基准测试之前,我们将介绍几个技巧来检测服务器的内存使用情况,以确保内存分配不会影响服务器性能。
Memory:Available Bytes-这个功能检测操作系统(OS)的物理内存总量,并计算服务器上运行所有必须进程和应用程序所需的内存。
Memory:Committed Bytes-追踪运行时的峰值并进行对比。使用这个功能可监测运行波峰和波谷的情况以了解服务器的性能。除了运行进程和程序所需的内存外,你至少得保证4MB或5%以上的可用内存。
Memory:Page Faults/sec--这个功能测量当应用程序试图从本地虚拟内存中读取时发生“不存在”的页面错误。在理论情况下,零是最优的测量数据。任何测量数据都不可能达到零延迟响应时间。注意,Memory:Page Faults/sec这个功能不但记录硬页面错误,还会记录软页面错误。当文件从硬盘读取而非虚拟内存中读取时就会发生硬页面错误。另一方面,物理内存已存在的页面错误终止了进程就会发生软页面错误,但其几乎不会对性能产生影响。
线程与进程监测
注意处理器数量,尤其是试图取得每个处理器的最大线程时。注意“环境切换”发生的次数。
当操作系统(OS)的内核或核心把处理程序从一个线程切换到另一个线程时,就会发生“环境切换”。环境切换应当及时避免,因为每次环境切换都是处理器L1和L2缓存被刷新并重新写入。缓存刷新和再次写入需要宝贵的时间,并降低系统的性能。
Process:Thread Count:Inetinfo--统计Inetinfo运行创建的线程数,并显示最新值。
Thread:% Processor Time:Inetinfo =>Thread #--测量Inetinfo进程中每个线程使用的处理器时间。
Thread:Context Switches:sec:Inetinfo =>Thread#--测量每个处理器或线程池的最大线程数。监测这个参数很重要,其可预防产生大量的环境切换。否则,环境切换会占用内存并失去多线程的优势,而此时的性能将降低而非提高。
测量并分析
遗憾的是,关于服务器和处理器测量方面的内容实在太宽泛了,以致在本文中无法一一分析。但是,在大多数情况下,系统性能和指标测试可分为一下几个类型:
- 内存管理
- 网络能力
- 处理器能力
- 磁盘优化
通过以上的分类,测试工程师能够得到一些可靠的基准测试结果,并利用其以更好地提高整体服务器环境
基准测试的误区
当服务器环境下的所有测试都执行完以后,用记录的数据进行基准和参数评估。
谨慎对待厂商提供的基准测试结果。供应商往往会为了突出自己的产品而调整行业标准的基准测试结果。这就意味着,其产品基准测试结果可能不太适合您独特的环境。例如,假设IT经理要购买应用程序以处理存储在服务器上的用户数据库。该应用程序的测试数据显示其能在 Server 2008 box上运行良好,并有快速的响应时间。尽管这看起来不错,但其未必适合您的运行环境。举例来说,供应商的应用程序是在一个单一的、增强服务器上运行测试的,而你的却是在一个共享资源的虚拟机上运行。
注意,供应商的目的是为了向你推销软件,因此其参数就会有一些水分。这样做的结果就是纸上的参数很高,但可能在真实环境下就会大打折扣。可能大的硬件和软件厂商不会这样做,但较小的经销商普遍都会稍微更改相关的参数。例如,硬件设备在广域网上的VPN链接能力可能有较好的交付时间,因为在基准测试时优化了该硬件。但是,安装到现场之后显示,其速度大多会降低20%—30%。
因此,被推荐的设备或应用程序必须要进行严格的测试、评估。不要只看重一个基准。在进行服务器基准测试时,尽可能多地测试各个元件。不要只是看重一个因素,如CPU速度等。观察服务器各个因素的运行情况以让工程师更加了解服务器在各种环境下的整体运行效果,这样有助于追踪并纠正将来业绩方面的问题。
注意基准服务供应商。如果你计划将基准测试和指标测试进行外包的话,一定要实现进行调查、评估。很多时候,著名的咨询公司都不遵守甚至无视最基本的科学方法。例如,小型服务器和应用程序取样规格、缺乏变量控制、有限的测试结果重复性、测试软件少以及硬件数值偏差等。当然远远还不止这些。寻找数值极限,例如,SQL服务器上运行的方式应当优于其使用的硬件。
含混不清的硬件规格也是一个危险信号。如果供应商只是列出了硬件——如双核处理器、4 GB RAM、512 MB显卡等——但却没有提供关于硬件的详细介绍,那么你也应当注意。考虑计算出基准测试中每个变量的微小细节。在这种情况下,处理器的类型是什么?安装的是什么类型的RAM以及显卡型号是什么?所有这些细节都会产生不同的结果。
需要注意的一点是,每一个环境都是独特的,并有其自己的特定需求。使用类似PerfMon工具进行基准测试是一个有无数变量的持续过程,而这些变量毫无疑问都将影响到您的测试结果数据。通过规划测试并遵循可靠的科学方法,测试工程师可以更精确地评估硬件和软件的运行情况。如果测试得当,良好的基准分析可以为提高服务器架构性能提供参考信息。