1.问题的提出
不管你实施怎样的一个系统,你可能都考虑过这样的一系列问题:
我应该采购怎样的设备?
我的系统性能如何?
我的系统能够承受多少用户?
我的系统能够承受多少并发?
性能问题会在何时出现?
我将在何时升级?
显然,回答这些问题并非那么简单,更多的人是根据经验给出一个经验值,用来评估系统.
但是在大系统设计过程中,经验显示是不足够的,你必须拿出足够的证据来说明你的架构,你的系统必须在理论上能够满足用户的需求.
到这里我们已经看到,一个最重要的内容被引入了,那就是:用户需求.
这符合经济规律,有需求才有发展,需求推动一切.于是也就有了今天我们要讨论的标准测试(benchmark).
最近一段时间,一直参与一个大系统的方案设计、规划与测试,现在把一些心得写出来,供大家参考.
2.TPC组织
关于Benchmark测试,最有名的就是TPC(Transaction Processing Performance Council,事务处理性能委员会)组织了.你可以在其
官方站点 www.tpc.org 获得更为详细的信息.TPC组织成立于1988年,由一些在计算机领域提供软硬件系统或者相关解决方案的原厂商组
成,会员从成立之初的8家公司发展到目前的50余家,IBM、NCR、HP、Oracle、Microsoft等国际著名公司均是其会员。总部设在美国,
并对全世界开放,但迄今为止,TPC组织绝大多数会员都是美、日、西欧的计算机软硬件大公司.
作为一家非盈利性机构,事务处理性能委员会(TPC)负责定义诸如TPC-C、TPC-H和TPC-W基准测试之类的事务处理与数据库性能基准
测试,并依据这些基准测试项目发布客观性能数据。TPC基准测试采用极为严格的运行环境,并且必须在独立审计机构监督下进行。委员会
成员包括大多数主要数据库产品厂商以及服务器硬件系统供应商。
TPC不给出基准程序的代码,而只给出基准程序的标准规范(Standard Specification)。
注意,这里我们提出在Benchmark测试中最重要的一个内容:标准规范.
你可能听到很多人这样对你说,TPC-C值不具有任何实际意义,任何测试都无法模拟真实生产环境中的负荷情况。
这总说法自然有其道理,但是未免片面了,或者说这种说法实际上曲解了TPC-C等标准测试的本意.
我们说Benchmark测试中最重要的是标准规范,也就是说,其实工具等因素是不重要的,只要大家都是用同一标准规范、同一工具进行系统
测试, 那么测试结果也就具有了比较意义.
从这个意义出发,benchmark测试实际上就成了各个厂商展示其技术实力的舞台.任何厂家或其它测试者都可以根据TPC组织公布的规范标准,
最优地构造出自己的系统,使用最优的平台和最高效的应用程序. 所以你可能听Oracle这样攻击过DB2,Oracle说:IBM进行的TPC测试使用的
都是Oracle数据库,而不是他们自己的DB2. 其实这个说法也是片面的,TPC-C测试的是OLTP的性能,而我们知道DB2在数据仓库方面才是真正
强大的.
为了保证测试结果的客观性,被测试者(通常是厂家)必须提交给TPC一套完整的报告(FullDisclosure Report),包括被测系统的详细配置、分
类价格和包含五年维护费用在内的总价格.该报告必须由TPC授权的审核员核实(TPC本身并不做审计). 现在全球只有几 个审核员,全部在美国.
TPC已经推出了四套基准程序,被称为TPC-A、TPC-B、TPC-C和TPC-D。其中A和B已经过时,不再使 用了.TPC-C是在线事务处理(OLTP)的
基准程序,TPC-D是决策支持(DecisionSupport) 的基准程序。TPC后来尝试推出的TPC-E,TPC-S,最终被放弃。
3.TPC-C
我们重点关注的是TPC-C测试.
TPC-C是一种旨在衡量联机事务处理(OLTP)系统性能与可伸缩性的行业标准基准测试项目。这种基准测试项目将对包括查询、更新及队列式
小批量事务在内的广泛数据库功能进行测试。许多IT专业人员将TPC-C视为衡量“真实”OLTP系统性能的有效指示器。
TPC-C基准测试针对一种模拟订单录入与销售环境测量每分钟商业事务(tpmC)吞吐量。特别值得一提的是,它将专门测量系统在同时执行其
它四种事务类型(如支付、订单状态更新、交付及证券级变更)时每分钟所生成的新增订单事务数量。独立审计机构将负责对基准测试结果进行
公证,同时,TPC将出据一份全面彻底的测试报告。这份测试报告可以从TPC Web站点(http://www.tpc.org)上获得。
tpmC定义: TPC-C的吞吐量,按有效TPC-C配置期间每分钟处理的平均交易次数测量,至少要运行12分钟
3.1TPC-C规范概要
TPC-C是专门针对联机交易处理系统(OLTP系统)的,一般情况下我们也把这类系统称为业务处理系统。
TPC-C测试规范中模拟了一个比较复杂并具有代表意义的OLTP应用环境:
假设有一个大型商品批发商,它拥有若干个分布在不同区域的商品库;每个仓库负责为10个销售点供货;每个销售点为3000个客户提供服务;
每个客户平均一个订单有10项产品;所有订单中约1%的产品在其直接所属的仓库中没有存货,需要由其他区域的仓库来供货。
该系统需要处理的交易为以下几种:
-
New-Order:客户输入一笔新的订货交易;
-
Payment:更新客户账户余额以反映其支付状况;
-
Delivery:发货(模拟批处理交易);
-
Order-Status:查询客户最近交易的状态;
-
Stock-Level:查询仓库库存状况,以便能够及时补货。
对于前四种类型的交易,要求响应时间在5秒以内;对于库存状况查询交易,要求响应时间在20秒以内。
逻辑结构图:
流程图:
3.2.评测指标
TPC-C测试规范经过两年的研制,于1992年7月发布。几乎所有在OLTP市场提供软硬件平台的厂商都发布了相应的TPC-C测试结果,随着计算
机技术的不断发展,这些测试结果也在不断刷新。
TPC-C的测试结果主要有两个指标:
● 流量指标(Throughput,简称tpmC)
按照TPC的定义,流量指标描述了系统在执行Payment、Order-status、Delivery、Stock-Level这四种交易的同时,每分钟可以处理多少个
New-Order交易。所有交易的响应时间必须满足TPC-C测试规范的要求。
流量指标值越大越好!
● 性价比(Price/Performance,简称Price/tpmC)
即测试系统价格(指在美国的报价)与流量指标的比值。
性价比越小越好!
关于这部分内容,在TPC-C的官方文档中可以找到详细的说明,你可以在以下链接获得TPC组织的官方文档:
http://www.tpc.org/tpcc/spec/tpcc_current.pdf
在IBM的官方网站上,你也可以找到部分说明:
http://www-900.ibm.com/cn/products/servers/pseries/tech/tpcc.shtml
目前TPC-C的版本是5.2.
本文作者:
eygle,Oracle技术关注者,来自中国最大的Oracle技术论坛itpub.
www.eygle.com是作者的个人站点.你可通过Guoqiang.Gai@gmail.com来联系作者.欢迎技术探讨交流以及链接交换.
原文出处:
http://www.eygle.com/special/How.To.implement.Benchmark.Test.01.htm