TPCE测试规则和验证

本文详细介绍了TPCE测试规则,包括有效事务定义、体系架构、事务混合率、事务参数、响应时间、测试运行阶段及测试报告的要求。重点讨论了事务的异步结构、混合率的精确控制以及响应时间的限制。测试报告的有效性验证需要满足特定条件,如使用EGenValidate进行验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TPCE测试规则和验证 

                                         白箱测试部   龙涛(flybird_lt@yahoo.com.cn)

1有效事务是指事务的输入信息已经被Driver完全发送到SUT(待测试系统),且正确的输出信息已经被Driver接收到。

注意: 

1错误事务在测试期间是不允许出现的,一个事务如果从没被执行完毕则认为是错误的。

2需要回滚的Trade-Order事务成功执行且产生了正确的输出信息,则是有效事务。 

3)一个事务执行时如果出现中止,但是被SUT重复执行且最终成功的话,则认为不是一个错误事务;事务不可以被Driver重复执行

 

2体系架构

简单的CE结构:

1)一个单独的CE执行线程;

2)一个单独的CCE类对象;

3)一个单独的与SUT的网络连接;

测试期间,执行线程调用CCE类对象不断轮询产生新的事务,然后记录事务开始时间,发送事务输入信息到SUT,等待事务被SUT执行完毕,接收返回信息,记录事务结束时间,如此往复。

 

1 简单的CE结构

复制的CE结构:

       一个CE产生的事务总数是有限的,这样可以在上面的结构基础之上进行复制,同时运行多个CCE类对象;强制使用的EGenDriverCEauto_RNG随机种子参数,意味者每个CCE类对象复制体不完全是简单的复制关系,每个复制体都有不同的随机种子,因此产生的事务也都是随机的。

 

2 复制的CE结构

异步的CE结构:

异步性体现在两个步骤:

1CESUTInterfaceEGenDriver Connector之间,即事务产生后需要等待后者发送出去,或者不等待,直接产生下一个事务信息;可以在两者之间建立缓冲队列来实现异步关系。

2EGenDriverConnectorEGenTxnHarness Connector之间,即事务发送出去后需要等待SUT执行完毕并获取返回信息,或者不等待,直接发送下一个事务信息;

       对于方式一,需要注意以下几点:

1)每个CCE类对象只能对应唯一的队列,且满足“一队列/一对象”的要求;

2)每一个队列都是先进先出类型的;

3)每一个发送线程只能从同一个队列获取事务信息;

注意:虽然方式一不要求强制使用,但是当执行CMEE类对象产生的事务时,建议使用这种方式。

The Sponsor written code executed between EGenDriver (i.e. the following APIs: CESUTInterface, MEESUTInterface, DMSUTInterface) and the mandatory Network may not make any decision related to routing, timing, reordering or pacing of that Transaction or any other Transaction based on that Transaction’s type or input values. 不是很理解

Comment:  These  restrictions  includ e  direct  knowledge  (e.g.,  obtained  by  peeking  in  the  packet)  or implied knowledge (e.g., obtained by card counting, message size, etc.).

 

3 事务产生的异步结构

       对于方式二,EGenDriverConnectorEGenTxnHarness Connector之间的网络连接是强制性使用的,主办方可以选择采用阻塞的还是非阻塞的连接方式,非阻塞方式允许Driver在一个事务执行完成之前提交给SUT新的事务,事务的后期处理线程可以是当初发送的线程,也可以新的线程。

 

4 非阻塞网络方式结构

注意:上面的结构可以组合使用;测试中使用的CCEMEE对象数量必须提交到报告中。

3,事务混合率: 

       TPC-E工作量由一系列按照特定比例混合的事务组成,在测试过程中,CE代码借助一种“扑克牌方法”控制产生“证券公司”和“客户”类型事务以满足这个特定混合比率,交易所触发事务不是由CE直接产生,但是由其间接触发MEE来产生。

       既然特定混合比例可能被违背,主办方有责任必须确保测量期间Measurement  Interval是有效的。因此,所有开始时间sTn和结束时间eTn在测量期间的有效事务都应该被统计。

Transaction 

Target Pct 

Required Range 

Comment 

Broker-Volume

4.9%

4.875% – 4.925%

 

Customer-Position

13%

12.935% – 13.065%

 

Market-Feed

1%

0.995% – 1.005%

Each Market-Feed contains entries for 10 completed Trade-Results.

Market-Watch

18% 

17.910% – 18.090%

 

Security-Detail

14% 

13.930% – 14.070%

 

Trade-Lookup

8%

7.960% – 8.040%

 

Trade-Order

10.1%

10.049% – 10.151%

~1% of Trade Orders rollback (see Clause 6.4.1, rollback is 1 out of each 101 Trade Orders.).  99% of 10.1% is the 10% for Trade Result.

Trade-Result

10%

9.950% - 10.050%

There is one Trade-Result per Trade-Order completed by the MEE, but ~1% of Trade-Order Transactions rollback at time of initial processing.

Trade-Status

19%

18.905% - 19.095%

 

Trade-Update

2%

1.990% - 2.010%

 

Total 

100% 

 

 

1 事务混合率

注意:Trade-Result事务的数量是和没有非正常中止的Trade-Order事务一一对应的,但是由于它是由Trade-Order事务触发的,在时间上会有一点延时,所以短时间内混合率会有变化;同样Market-Feed事务也有这种效果,正常情况下,它应该是Trade-Order事务的1/10Trade-Order事务正常回滚的话,也应该统计进去。

       混合率的报告精度,应该精确到小数点后4位,四舍五入到3位。 

       Data-Maintenance事务不包括在混合率统计范围内,一个Data-Maintenance事务必须每60秒调用一次,而且必须在55秒内成功执行完毕。 

       Trade-Cleanup事务不包括在混合率统计范围内,而且标准中对响应时间没有要求,只要求它必须在任何事务被执行之前调用。

 

4,事务参数: 

4.1 输入参数 

       和事务混合率的要求类似,主办方必须在测试结果中报告各种事务的特定参数的百分比,以确定测试的有效性,每种事务参数的要求如下表所示:

Input Parameter 

Value 

Target Pct 

Required Range 

Customer-Position 

by_tax_id

1

50%

48% to 52%

get_history

1

50%

48% to 52%

Market-Watch 

Securities chosen by

Watch list

60%

57% to 63%

Account ID

35%

33% to 37%

Industry

5%

4.5% to 5.5%

Security-Detail 

access_lob

1

1%

0.9% to 1.1%

Trade-Lookup 

frame_to_execute

1

30%

28.5% to 31.5%

2

30%

28.5% to 31.5%

3

30%

28.5% to 31.5%

4

10%

9.5% to 10.5%

Trade-Order 

Transactions requested by a third party

 

10%

9.5% to 10.5%

Security chosen by company name and issue

 

40%

38% to 42%

type_is_margin

1

8%

7.5% to 8.5%

roll_it_back

1

~1%

0.94% to 1.04% (*)

is_lifo

1

35%

33% to 37%

trade_qty

100

25%

24% to 26%

200

25%

24% to 26%

400

25%

24% to 26%

800

25%

24% to 26%

trade_type

TMB

30%

29.7% to 30.3%

TMS

30%

29.7% to 30.3%

TLB

20%

19.8% to 20.2%

TLS

10%

9.9% to 10.1%

TSL

10%

9.9% to 10.1%

Trade-Update

frame_to_execute

1

33%

31% to 35%

2

33%

31% to 35%

3

34%

32% to 36%

2 事务参数比率

注意:Trade-Order事务的回滚数和正常提交数的比例为1100,所以回滚率为1/101,约为0.99%,写成~1%,这也是接收范围为0.94%-1.04%而不是0.95%-1.05%的原因。

4.2 客户分区 

       多个CCE对象可以同时执行,那么每一个对象也可以按照C_ID进行分区,分区的规则如下:

1C_ID子范围分区必须是一个连续的集合;

2)子范围的最小C_ID值必须是一个装载单元Load Unit的起始值,通常Load Uint1000个客户,则最小C_ID应该是110012001或者5001

3)最小的子范围大小为5000

4)子范围大小应该为一个装载单元的整数倍;

5)每个对象的子范围大小不要求完全一样。

       此外,一旦C_ID分区被使用,则EGenDriverCE代码会保证:

150%的概率从整个配置的客户范围内选取C_ID

250%的概率从子范围分区内选取C_ID

       例如,数据库中有60000个配置客户数Configured Customers4CCE对象,头两个对象子范围为20000,剩下两个个对象子范围为10000,则有如下关系:

1)第一个对象的开始客户位置为1,子范围大小为20000,分区百分比50%

2)第二个对象的开始客户位置为20001,子范围大小为20000,分区百分比50%

3)第三个对象的开始客户位置为40001,子范围大小为10000,分区百分比50%

4)第四个对象的开始客户位置为50001,子范围大小为10000,分区百分比50%

       把所有开始客户位置和子范围大小相同的CCE对象给一个共同的分区标记r;在测试期间,对于每一个CCE对象和每一个启动的CE事务,Driver程序需要统计足够的信息,已保证测试结束后能够知道每个对象每3秒间隔内启动的CE事务数量;在测试结束,选定稳定期间的测量范围后,用以下计算方法来计算整个测量范围内每个3秒间隔期t

1)计算所有标记为rCCE对象在3秒时间段t内所启动的事务总数(sTn已指定),把结果叫做Cr,t

2)用Cr,t除以该范围内装载单元的数量(例如,20000大小的范围,包含的装载单元数量为20000/1000=20),叫做Nr,t

3)加上所有Cr,t,再除以整个数据库中装载单元的数量,叫做“每单元平均CE驱动率”At

4)计算Nr,t不满足At*0.95<=Nr,t<=At*1.05的数量,叫做Dt

5)将所有分区标记的总数叫做R,如果Dt/R>0.05,则认为时间段t内的测试失败了,并且设置新的标记Ft1,否则设置为0

       加上所有测量范围内的Ft值,叫做S;把测量范围内的3秒时间段的个数叫做T;那么整个测量范围内必须满足的条件为:

       S/T<=0.05 

1.       For all CE instances in each Partition Range “r” within each 3-second time interval “t”, count the number of CE Transactions started (sTn assigned).  Call this count Cr,t

2.       Divide Cr,t by the number of Load Units (LUs) in Partition Range “r”.  Call this normalized value Nr,t.

3.       Compute the “average CE driving rate per Load Unit across the entire database” At by summing all Cr,t and dividing by the total number of  Load Units in the database.

4.       Count the number of Nr,t values that do not satisfy At * 0.95 <= Nr,t <= At * 1.05.  Call this count Dt.

5.       Call the total number of Partition Ranges R.  If Dt / R > 0.05, then consider time interval “t” to have failed the test and set Ft to 1;  otherwise, set Ft to 0.

Sum the Ft across all values of “t”.  Call this value S.

Call the number of 3-second time intervals in the Measurement Interval T.

The Measurement Interval must meet the following requirement:

S / T <= 0.05. 

5,响应时间和延迟时间: 

       响应时间RTn的计算公式为:RTn=eTn-sTnsTn是事务信息的第一个字节被Driver发送给SUT之前的时间,eTn则为Driver接收到事务返回信息的最后一个字节的时间。响应时间的最小精度不能低于0.01秒。

       在测量阶段(非整个阶段)中,每一类型的事务中必须保证90%事务的响应时间低于下表所示的限定值

Transaction 

90% Response Time Constraint 

Broker-Volume

3 sec.

Customer-Position

3 sec.

Market-Feed

2 sec.

Market-Watch

3 sec.

Security-Detail

3 sec.

Trade-Lookup

3 sec.

Trade-Order

2 sec.

Trade-Result

2 sec.

Trade-Status

1 sec.

Trade-Update

3 sec. 

3 事务限定最大响应时间

       下图显示了各种事务响应时间的测量方法,且有以下规则:

1)测量阶段(非整个阶段)对于事务混合率考虑范围内的事务,平均响应时间必须不能超过其90%响应时间

2Data-Maintenance事务没有平均响应时间和90%响应时间的计算要求,但是必须保证它在55秒执行完毕;

3Trade-Cleanup事务没有响应时间的要求,但是必须在测试开始之前执行成功。

       发送间隔时间DT的计算方法,假设某个事务队列为[T1,T2……Tn]

1)对于阻塞网络方式,

For n=1:DTn=0

For n>1:DTn=sTn-eTn-1

2)对于非阻塞网络方式,

For n=1:DTn=0                 

For n>1:DTn=sTn-sTn-1

       在测量范围内,发送间隔时间不能超过1。延迟时间可以看做是插入到发送间隔时间DT内的时间段,用于调整事务的发送速率,由主办方自由实现;

 

6,测试运行 

       测试运行阶段分为“上升期”、“稳定期”和“下降期”,测量阶段必须是在稳定期,由主办者自行选择。

       对于数据库的要求如下:

1测试数据库必须用EGenLoader程序装载好;CUSTOMER表的数量最小为5000条,可以1000为增量进行扩大,1000个客户数被认为是一个装载单元;

2在开始测试之前,数据库中不能包含任何暂停或已提交的交易,可以通过使用初始状态的数据库或者执行Trade-Cleanup事务来达到此要求;

3)测试期间,只有执行有效的事务才能修改数据库记录;

4)测量阶段内,事务必须在规定时间范围-15分钟内处于提交状态,这也意味者数据库需要每7.5分钟执行一次传统的CheckPoint事务;达梦没有CheckPointSQL语句,可以设置服务器checkpoint的时间间隔; 

 

5 事务起始时间和结束时间

5)整个测试期间的所有资源和组件必须一直保持,比如,将日志文件指派到不同的设备上,使得测试稳定期的性能比其他期间高。

6测量阶段最小为2小时,且必须完全处于稳定期间;

7)被统计的有效事务的起始时间和结束时间都应该处于测量阶段;

8)所有执行CE事务的线程,必须满足:在测量阶段之前至少执行一个事务,在测量阶段之后同样如此;

9)在测量阶段不允许创建,启动,停止,删除CE执行线程;

 

7,测试报告: 

1)如果测试出的吞吐量在默认结果的80%-100%之间,那么报告的结果就可以直接采用;如果超过2%,该测试结果可以使用,但是报告的结果为默认结果;其他范围的测试结果被认为不是有效的结果;

       例如:具有5000条客户记录的数据库,默认性能是10.000tpsE,测试结果为10.00-10.20

则被报告为10.00tpsE,测试结果为8.00-10.00,则直接使用该结果,其他结果都是非法的,不允许报告。

       一个装载单元(1000条客户记录)的默认性能是2.00tpsE

2TPCE的结果应该包含一下几点:

TPC-E吞吐量的单位为tpsE

性价比为3年价格/tpsE

The date when all products necessary to achieve the stated performance will be available (stated as

a single d ate on the Executive Summary Statement).   This is known as the Availability Date

3)结果有效性验证

       在测量阶段,每个装载单元都应该执行几乎相同数量的Trade-Result事务,这个需求必须通过使用EGenValidate测试和在支持文档中给出结果来说明是否达标;EGenValidate是官方提供的代码,执行时需要提供以下参数:

配置客户数;

Trade-Result事务标准偏差值,

standard deviation =

where ni = the number of Trade-Results completed for Load Unit i during the Measurement Interval

测量阶段的秒数;

测量阶段的实际tpsE值;

       验证通过的话程序会打印“Passed!”,否则打印“Failed!”。

4)最终结果值的计算方式为:

测量阶段所有有效的Trade-Result事务数量/测量阶段的总秒数 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值