如何实施Benchmark标准测试(之一)---问题的提出及Tpc-C标准
2024-07-21 02:06:38
供稿:网友
如何实施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是作者的个人站点.你可通过[email protected]来联系作者.欢迎技术探讨交流以及链接交换.
原文出处:
http://www.eygle.com/special/how.to.implement.benchmark.test.01.htm