SPECJMS2007:针对面向消息中间件的新型基准测试工具和性能分析框架

页面: 1, 2

基准测试实现

作为SPECjms2007基准测试工具的一部分,前面提到的工作负荷场景已经得以实现,现在我们将简要讨论一下具体的实现方法。

事件处理程序和代理

SPECjms2007是作为java应用程序实现的,它由横跨一组 客户机节点的多个JVM和线程组成。每个接收方(队列或主题)都通过一个单独的Java类,即 事件处理程序(Event Handler,EH),封装应用程序逻辑,执行逻辑将处理发送给接收方的消息。当新消息到来时,事件处理程序登记为队列/主题的监听程序并接收从消息传递基础架构反馈的信息。

为了实现最佳的性能和可伸缩性,在各线程中执行的每个事件处理程序都可存在多个实例,并且它们可以分布在多个物理节点上。事件处理程序可以根据它们在业务场景中的物理位置(如HQ、SM、DC和SP)来分组。

除事件处理程序之外,针对每个物理位置,还可以通过运行一组线程来驱动在该物理位置上逻辑启动的基准测试交互,这就是所谓的 驱动线程。所有关于特定物理位置的事件处理程序和驱动线程的集合叫做 代理。例如,每个DC代理机构由DC内发送往不同接收方的一组事件处理程序和用来驱动交互2的一组驱动线程组成,而交互2是DC作为逻辑起点来进行交互的唯一的交互。

工作负荷的可配置性

SPECjms2007的另一个重要目标就是为MOM服务器的性能分析提供一个灵活的框架,此框架允许用户根据自己的需求配置和自定义工作负荷。为了实现此目标,交互可以按照以下方式来实现,即用户可以根据所需的事务组合以不同的组合方式来运行交互。要实现可配置性需遵循以下几点:

  • 接收方(队列和主题)的数目和类型;
  • 某个接收方的通信量;
  • 消息类型组合;
  • 消息大小组合;
  • 消息生产者和消费者的数目。

SPECjms2007提供了三种构造工作负荷的方式:水平方式、垂直方式和自由方式。后面两种方式表示工作负荷的拓扑结构,它们对应于三种不同的模式,即运行提供了不同程度的可配置性的基准测试工具的三种模式。

水平和垂直拓扑结构代表扩展超市供应链场景的两种策略,第一种策略是通过增加物理位置的数目来实现,第二种策略是通过增加每个物理位置的通信量来实现。水平拓扑结构的作用是测试系统在接收方数量不断增加的情况下的处理能力。因此,工作负荷因物理位置(SM、DC等)的数量增加而得以扩充,而每个位置的通信量却仍然保持不变。

另一方面,垂直拓扑结构的作用是测试系统在一组固定接收方的通信量不断增长的情况下的处理能力。因此,它使用一组固定的物理位置,并通过增加交互的运行频率来扩展工作负荷。最后,自由拓扑结构允许用户将SPECjms2007的七种交互作为构建块来设计自己的工作负荷场景,此场景可以通过增加物理位置的数目及/或增加交互运行的速度,以一种自由的方式来扩展工作负荷。表1显示了三种拓扑结构中可以配置的工作负荷参数,如下所示:

工作负荷参数 配置
自由方式 水平方式 垂直方式
模拟物理位置 (HQs, SMs, DCs, SPs)
交互运行的频率
每个消息类型的消息规模分布
每个物理位置的代理
跨客户机节点的代理分布
每个客户节点上运行的JVM
JVM之间的代理机构分布
每个消息类型(消息消费者)的事件处理程序
每个交互(消息生产者)的驱动线程
每个事件处理程序或驱动线程使用的连接工厂
各事件处理程序在单个代理中共享的JMS连接
非事务会话的确认模式
多重会话的共享连接
传输后检验信息完整性的频率(CRC检验)
表 1: 三种拓扑结构中可以配置的工作负荷参数


在水平和垂直的拓扑结构中,只可以对上面的个别参数进行设置,而在自由拓扑结构中,可以对所有的参数进行设置。更为重要的是,用户可以根据其需求选择性地关闭交互或改变它们的运行频率来形成工作负荷。同时,在使用水平或垂直的拓扑结构时,基准测试中的交互将根据它们在现实应用场景中的相互依赖关系而彼此关联。

工作负荷特征

在第4期European Performance Engineering Workshop(EPEW-2007)学报上发表的 《Workload Characterization of the SPECjms2007 Benchmark》论文提供了SPECjms2007的全面的工作负荷特征。衡量基准测试工作负荷的指标包括接收方(队列和主题)的数量和类型、交互组合、消息类型、消息大小和消息交付模式。表2详细列出了在各种交互中使用的不同消息类型和接收方。

论文提供了详细消息吞吐量分析,主要目的有二:其一,通过使用提供的信息,用户可以组合工作负荷配置(根据位置的数目和交互率),这种配置强调消息在特定缩放条件下具体类型。这允许用户使用SPECjms2007交互作为构建块来创建自定义工作负荷。一个非常基础的例子:当订阅者数量不断增加时,用户可能对评估非持久性pub/sub消息传递的性能和可伸缩性感兴趣。在这种情况下,当SM数量不断增加时,交互6和交互7就需要组合起来使用。其二,在每个基础位置的通信量的特征可以帮助用户去发现处于不同位置的代理机构的最佳部署布局,这样,负荷将平均分布在各客户节点中,且不会使客户端成为瓶颈。这对于消息传递基准测试极为重要,因为服务器在交互过程中充当调停者的角色,并且需要在客户端上处理大量任务。

交互 消息 目的地 类型 属性 描述
1 order 队列(DC) ObjectMsg P, T SM向DC发送订单
orderConf 队列(SM) ObjectMsg P, T DC向SM发送收到订单的确认信息
shipDep 队列(DC) TextMsg P, T 在DC出货时,货物通过RFID阅读程序进行登记
statInfoOrderDC 队列(HQ) StreamMsg NP, NT DC向HQ发送销售统计信息
shipInfo 队列(SM) TextMsg P, T SM收到DC发出的货物时,将其通过RFID阅读程序进行登记
shipConf 队列(DC) ObjectMsg P, T SM向DC发送收到货物的确认信息
2 callForOffers 主题(HQ) TextMsg P, T, D DC请求所有的SP发送报价单(XML)
offer 队列(DC) TextMsg P, T SP向DC发送报价单(XML)
pOrder 队列(SP) TextMsg P, T DC向SP发出订单(XML)
pOrderConf 队列 (DC) TextMsg P, T SP向DC发送收到订单的确认信息(XML)
invoice 队列 (HQ) TextMsg P, T SP向HQ发送订单发票(XML)
pShipInfo 队列 (DC) TextMsg P, T DC收到SP发出的货物时,将其通过RFID阅读程序进行登记
pShipConf 队列 (SP) TextMsg P, T DC向 SP发送收到货物的确认信息(XML)
statInfoShipDC 队列 (HQ) StreamMsg NP, NT DC向HQ发送购买统计清单
3 priceUpdate 主题 (HQ) MapMsg P, T, D HQ向SM发送价格变更的信息
4 inventoryInfo 队列 (SM) TextMsg P, T SM仓库的产品目录通过RFID阅读程序进行变更登记
5 statInfoSM 队列 (HQ) ObjectMsg NP, NT SM向HQ发送销售的统计信息
6 productAnnouncement 主题(HQ) StreamMsg NP, NT, ND HQ向SM传送发布新产品的信息
7 creditCardHL 主题(HQ) StreamMsg NP, NT, ND HQ向SM发送信用卡活动表


水平拓扑结构

如前所述,水平拓扑结构的目标是测试系统在接收方数量不断增加的情况下的处理能力。为此,工作负荷将通过增加物理位置(SM、DC等)的数量而得以扩展,而每个位置的通信量却仍然保持不变。在运行基准测试之前,必须设置 BASE扩展参数。当BASE增加时,全部消息的吞吐率将上升直至系统饱和。为了使运行有效(通过),所有的队列都必须是稳定的,且90%的传送时间不能超过5秒。

有效水平运行的基准度量指标称作 SPECjms2007@Horizontal,它等于运行基准测试的BASE参数值。用户期望使用不断增加的BASE值运行多次测试,并且直到BASE值达到最大时,此运行仍然有效。后者将作为SPEC发布的正式结果被提交。

# Locations for Horizontal Topology
图4:水平拓扑结构的位置

图4显示了当BASE参数增加时,每种类型的位置数量是如何扩展的。由于参与者发起交互的频率是固定的,因此每个位置(接收方)的通信量保持不变。交互的相对重要性是根据详细的超市供应链的业务模型的来设置的,此模型捕捉了交互的相关性。该模型有若干个输入参数(如产品类型的总数、超市的规模和每周销售产品平均数量),在选择输入参数值时应尽可能实现全面的目标消息传递组合:

  • 50%的P2P消息和50%的pub/sub消息;
  • 50%的P2P持久性消息和50%的非持久性消息;
  • 25%的持久性pub/sub消息和75%的非持久性消息。

目标是使P2P通信和pub/sub消息传递具有同样的重要性。在各组内,持久性通信和非持久性通信的目标相对重要性是根据在现实的应用中这些通信类型的相关应用来设置的。图5显示了在水平拓扑结构中的消息组合。当扩展工作负荷时,不同消息类型的比例保持不变。在不同交互中用到的消息大小的选定是为了能够反映在现实的MOM应用程序中典型的消息大小。由于传送机制的非耦合性,所以Pub/sub消息通常比P2P消息小。

Horizontal Topology Message Mix
图5:水平拓扑结构消息组合

垂直拓扑结构

垂直拓扑结构使用一组固定的物理位置,并通过增加执行交互的频率来扩展工作负荷。与水平拓扑结构一样,它使用参数BASE作为比例因子,用户将根据需要扩展工作负荷,直到BASE达到最高,且仍然能够满足一次有效运行。 SPECjms2007@Vertical是垂直拓扑结构的基准度量指标。同样,交互的相对重要性是根据供应链场景的业务模型来设置的。然而,和水平拓扑结构不同,垂直拓扑结构强调P2P消息传递,该消息传递占80%的通信量。

其目的是测试系统在接收方通信量不断增加时并行处理消息的能力。对于MOM服务器在此方面的性能,P2P消息传递(队列)要比pub/sub消息传递具有更为密切的相关性。在pub/sub消息传递中,根据用户处理接收消息的速度来看,消息的吞吐量在本质上是有限的。图6显示了垂直拓扑结构实现的消息组合。同样,在扩展工作负荷时,消息组合仍然保持不变,这是预期的行为。

Vertical Topology Message Mix
图6:垂直拓扑消息组合

结束语

SPECjms2007是一款灵活且稳健的工具,它能够对MOM服务器的性能进行深入评估。该基准测试工具允许用户根据自己的需要自定义工作负荷,通过配置工作负荷来强调MOM基础架构的特定特性,这在某种程度上类似于一个特定的目标用户的工作负荷。然而,为了利用这一点,用户需要了解工作负荷的构成方式和各组件所测试的性能方面。在本文中,我们首先介绍了SPECjms2007建立的业务场景和工作负荷模型,然后探究了基准测试的设计和内部架构。通过研究交互、消息组合和它们的扩展方式,我们呈现了工作负荷的特征。一方面,由于此特征帮助用户增强了对SPECjms2007工作负荷的深入理解,所以他们能正确地解释基准测试工具的输出结果。另一方面,根据这些信息,用户可以根据他们的需要来设计工作负荷。

SPECjms2007为测试MOM服务器的性能和可伸缩性提供了一个有代表性的工作负荷场景。它有以下用途:

  • 比较各种不同的MOM平台(包括硬件和软件)在性能和可伸缩性方面的差异;
  • 研究不同配置选择和调整MOM平台参数对系统总体性能的影响;
  • 重点测试MOM平台并分析其潜在的瓶颈;
  • 构建自定义工作负荷,强调MOM性能的特定方面。

Samuel Kounev是SPEC的Java小组委员会的发布负责人,也是SPECjAppServer2004基准的资深架构师之一。他是BEA的技术总监。他持有索非亚大学的理科硕士学位和Darmstadt University of Technology的博士学位。