采购选型 度量有方 服务器性能基准测试通鉴(1)

那时,20世纪90年代的序幕刚刚拉开。

一个名为TPC(Transactionprocessing Performance Council,事务处理性能委员会)的组织无声无息地成立了,而Benchmark(基准测试)这个词也随之正式走上了企业计算的大舞台。

从此,企业级计算平台的性能迈开了可度量的步伐,而企业用户在采购服务器平台的时候,除主观意识之外,理性的光芒开始闪耀。
之后,Benchmark的内涵和范畴在不断演变,时至今日,已经形成了非常丰富、全面的企业计算平台基准测试体系。

天地之间,一切皆可度量。

随着Benchmark在用户端认知度不断提升,无论是成百上千台服务器喧闹运转的大中型数据中心,还是只有几台服务器安静闪动的小机房,量化评价服务器系统的理性光芒在闪耀。
服务器的采购,正在进入理性时代。

用户总希望有一种简单、高效的度量标准,来量化评价服务器系统,以便作为选型的依据。但实际上,服务器的系统性能很难用一两种指标来衡量。

最理想的评估方式,莫过于建立一个接近真实业务应用的操作环境,进行各种压力测试,测算出不同应用环境下服务器系统的响应时间、吞吐量等等,从而对服务器性能做出一个最接近真实状况的评估。

然而,对大多数用户来说,建立准确的压力测试环境是具有一定挑战性的,所以很多时候,在采购服务器的过程中,就需要一个工业标准作为参照物。
那么,有这样的参照物吗?

是的,业界有一个曝光率极高的词–Benchmark,就是服务器的工业标准基准测试,其中包括诸如TPC、SPEC、SAP SD、Linpack和HPCC等在内的众多服务器性能基准测试,可以从处理器性能、服务器系统性能、商业应用性能直到高性能计算机的性能,给出一个量化的评价指标供用户选择。那么,在如此多的标准中,用户该如何选择最适合自身应用环境的评价体系呢?
实际上,这完全取决于用户对于其应用环境的了解。可以说,了解应用性质非常重要,不同的应用,即使属于同一大类,Benhmark的适用性也是因为应用类型的不同而不同的。例如都是数据库系统,也可能因为运算类型的不同而对服务器有不同的要求,所以基准测试的适用性也不同。

第一回:把脉两大基准体系

心中有数,方可游刃有余。

在服务器基准测试体系中,TPC和SPEC是最常用、最普及的两大基准,深入了解其中的涵义和奥秘,对于更好地在服务器采购中运用Benchmark工具相当重要。

第一节:了解TPC系统

PC体系是影响最大的评测基准之一,但有多少用户真正了解其中的含义呢?

TPC(Transaction processing Performance Council,事务处理性能委员会)是由数十家会员公司创建的非盈利组织,总部设在美国。TPC的成员主要是计算机软硬件厂家,而非计算机用户,其功能是制定商务应用基准测试程序的标准规范、性能和价格度量,并管理测试结果的发布。

作为一家非盈利性机构,事务处理性能委员会(TPC)负责定义诸如TPC-C、TPC-H和TPC-W基准测试之类的事务处理与数据库性能基准测试,并依据这些基准测试项目发布客观性能数据。

TPC不给出基准测试程序的代码,而只给出基准测试程序的标准规范。任何厂家或其他测试者都可以根据规范,最优地构造出自己的测试系统(测试平台和测试程序)。为保证测试结果的完整性,被测试者(通常是厂家)必须提交给TPC一套完整的报告(Full Disclosure Report),包括被测系统的详细配置、分类价格和包含5年维护费用在内的总价格。该报告必须由TPC授权的审核员核实(TPC本身并不做审计)。TPC在全球只有不到10名审核员,全部在美国。

TPC推出过11套基准测试程序,分别是正在使用的TPC-App、TPC-H、TPC-C、TPC-W,过时的TPC-A、TPC-B、TPC-D和TPC-R,以及因为不被业界接受而放弃的TPC-S(Server专门基准测试程序)、TPC-E(大型企业信息服务基准测试程序)和TPC-Client/Server。而目前最为"流行"的TPC-C是在线事务处理(OLTP)的基准测试程序,于1992年7月完成,后被业界逐渐接受。

第二节:SPEC关注Java和Web

除了TPC家族,SPEC家族也是广为人知的一大体系。

与TPC体系注重在线处理能力和数据库查询能力不同,SPEC服务器应用性能测试是一个全面衡量Web应用中java企业应用服务器性能的基准测试。

SPEC(the Standard Performance Evaluation Corporation标准性能评估机构)是一个全球性的、权威的第三方应用性能基准测试组织,它旨在确立、修改以及认定一系列服务器应用性能评估的标准。

SPEC服务器应用性能基准测试是一个全面衡量Web应用中java企业应用服务器性能的基准测试。在这个基准测试中,系统模拟一个现代化企业的电子化业务工作,如客户定购查询、产品生产制造管理、供应商和服务器提供商管理等,给系统以巨大的负载,以全面测试运行典型java业务应用的服务器性能水平。

由于它体现了软、硬件平台的性能和成本指标,被金融、电信、证券等关键行业用户作为选择IT系统一项权威的选型基准测试指标。

目前主要包括针对CPU性能的SPEC CPU2000(已有CPU2006,但数据不是很多)、针对Web服务器的SPECweb2005、针对高性能计算的SPEC HPC2002与SPEC MPI2006、针对Java应用的jAppServer2004与JBB2005以及其他针对图形系统、网络和邮件服务器的基准测试指标。

其中CPU2000和web2005两类是被引用最广泛的基准测试指标。

第三节:三种实践模式

成熟的企业,从不盲目相信"国际通用标准",他们总是付出人力、物力、财力,来建立自己的应用测试系统,从而决定服务器选型。

"国际通用标准"的度量可以作为参考值,而不应作为必要条件。尤其是一定要弄清这些流行的度量有什么含义,是在什么样的系统环境中测得的,以及基准程序是否符合企业真实的业务流程和运作模式。

下面就是三种不同的检测模式。

在真实环境中运行实际应用:这是最理想的方式。要求制造商或系统集成商配合将系统(含平台、软件和操作流程)在一个实际用户点真正试运行一段时间。这样,用户不仅能看到实际性能,也能观察到系统是否稳定可靠、使用是否方便、服务是否周到、配置是否足够、全部价格是否合理。

使用用户定义的基准程序:如果第一种方式不可行,用户可以定义一组含有自己实际应用环境特征的应用基准测试程序。业内有两个典型的例子:其一,近年来由于3层应用模型的风靡,SAP SD基准测试获得了众多厂商和用户的认可,于是在很多地方都能看见对SAP基准测试数据的引用;其二,国家税务总局曾经开发自己的基准测试程序,以帮助税务系统进行服务器选型。这种方式在中国尤其重要,因为中国的信息系统有其特殊性。

使用通用基准测试程序:如果前两种均难实行,那么使用如TPC-C之类的通用基准测试程序未尝不可。但用户应当尤其注意–实际应用是否与基准测试程序相符?绝大多数基准测试程序都是在美国制订的,而中国的企事业单位与美国的运作方式常常不一样,在使用TPC-C时,用户应该清楚地知道:自己的应用是否符合批发商模式?事务请求是否与测试模式近似?对响应时间的要求是否那么高?如果都不是,则tpmC值的参考价值就不太大了。那么不妨看看其他的更合适的测试指标,例如SPECweb2005等。

第二回:四大应用中的Benchmark

知己知彼,才能为我所用。

应用种类不同,所适用的Benchmark基准测试也不同。只有做到对应用类型和Benchmark种类心中有数,才能在名目繁多的基准测试中找到能够真正为我所用的项目,从而有效地指导服务器平台采购。这里以高性能运算、在线事务处理能力、Web应用和Java应用四大类企业典型应用为主,介绍了相应"对号入座"的基准测试。

第一节:高性能运算有多"高"?

高性能计算机是一个复杂的系统,很难用几个参数或指标对其进行性能评价。

为此,业界开发了多种标准测试程序试图对高性能计算机进行评定,但这些测试指标通常都是对计算机某一方面进行测试,而不能全面地说明系统的整体性能。

目前,比较常用的几个基准测试中,Linpack侧重于系统浮点峰值运算能力的测试;SPEC CPU2000测试的是单CPU性能及作业吞吐能力;SPEC OMP2001的结果说明了共享内存的计算机使用共享内存并行模式(OpenMP)的并行效率和加速比;STREAM试图对系统的数据访问能力(带宽和延迟)进行定量地评价等。

高性能计算用户的应用千差万别,对计算机系统的要求也是各种各样。所以评价高性能计算机性能的最好方法是用用户自己的应用程序去进行实际的测试,或找到相似应用的商业软件的基准测试结果。这样的评价会更有针对性,也比较客观。比如在制造行业中,常常需要对汽车在高速行驶情况下的气动性能、飞机发动机内气体流动等情况进行分析,相应的商业流体力学分析软件有Fluent、Satr-CD、Power-Flow等。而在石油行业中,比较知名的软件有Platform等。

Linpack主宰TOP500

每年,当全球超级计算机TOP500发布的时候,都会成为业界的关注焦点。名单上起起落落、沉沉浮浮的背后,牵扯着从处理器厂商到系统厂商、软件厂商等等的一长串心跳,对他们来说,名单上的名次就是实力、技术、研发、前瞻性等等多个因素的考量。

那么,TOP500的名次是如何排定的呢?一项名为Linpack的服务器基准测试就是最关键的依据。

作为一种性能计量标准,Linpack基准可以提供详细的描述和多种硬件平台上的性能结果。

Linpack Benchmark中使用的基准测试方法主要用于解算线性方程的密集系统。在TOP500中,就使用了这种版本的基准测试,使用户能够衡量系统的规模并对软件进行优化,使其能够在特定的硬件平台上发挥出最佳的性能。虽然这种性能并不能反映出特定系统的总体性能,但它可以反映出专用系统解算线性方程密集系统的性能。因为这种问题很常见,而且取得的性能非常高,因此良好的性能参数对于峰值性能具有很好的参考意义。

SPECfp2006考察浮点运算

1、CPU基准测试SPEC CPU2006

对于一个高性能计算机来说,用户最关注的就是它的整体运算能力,Linpack能够帮助用户清晰地掌握这个系统的整体能力,而对于单个CPU性能及作业吞吐能力的测试,则靠另外一个基准测试SPEC CPU2006来完成。或者说,对于计算密集类型的工作负荷来说,SPEC CPU2006是一个非常重要的基准测试。

SPEC CPU2006能分别测量计算机系统的整数和浮点性能。其中,SPECint_base2006衡量在单处理器系统上的整数"速度"性能,而SPECfp_base2006则衡量在单处理器系统上的浮点"速度"性能。"整数"部分有12个程序,使用C或C++语言,它们不使用CPU的浮点单元;而"浮点数"分有 17 个程序(原来的CCPECfp2000至右14个程序),使用FORTRAN 77/90和C语言,这些程序的主要运算是浮点数的。

SPECint2006和SPECfp2006的结果以执行时间为准。每个程序的执行时间和一个参考平台(Sun Ultra5/10 300MHz)相比,计算出其倍数。如果执行时间和参考平台相同,结果就是100。如果只花了一半时间完成,结果就是200。"整数"的12个程序的结果,取其平均值,得到的就是SPECint2006的测试结果。"浮点数"的17个程序也是一样。
由于SPEC CPU2006的测试程序都是源代码形式(以保证跨平台测试),所以编译器效率就显得十分重要。SPEC CPU2006规定,测试结果有"Base"和"Peak"两种结果。"Base"测试中,对于编译时的最佳优化参数有所规定(所有的程序都需使用同样的参数,且参数数目不能超过四个),而"Peak"测试则比较宽松。

(1) (2) (3)