日期:2013-12-24  浏览次数:20853 次


如何实施Benchmark标准测试

---问题的提出及Tpc-C标准

Last Updated: Monday, 2004-10-18 16:36 Eygle
    
 


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.T