第一章 什么是TPC和tpmC?
1 TPC
TPC(Transaction Processing Performance Council,事务处理性能委员会)是由数10家会员公司创建的非盈利组织,总部设在美国。该组织对全世界开放,但迄今为止,绝大多数会员都是美、日、西欧的大公司。TPC的成员主要是计算机软硬件厂家,而非计算机用户,它的功 能是制定商务应用基准程序(Benchmark)的标准规范、性能和价格度量,并管理测 试结果的发布。
TPC的出版物是开放的,可以通过网络获取(http://www.tpc.org)。TPC不给出基准程序的代码,而只给出基准程序的标准规范(Standard Specification)。任何厂家或其它测试者都可以根据规范,最优地构造出自己的系统(测试平台和测试程序)。为保证测试结果的客观性,被测试者(通常是厂家)必须提交给TPC一套完整的报告(Full Disclosure Report),包括被测系统的详细配置、分类价格和包含五年维护费用在内的总价 格。该报告必须由TPC授权的审核员核实(TPC本身并不做审计)。现在全球只有几个审核员,全部在美国。
TPC已经推出了四套基准程序,被称为TPC-A、TPC-B、TPC-C和TPC-D。其中A和B已经过时,不再使用了。TPC-C是在线事务处理(OLTP)的基准程序,TPC-D是决策支持(Decision Support) 的基准程序。TPC即将推TPC-E,作为大型企业(Enterprise)信息服务的基准程序。
2 tpmC
tpmC值在国内外被广 泛用于衡量计算机系统的事务处理能力。但究竟什么是tpmC值呢?作者曾向一些 用户、推销人员乃至某些国外大公司的技术人员问过这个问题,但回答的精确度 与tpmC值的流行程度远非相称。tpmC这一度量也常被误写为TPM或TPMC。
TPC-C模拟一个批发商的货物管理环境。该批发公司有N个仓库,每个仓库供应10个地区,其中每个地区为3000名顾客服务。在每个仓库中有10个终端,每一个终端用于一个地区。在运行时,10×N个终端操作员向公司的数据库发出5类请求。由于一个仓库中不可能存储公司所有的货物,有一些请求必须发往其它仓库,因此,数据库在逻辑上是 分布的。N是一个可变参数,测试者可以随意改变N,以获得最佳测试效果。
TPC-C使用三种性能和价格度量,其中性能由TPC-C吞吐率衡量,单位是tpmC。tpm是transactions per minute的简称;C指TPC中的C基准程序。它的定义是每分钟内系统处理的新订单个数。要注意的是,在处理新订单的同时,系统还要按表1的要求处理其它4类事务 请求。从表1可以看出,新订单请求不可能超出全部事务请求的45%,因此,当一个 系统的性能为1000tpmC时,它每分钟实际处理的请求数是2000多个。价格是指系 统的总价格,单位是美元,而价格性能比则定义为总价格÷性能,单位是$/tpmC。
tpmC定义: TPC-C的吞吐量,按有效TPC-C配置期间每分钟处理的平均交易次数测量,至少要运行12分钟。
(吞吐量测试结果以比特/秒或字节/秒表示。)
第二章 TPCC
1 基准测试
TPCC值被广泛用于衡量C/S环境下,由服务器和客户端构筑的整体系统的性能,它由事物处理性能委员会(TPC,Transaction Processing Corp)制定,TPC为非赢利性国际组织。
TPCC值可以反映出系统的性能价格比。TPCC测试系统每分钟处理的任务数,单位为tpm,(transactions per minute)。系统的总体价格(单位为美元)除以TPCC值,就可以衡量出系统的性价比,系统的性价比值越大,系统的性价比越好。
需要注意的是,TPC-C值描述的是C/S整体系统的性能,它与系统的服务器和客户机的性能都有关系,也就是说,同样的服务器配置不同的客户端将会影响TPCC值,任何厂商和测试者都可以根据TPC提供的测试规范构造出自己最优的系统,当然测试的结果要经过TPC审核。
2 性能测试指标介绍
TPC-C
作为一家非盈利性机构,事务处理性能委员会(TPC)负责定义诸如TPC-C、TPC-H和TPC-W基准测试之类的事务处理与数据库性能基准测试,并依据这些基准测试项目发布客观性能数据。TPC基准测试采用极为严格的运行环境,并且必须在独立审计机构监督下进行。委员会成员包括大多数主要数据库产品厂商以及服务器硬件系统供应商。
相关企业参与TPC基准测试以期在规定运行环境中获得客观性能验证,并通过应用测试过程中所使用的技术开发出更加强健且更具伸缩性的软件产品及硬件设备。
TPC-C是一种旨在衡量联机事务处理(OLTP)系统性能与可伸缩性的行业标准基准测试项目。这种基准测试项目将对包括查询、更新及队列式小批量事务在内的广泛数据库功能进行测试。许多IT专业人员将TPC-C视为衡量“真实”OLTP系统性能的有效指示器。
TPC-C基准测试针对一种模拟订单录入与销售环境测量每分钟商业事务(tpmC)吞吐量。特别值得一提的是,它将专门测量系统在同时执行其它四种事务类型(如支付、订单状态更新、交付及证券级变更)时每分钟所生成的新增订单事务数量。独立审计机构将负责对基准测试结果进行公证,同时,TPC将出据一份全面彻底的测试报告。这份测试报告可以从TPC Web站点(http://www.tpc.org)上获得。
3 TPC-C规范概要
TPC-C是专门针对联机交易处理系统(OLTP系统)的,一般情况下我们也把这类系统称为业务处理系统。
TPC-C测试规范中模拟了一个比较复杂并具有代表意义的OLTP应用环境:假设有一个大型商品批发商,它拥有若干个分布在不同区域的商品库;每个仓库负责为10个销售点供货;每个销售点为3000个客户提供服务;每个客户平均一个订单有10项产品;所有订单中约1%的产品在其直接所属的仓库中没有存货,需要由其他区域的仓库来供货。同时,每个仓库都要维护公司销售的100000种商品的库存记录。
该系统需要处理的交易为以下几种:
New-Order:客户输入一笔新的订货交易;
Payment:更新客户账户余额以反映其支付状况;
Delivery:发货(模拟批处理交易);
Order-Status:查询客户最近交易的状态;
Stock-Level:查询仓库库存状况,以便能够及时补货。
对于前四种类型的交易,要求响应时间在5秒以内;对于库存状况查询交易,要求响应时间在20秒以内。
4评测指标
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)
即测试系统价格(指在美国的报价)与流量指标的比值。
性价比越大越好!
第三章(TPCC)如何衡量计算机系统的性能和价格
在系统选型时,我们一定不要忘记我们是为特定用户环境中的特定应用选择系统。切忌为了“与国际接轨”而盲目套用“国际通用”的东西。在性能评价领域,越是通用的度量常常越是不准确的。据我所知,美国的一些大用户从不相信任何“国际通用”的度量,而是花相当精力,比如预算的5%,使用自己的应用来测试系统,决定选型。在使用任何一种性能和价格度量时,一定要弄明白该度量的定义,以及它是在什么系统配置和运行环境下得到的,如何解释它的意义等。下面我们由好到差讨论三种方式。
1在真实环境中运行 实际应用
最理想的方式是搞一个试点,要求制造商或系统集成商配合将系统(含平台、软件和操作流程)在一个 实际用户点真正试运行一段时间。这样,用户不仅能看到实际性能,也能观察到系统是否稳定可靠、使用是否方便、服务是否周到、配置是否足够、全部价格是否合理。如果一个部门需要购买一批同类的系统,这种方式应列为首选,因为它不仅最精确、稳妥,也常常最有效率,用户还可先租一套系统作为试点。用这种方式得到的度量值常常具有很明确和实际的含义。
2使用用户定义的基准程序
如果由于某种原因第一种方式不可行,用户可以定义一组含有自己实际应用环境特征的应用基准程序。 我举两个例子:近年来,由于R/3软件是应用层软件,SAP公司的基准程序获得了越来越多国外企业的认可;中国税务总局最近也开发了自己的基准程序,以帮助税务系统进行计算机选型。这种方式在中国尤其重要,因为中国的信息系统有其特殊性。
3使用通用基准程序
如果第1种和第2种方式都不行,则使用如TPC-C之类的通用基准程序,这是不得已的一种近似方法。因 此,tpmC值只能用作参考。我们应当注意以下几点:
①实际应用是否与基准程序相符
绝大多数基准程序都是在美国制订的,而中国的企事业单位与美国的运作方式常常不一样(恐怕也不应该或不可能一样)。在使用TPC-C时,我们应该清楚地知道:我的应用是否符合批发商模式?事务请求是否与表1近似?对响应时间的要求是否满足表1?如果都不是,则tpmC值的参考价值就不太大了。
②TPC度量的解释
TPC基准程序是用来测系统而不是测主机的,厂家肯定要充分优化他们的被测系统。此处的“系统”包括主机、外设(如硬盘或RAID)、主机端操作系统、数据库软件、客户端计算机及其 操作系统、数据库软件和网络连接等。在很多厂家的TPC测试系统中,主机的价格只是系统总价格的1/4或更小,而硬盘的价格有可能占到总价格的1/3以上,因为TPC-C要求被测系统必须保存180天的事务记录。如果同样的主机被用到用户的环境中,厂家报的tpmC值就意义不大,因为用户的实际系统与厂家原来用于TPC测试的系统大不一样。当同样的主机用在不同的系统中时,tpmC值可能有相当大的变化,现在很多用户还没有意识到这一点。
我举一个例子。假设用 户希望购买一批同类系统,每一系统至少需要1GB的内存和50GB的硬盘。厂家A、B、C 各报了三个价格相当的系统,tpmC值分别为3000、2800、2600。用户是否应该选厂家A的产品呢?答案是:不一定。厂家用于测试tpmC值的系统与实际提供给用户的系统配置大不一样。tpmC最低的厂家C提供给用户的系统反而有可能性能最好,不 论是以实际系统的tpmC值还是以用户的实际应用性能来衡量。
③TPC测试的成本
TPC-C和TPC-D都是很复杂的基准程序,做一个严格的测试是很消耗资源的,厂家当然不会说出他们花费了多少钱和时间。但据国外知情人士透露,一个厂家做第一个TPC-C测试需 要几十万到上百万美元的资金和半年左右的时间投入。因此,很多TPC的度量值都 是估计的。由于计算机系统换代频繁,如果用户一定要用通过审核的度量值,就必 须多等待半年时间,因此而不能用最先进的系统。中国的厂家通过审核的时间则更长。
综上所述,我们对中国 用户(尤其是大用户)在计算机系统的选型方面有如下建议:
最好建立一个真实的试点,因为实际应用环境是检验计算机系统的最好标准。
中国的行业应该建立符合自己实际应用的基准程序和测试标准。中国税务总局的做法值得提倡。国家有关部门应该建立独立的测试中心,制定跨行业、符合中国企事业运作模式的性能测试标准。
“国际通用”的度量可以作为参考值,而不应作为必要条件。尤其是一定要弄清这些流行度量有什么含义,是在什么样的系统环境中测得的,以及基准程序是否符合企业真实的业务流程和运作模式。
作为一家非盈利性机构,事务处理性能委员会(TPC)负责定义诸如TPC-C、TPC-H和TPC-W基准测试之类的事务处理与数据库性能基准测试,并依据这些基准测试项目发布客观性能数据。TPC基准测试采用极为严格的运行环境,并且必须在独立审计机构监督下进行。委员会成员包括大多数主要数据库产品厂商以及服务器硬件系统供应商。
相关企业参与TPC基准测试以期在规定运行环境中获得客观性能验证,并通过应用测试过程中所使用的技术开发出更加强健且更具伸缩性的软件产品及硬件设备。
TPC-C是一种旨在衡量联机事务处理(OLTP)系统性能与可伸缩性的行业标准基准测试项目。这种基准测试项目将对包括查询、更新及队列式小批量事务在内的广泛数据库功能进行测试。许多IT专业人员将TPC-C视为衡量“真实”OLTP系统性能的有效指示器。
TPC-C基准测试针对一种模拟订单录入与销售环境测量每分钟商业事务(tpmC)吞吐量。特别值得一提的是,它将专门测量系统在同时执行其它四种事务类型(如支付、订单状态更新、交付及证券级变更)时每分钟所生成的新增订单事务数量。独立审计机构将负责对基准测试结果进行公证,同时,TPC将出据一份全面彻底的测试报告。这份测试报告可以从TPC Web站点(http://www.tpc.org)上获得。
第四章 TPCC计算原则
1建议
不管是TPC-C还是SPECjbb2000,计算结果都只能作为一个横向比较的参考。在实际应用中,决定系统性能的因素除了硬件、系统软件外,与应用软件的设计也是有很大关系的,此外,基于系统可扩展性的考虑,更多时候也倾向于一次性的采购。
从长远考虑,以政府信息化主管部门的角度考虑,建立一套评估机制是非常有用的,这其中包括:
1、 通过对各单位业务系统运行情况的调查,进行历史数据的收集分析,按分类建立基准指标库。收集的信息包括:服务器的配置、并发用户数(每天业务量)、CPU负荷等;
2、 由厂商定期提供基准值,更新基准指标库;
有了基准指标库的信息参照,不仅可以用于评估项目建设方案中服务器选型,也可以对各部门进行系统架构设计的优化提供指导。如以下是一些指导原则:
1、 数据库服务器选型:采购两台相同配置的小型机,进行虚拟分区和并行处理,以提高系统资源的利用率;日后扩容时采取垂直扩展的方式进行升级;
2、 应用服务器:采用负载均衡的方式提高并发处理能力,一般可配置2台以上,每台的硬件配置完全可以不同,应首先考虑使用旧的数据库服务器(利旧),如需采购新的服务器,应采用水平扩展的方式逐步升级;
3、 WEB服务器,可以考虑采用刀片服务器,提高扩展性和可管理性。
2参考:某项目计算实例
参考1
为了方便计算数据库服务器的造型,我们约定:
“ 系统同时在线用户数为1500人(U1);
“ 平均每个用户每分钟发出2次业务请求(N1);
“ 系统发出的业务请求中,更新、查询、统计各占1/3;
“ 平均每次更新业务产生3个事务(T1);
“ 平均每次查询业务产生8个事务(T2);
“ 平均每次统计业务产生13个事务(T3);
“ 一天内忙时的处理量为平均值的5倍;
“ 经验系数为1.6;(实际工程经验)
“ 考虑服务器保留30%的冗余;
服务器需要的处理能力为:
TPC-C=U1N1(T1+T2+T3)/33经验系数/冗余系数
则应用服务器的处理性能估算为:
TPC-C= 15002(3+8+13)/351.6/0.7= 274,285 tpmC
数据库服务器关系到整个系统的稳定运行,考虑到高可靠性和高可用性,并注重设备的可扩展性和性价比,系统将配置两台TPC-C值不小于28万的高性能数据库服务器。
参考2
以单台服务器性能进行计算,即确保单台服务器工作的时候可以满足系统正常运行的需要;
假设每天有1万人次来窗口办理业务,每人次办理一项业务。即以每日1万笔前台交易为例进行\综合系数**的推导:
\1. 假设每月前台交易数(未来5年内的设计指标)为220,000 (有些业务在月初、月末的处理量比较高,按月统计可以平衡此项差异);
\2. 每日前台交易数=220000/22=10,000 ,即每日 1万笔;
\3. 忙时处理能力:每日交易的80%在4个小时内完成,即1000080%/4=2000(笔/小时)
\4. 峰值处理能力:20002=4000(笔/小时),即峰值处理能力为每小时4000笔,或 67笔/分,假设业务人员同时在线为100人,即每人每分钟处理0.7笔)
\5. 假设每笔交易对应数据库事务数=20(这个是不是有点夸张了,有这么复杂的交易,TPC的标准交易都不算简单了吧,这只能说明数据库设计的有问题,按这样,支付宝咋弄),基准TPC指标值对应的比例=8,cpu保留30%的处理能力冗余,计算值与公布值(最优值)的偏差经验值为4 (这几个参数估算的依据不足,更多的是经验值)
则 tpmC值为:
tpmC= 672084/(1-30%)= 61257[颠峰处理能力时(笔/分)每笔交易对应数据库事务数基准TPC指标值对应的比例计算值与公布值(最优值)的偏差经验值/(1- cpu保留30%的处理能力冗余)
倒算出 综合系数 = 61257/10000=6.1
即数据库服务器tpmC= ***每日前台交易数 \ 6.1**** (实际计算值应不高于该值)
应用服务器的 tpmC = 数据库服务器 tpmC *50% (一般)
应用服务器的 tpmC = tpmC *70%
某单位要建立一个系统,设计容量是 2008 年要达到 1500 万客户的规模,在花费巨资(将近 100 M $)建设起此系统后,运行只有几个月,客户量也只达到几十万,厂商就说此系统容量不够,要花数 M $ 要扩容,并声称不是拍脑袋是,按 TPCC 计算的结果 …
以前只大致了解 TPCC 指标的一些情况,平常也就看看 By Performace 和 By Price/Performace 的 Top 10 列表,了解一下各厂商的实力和产品的情况,这次对 TPCC 进行了一下深入了解,发现了一些容易被厂商搞猫腻的地方。
TPCC 简单的来说,就是事务处理性能委员会 TPC 组织针对联机数据库应用系统(OLTP)制定的一个综合性能考评指标,它模拟了一个批发 商的货物管理环境,有标准的数据库结构(Schema),可以很容易的扩展,在此系统中,主要有五类交易:
\1. 新订单(New-Order)
\2. 支付(Payment ) 43%(最小比例)
\3. 订单查询(Order-Status) 4%(最小比例)
\4. 交付(Delivery) 4%(最小比例)
\5. 库存查询(Stock-Level) 4%(最小比例)
因为 TPCC 指标值主要是衡量“新订单”交易的数量,所以厂商都会趋向于增加新订单交易的数量,这样并不满足实际的应用场景,所以 TPCC 的规范中指定了后四种交易数量的最小比例,这样意味着 “新订单” 的数量最多只能占到45%(这个 45% 不知出于什么原因,在很多 TPCC 的指标介绍中并没有提及)。
这就说明了:如果一台机器有 1000 tpm (Transactions per Minute),那么它实际上处理的交易(请求)为 1000/45% = 2222 ,而实际上大多数厂商在面对用户估算应用系统需要多少个 TPCC 的服务器的时候,是计算所有交易量的,这样带来的评估结果是用户至少买比实际需要大一倍性能容量的机器,获得利益的谁呢?当然是服务器厂商,越高 TPCC 值的机器,价格越高,性价比也一般要偏小。
此外,服务器厂商还容易在以下方面愚弄客户:
1、交易复杂度(用户的一个交易约等于多少个 TPCC 的标准交易),某国际著名的服务器厂商建议此值取 10 - 20 ,这个值也忒大了点, 在 TPCC 的场景,交易也不是很简单的,和实际的应用交易差别并不是很大。
2、按一些峰值指标来计算性能,实际上,这些峰值只是在极少数情况下出现,所以在计算时,应乘以 80% 的系数。
3、预留容量,很多厂商建议预留容量,甚至达到一半,这有点过份,在实际容量要求增高的时候,可以通过服务器的横向扩展来纵向扩展来满足应用要求,何必为未来五年的要求,要在眼下一下子要做全部的硬件投资呢? 何况硬件的价格在不断下降呢。
具体情况具体分析,还得按中国国情来实测,国际标准有时不适合我们。
而且这个标准好多年了,现在很少在纵向扩展上花心思了,都注重横向扩展,按成本购置小机,尽量优化小机的数据库性能,得出TPCM值,然后对数据库进行横向扩展(虽然横向扩展有诸多问题,但是还是要扩展),利用集群提高整体的TPS