用户在选用计算机系统硬件平台时总是希望有一种简单、高效的度量标准,能够量化计算机系统的性能,以此作为选型的依据。然而,目前计算机系统的性能很难用一两种度量来评价,任何度量都有其优缺点。尤其是当使用者对性能度量了解不深时,很容易被引入一些误区,甚至推演出错误的结论。本文即以最近两年多屡见于国内报章和网络等媒体的TPC委员会的TPC-C和tpmC为例,帮助用户走出某些认识误区。
认识TPC-C和tpmC
tpmC值在国内外被广泛用于衡量计算机系统的事务处理能力。但究竟什么是tpmC值呢?tpmC这一度量也常被误写为TPM或TPMC,甚至与TPC-H等其他指标混为一谈。
TPC(Transaction Processing Performance Council,事务处理性能委员会)是由数十家会员公司创建的非盈利组织,总部设在美国。TPC的成员主要是计算机软硬件厂家,而非计算机用户,它的功能是制定商务应用基准程序(Benchmark)的标准规范、性能和价格度量,并管理测试结果的发布。
TPC不给出基准程序代码,只给出基准程序标准规范(Standard Specification)。任何厂家或其它测试者都可以根据规范,最优地构造出自己的测试系统(测试平台和测试程序)。为保证测试结果的完整性,被测试者(通常是厂家)必须提交给TPC一套完整的报告(Full Disclosure Report),包括被测系统的详细配置、分类价格和包含五年维护费用在内的总价格。该报告必须由TPC授权的审核员核实(TPC本身并不做审计)。TPC在全球只有个位数的审核员,全部在美国。
TPC推出过八套基准程序,分别是正在使用的TPC-A、TPC-B、TPC-C、TPC-D((Decision Support)和TPC-W,以及因为不被业界接受而放弃的TPC-S(Server专门测试基准程序)、TPC-E(大型企业信息服务测试基准程序)和TPC-Client/Server(顾名思义,CS架构不再流行,这个测试基准自然也不复存在)。其中A和B已经过时,不再使用;而目前最为“流行”TPC-C是在线事务处理(OLTP)的基准程序,于1992年7月完成,后被业界逐渐接受。
TPC-C使用三种性能和价格度量,其中性能由TPC-C(吞吐率)衡量,单位是tpmC(tpm,transactions per minute);C指TPC中的C基准程序。它的定义是每分钟内系统处理新订单个数。TPC-C还经常以系统性能价格比的方式体现,单位是$/tpmC,即以系统的总价格(单位是美元)/tpmC数值得出。
要注意的是,在处理新订单的同时,系统还要按表1的要求处理其它4类事务请求。通常而言,新订单请求不可能超出全部事务请求的45%,因此,当一个系统的性能为1000tpmC时,它每分钟实际处理的请求数是2000多个。
解读tpmC
从TPC-C的定义不难知道,这套基准程序是用来衡量整个IT系统的性能而不是评价服务器或某种硬件系统的标准,而且tpmC数值的高低直接受到各个环节的影响,表2大概可以说明系统设置对tpmC测试的影响。此处的“IT系统”包括服务器、外设(如硬盘或RAID)、服务器端操作系统、数据库软件、客户端及其操作系统、数据库软件和网络连接等。因此,如何解读tpmC数值会因不同的采购需求有非常大的差异。
以服务器为例。在很多厂家的TPC测试系统中,服务器的价格只是系统总价格的25%或更小,而硬盘的价格有可能占到总价格的30%以上,因为TPC-C要求被测系统必须保存180天的事务记录(这一趋势从一些最新的TPC-C测试结果来看,会愈演愈烈)。如果同样的服务器被用到用户的环境中,厂家报的tpmC值就意义不大,因为用户的实际系统与厂家原来用于TPC测试的系统大不一样。当同样的主机用在不同的系统中时,tpmC值可能有相当大的变化,现在很多用户还没有意识到这一点。
而对于曾经痴迷在tpmC数值中的用户而言,他们需要清楚地知道,实现tpmC高性能的代价他们是否能够承受,毕竟TPC-C都是很复杂的基准程序,做一个严格的测试非常消耗资源,厂商通常不会说出花费的金钱和时间。
实际上,因为tpmC受系统优化影响较大,业界对于是否应该在测试中进行优化向来争议破多。1993年, 当时三大IT公司的专家就对OLTP性能测试的优化提出了反对意见。DEC的 Jim Gray (现为TPC-C委员会专家) 与Walt Kohler 、天腾公司(TANDEN)的Charles Levine 和IBM的Steve Kiss共同发表了对OLTP性能测试指标是否应该进行人为优化的看法:
“一个好的性能测试指标是不会依赖于特殊情况下的优化.最理想的情况应该是:一个测试指标在测试过程中所表现出的性质和能力, 以及对测试所做的优化能够确实提供对现实世界中用户实际应用的性能改进。
“然而,事与愿违,某些厂商迫于标准测试指标所带来的巨大市场压力,他们花费巨大的精力在如何改进(TPC-C)测试结果而又降低价格,而全然不顾他们(厂商)所做的这一切优化究竟是否给用户带来了真实的利益(性能、性价比)。”
相信实践:检验真理的最佳方式
众所周知,国外的大企业从不相信任何“国际通用”的度量,而是花相当精力,比如预算的5%,使用自己的应用来测试系统,从而决定选型。“国际通用”的度量可以作为参考值,而不应作为必要条件。
而国内用户在决定采用任何一种性能和价格度量时,一定要弄明白该度量的定义,以及它是在什么系统配置和运行环境下得到的,如何解释它的意义等。下面我们讨论三种不同的评价方式。
在真实环境中运行实际应用
要求制造商或系统集成商配合将系统(含平台、软件和操作流程)在一个实际用户点真正试运行一段时间。这样,用户不仅能看到实际性能,也能观察到系统是否稳定可靠、使用是否方便、服务是否周到、配置是否足够、全部价格是否合理。用这种方式得到的度量值常常具有很明确和实际的含义。
使用用户定义的基准程序
如果第一种方式不可行,用户可以定义一组含有自己实际应用环境特征的应用基准程序。
使用通用基准程序
如果前两种均难实行,那么使用如TPC-C之类的通用基准程序未尝不可。但用户应当尤其注意——实际应用是否与基准程序相符?绝大多数基准程序都是在美国制订的,而中国的企事业单位与美国的运作方式常常不一样(也不可能一样)。在使用TPC-C时,我们应该清楚地知道:我的应用是否符合批发商模式?事务请求是否与测试模式近似?对响应时间的要求是否那么高?如果都不是,则tpmC值的参考价值就不太大了。
综上所述,国内用户在衡量IT系统时,最好建立一个真实的试点,因为实际应用环境是检验计算机系统的最好标准。更重要的是,各行业应该建立符合自己实际应用的基准程序和测试标准,国家税务总局的做法值得提倡。国家有关部门应该建立独立的测试中心,制定跨行业、符合中国企事业运作模式的性能测试标准(据笔者所知,中国软件评测中心似乎去年在网游行业建议了类似的评测标准)。