用于在事务中间件机器环境中支持自调谐锁定机制的系统和方法

文档序号:6496644阅读:246来源:国知局
用于在事务中间件机器环境中支持自调谐锁定机制的系统和方法
【专利摘要】可以在事务中间件系统中支持锁定机制以在存在并行事务时保护共享存储器中的事务数据。事务中间件机器环境包括由运行在多个处理器上的操作系统提供的信号量。多个处理器操作来访问共享存储器中的数据。事务中间件机器环境也包括与一个或多个处理相关联的测试置位(TAS)装配组件。每个所述处理操作来使用TAS装配组件以执行一个或多个TAS操作以便获得对共享存储器中的数据的锁定。另外,在TAS组件执行多次TAS操作并且未能获得锁定之后,处理操作来被在信号量上阻断并且等待对共享存储器中的数据的锁定的释放。
【专利说明】用于在事务中间件机器环境中支持自调谐锁定机制的系统和方法
[0001]版权通知
[0002]本专利文件的公开的一部分包含受版权保护支配的材料。版权所有者不反对任何人传真复制专利文件或专利公开,因为它出现在专利商标局专利文档或记录中,但在别的方面保留所有版权。
【技术领域】
[0003]本发明一般涉及计算机系统和诸如中间件之类的软件,并且具体地涉及支持事务中间件机器环境。
【背景技术】
[0004]事务中间件系统、或面向事务的中间件包括可以在组织之内处理多种事务的企业应用服务器。随着诸如高性能网络和多处理器计算机之类的新技术的发展,需要进一步改善事务中间件的性能。这些一般是本发明的实施例意欲解决的领域。

【发明内容】

[0005]这里描述的是可以在事务中间件系统中支持的用于在存在并行事务时保护共享存储器中的事务数据的锁定机制。事务中间件机器环境包括运行在多个处理器上的操作系统,每个操作以访问共享存储器中的数据。事务中间件机器环境也包括由操作系统提供的信号量(semaphore)、和与一个或多个处理相关联的测试置位(TAS)装配组件。每个处理可以使用TAS装配组件执行一个或多个TAS操作以便获得对共享存储器中的数据的锁定。此夕卜,在TAS组件在执行指定数目的TAS操作后未能获得锁定之后,处理可以在信号量上被阻断并且等待对共享存储器中的数据的锁定的释放。
【专利附图】

【附图说明】
[0006]图1示出根据本发明的实施例的支持自调谐锁定机制的事务中间件机器环境的例示。
[0007]图2示出了根据本发明的实施例的用于在事务中间件机器环境中支持自调谐锁定机制的示范性流程图。
[0008]图3是根据本发明的实施例的用于在事务中间件机器环境中支持锁定机制的系统的功能框图。
【具体实施方式】
[0009]这里描述的是用于支持诸如Tuxedo之类的事务中间件系统的系统和方法,其可以利用具有多处理器的快速机器、和高性能网络连接。可以在事务中间件系统中支持锁定机制以在存在并行事务时保护共享存储器中的事务数据。事务中间件机器环境包括由运行在多个处理器上的操作系统提供的信号量。多个处理器可以访问共享存储器中的数据。事务中间件机器环境也包括与一个或多个处理相关联的测试置位(TAS)装配组件。每个所述处理操作来使用TAS装配组件以执行一个或多个TAS操作以便获得对共享存储器中的数据的锁定。另外,在TAS组件执行多个TAS操作并且未能获得锁定之后,处理操作来在信号量上被阻断并且等待对共享存储器中的数据的锁定的释放。
[0010]根据本发明的实施例,系统包括例如64位处理器技术的高性能硬件、高性能大容量存储器、和冗余无限带和以太网的组合,与诸如WebLogic套之类的应用服务器或中间件环境一起以提供完整的JavaEE应用服务器综合体,其包括大规模并行存储器内网格、可以被快速提供、并可以根据需要分级。根据实施例,系统可以被布置为完全的、一半、或四分之一机架、或其它配置,其提供应用服务器网格、存储区域网络、和无限带(IB)网络。中间件机器软件可以提供应用服务器、中间件和其它功能,诸如例如,WebLogic服务器、JRockit或Hotspot JVM>OracIe Linux或Solaris、和Oracle VM。根据实施例,系统可以包括经由IB网络与彼此通信的多个计算节点、IB交换机网关、和存储节点或单元。当被实施为机架配置时,机架的不使用的部分可以被保持为空或由填充物占据。
[0011]根据本发明的实施例,这里称为“Sun Oracle Exalogic”或“Exalogic”的系统是解决诸如Oracle中间件SW套、或Weblogic之类的主机托管的中间件或应用服务器软件的容易部署的技术方案。如同这里描述的,根据实施例,系统是“盒中网格”,其包括一个或多个服务器、存储单元、用于存储联网的IB结构、和托管中间件应用所需的所有其它组件。通过利用例如实应用群和Exalogic开放存储来平衡大规模平行网格结构,可以为各种中间件应用实现重要的性能。系统传送有线性I/O可分级性的改善的性能、使用并管理简单、并实现任务关键的可用性和可靠性。
[0012]根据本发明的实施例,Tuxedo是启动构造、执行、和管理高性能、分布式业务应用、并且已经由许多多层应用开发工具用作事务中间件的一组软件模块。Tuxedo是可以在分布式计算环境中用于管理分布式事务处理的中间件平台。它被证明是用于解锁企业传统应用和将它们到扩展到面向服务的架构、同时实现无限的可分级性和基于标准的互操作性的平台。
[0013]根据本发明的实施例,诸如Tuxedo系统之类的事务中间件系统可以利用诸如Exalogic中间件机器之类的具有多处理器的快速机器、和诸如无限带(IB)网络之类的高性能网络连接的优势。
[0014]自调谐锁定机制
[0015]根据本发明的实施例,自调谐锁定机制可以在事务中间件系统中被支持以在存在并行事务时保护共享存储器中的事务数据。利用自调谐锁定机制,事务中间件机器环境可以在诸如具有大规模并行事务的应用之类的事务应用情况中实现重要的吞吐量改进。
[0016]图1示出根据本发明的实施例的支持自调谐锁定机制的事务中间件机器环境的例示。如图1所示,事务中间件机器包括支持操作系统(OS) 104的多个CPU131-134、和包括多种事务数据121-123的共享存储器103。具有多个并行事务的事务应用101可以在事务服务器102中的多个处理113-115上运行,每个处理可以使用原子TAS (测试置位)组件107以实施有效锁定机制。锁定机制在存在并行事务时可以保护共享存储器中的事务数据。此外,事务应用中的处理可以使用由OS提供的信号量机制106以必要时获得对数据122的锁定。
[0017]根据一个实施例,当处理想要得到对数据122的锁定时,处理可以执行许多轮的TAS操作。系统可以指定目标旋转计数,其是允许的TAS操作的轮数。可以或者预配置或者动态地确定目标旋转计数。
[0018]如果在到达目标旋转计数之前锁定变得可用,则处理能够以比由OS提供的信号量机制更少的代价获得锁定。另一方面,如果锁定在此期间不可用,则处理可以被配置为阻断信号量,并且等到锁定拥有者醒来并且释放锁定。
[0019]根据本发明的实施例,可以在硬件配置和应用情况的上下文中决定目标旋转计数值。用户可以手动地精细调谐旋转计数值以便找到优化值。在一些情况中决定可能不是明显的,因为在CPU使用率和时间之间存在折衷以得到锁定。例如,用户可以必须花费更多的CPU功率来执行更多的TAS操作以便在更短时间帧内得到锁定。因此,可以不存在对每一情况都明显的优化的目标旋转计数值。
[0020]用户级信号量实施方式的一个缺点是事务应用不能根据具体的机器类型实时地动态调整目标旋转计数。一般,用户级信号量仅仅使用静态配置的目标旋转计数值,并且用户可以仅仅通过经验实践手动地调整目标旋转计数值。因为最优的旋转计数值是机器相关的,并且没有用于所有平台的一个适合所有的值,因此更适当的方法是采用动态并且实时地计算目标旋转计数值的机制。
[0021]根据本发明的实施例,目标旋转计数值可以被存储在共享存储器中。诸如Tuxedo守护进程处理之类的特定处理可以根据集中在前一周期中收集的操作信息周期性地改变旋转计数值。例如,Tuxedo守护进程可以默认每5秒一次更新目标旋转计数值。
[0022]根据一个实施例,算法可以用于配置目标旋转计数值。如果CPU空闲率低,或太多TAS操作未能获得锁定并且系统切换到信号量,则算法可以增加目标旋转计数值。此外,如果CPU空闲率太高,则算法可以降低目标旋转计数值。
[0023]图2示出了根据本发明的实施例的用于在事务中间件机器环境中支持自调谐锁定机制的示范性流程图。如图2所示,在步骤201处,系统可以提供与运行在多个处理器上的操作系统相关联的信号量,其中多个处理器操作来访问共享存储器中的数据。然后,步骤202处,一个或多个处理中的一个处理可以使用测试置位(TAS)装配组件以执行一个或多个TAS操作以便获得对共享存储器中的数据的锁定。最后,在步骤203处,在TAS组件已经执行指定数目的TAS操作并且未能获得锁定之后,处理操作可以在信号量上被阻断并且等待对共享存储器中的数据的锁定的释放。
[0024]配置Tuxedo 中的 SPINC0UNT 值
[0025]根据本发明的实施例,诸如Tuxedo配置文件中的SPINC0UNT参数之类的元数据可以用于指定目标旋转计数。SPINC0UNT可以或者是静态配置的值、或者是动态的值。
[0026]例如,Tuxedo可以使用SPINC0UNT的静态设置值以确定公告牌锁定等待在系统级信号量上被阻断之前旋转多少次。此算法的缺点是由用户设置的值不是特定平台上的SPINC0UNT的最优值,因为SPINC0UNT的最优值取决于诸如CPU量、工作负荷、等待公告牌(BB)锁定的数目等等之类的许多动态系数。
[0027]另外,Tuxedo可以动态地调谐SPINC0UNT的值同时考虑运行时环境。算法可以用于确定用于SPINC0UNT参数的适当的值。如果太多TAS操作在前一周期已经失败并且系统切换到信号量,并且存在足够的CPU空闲率,则系统可以增加SPINCOUNT。另一方面,如果CPU空闲率太高,则系统可以降低SPINCOUNT。
[0028]以上所述算法基于例如CPU空闲率的CPU使用率,和例如为获得锁定在每10000次操作中SPIN失败的比率的SPIN失败率。SPIN失败率可以指示多少次经由信号量而不是经由TAS操作获得锁定。
[0029]当处理处于活动状态时,处理可以处于SPIN模式。如果处理在试图执行TAS操作许多次之后未能获得锁定,其被称为SPIN失败,则处理可以在信号量上被阻断。处理可以试图反复地执行TAS操作以便在SPIN失败发生之前得到锁定。例如SPINCOUNT的可配置参数可以用于指定要被调用并执行的TAS操作的轮数。
[0030]根据本发明的实施例,最小空闲CPU率和SPIN失败率可以利用配置文件中的元数据定义。例如,在Tuxedo配置文件中,可以存在用于定义最小空闲CPU率的MINIDLECPU参数,其值具有1-100的范围,其中20作为默认值。另外,可以存在用于定义SPIN失败率的FACTOR参数,其值具有1-10000的范围,其中1000作为默认值。
[0031]当给定最小空闲CPU率和SPIN失败率时,系统可以在每个扫描元件中调谐SPINCOUNT。然后,如果SPIN失败率太高(例如SPIN失败率被设置为大于(I/FACTOR*1.0),则系统可以增加SPINCOUNT,或空闲的CPU时间是足够的(例如,空闲率>MINIDLECPU%+0.05),其中新的 SPINCOUNT=旧的 SPINCOUNT+ 旧的 SPINCOUNT* (cpu_idletime/cpu_usertime),并且最大SPINCOUNT可以被设置为10,000, 000。否则,当空闲CPU率太低(例如,空闲率〈MINIDLECPU%-0.05),其中新的SPINCOUNT=旧的SPINC0UNT/4并且最小SPINCOUNT被设置为50000时,系统可以减小SPINCOUNT。
[0032]以下列表1是 用于SPINTUNING配置的Tuxedo示例。
[0033]
【权利要求】
1.一种用于在事务中间件机器环境中支持锁定机制的系统,包括: 信号量,由运行在多个处理器上的操作系统提供,其中多个处理器操作以访问共享存储器中的数据; 测试置位(TAS)装配组件,与一个或多个处理相关联,其中每个所述处理操作来使用TAS装配组件执行一个或多个TAS操作以便获得对共享存储器中的数据的锁定。 其中在TAS组件已经执行了指定数目的TAS操作并且未能获得锁定之后,一处理操作来在信号量上被阻断并且等待对共享存储器中的数据的锁定的释放。
2.如权利要求1所述的系统,其中在存在多个并行事务时,所述锁定机制保护共享存储器中的事务数据。
3.如权利要求1所述的系统,其中所述锁定机制使用旋转计数,旋转计数是允许的TAS操作的指定的最大轮数。
4.如权利要求3所述的系统,其中旋转计数被预配置在元数据中。
5.如权利要求3所述的系统,其中旋转计数是基于硬件配置和应用情况动态地确定的。
6.如权利要求3所述的系统,其中旋转计数是利用特殊处理周期性地确定的。
7.如权利要求6所述的系统,其中旋转计数是利用算法动态地确定的,其中所述算法指定: 如果在前一周期中旋转失败的数目超过旋转失败极限并且在前一周期中CPU空闲率低于CPU空闲率极限,则旋转计数从前一周期的旋转计数增加,以及 如果CPU空闲率超过CPU空闲率极限,则旋转计数从前一周期的旋转计数减小。
8.如权利要求7所述的系统,其中当处理在尝试TAS操作指定次数之后未能获得对数据的锁定时,旋转失败发生。
9.如权利要求1所述的系统,其中当锁定拥有者醒来并且释放锁定时,该处理使用信号量操作来获得锁定。
10.如权利要求1所述的系统,其中旋转计数被手动地精细调谐以找到优化的值。
11.一种用于在事务中间件机器环境中支持锁定机制的方法,包括: 提供与运行在多个处理器上的操作系统相关联的信号量,其中所述多个处理器操作以访问共享存储器中的数据; 经由一个或多个处理中的一处理,利用测试置位(TAS)装配组件来执行一个或多个TAS操作以便获得对共享存储器中的数据的锁定; 在TAS组件已经执行了指定数目的TAS操作并且未能获得锁定之后,经由该处理在信号量上阻断并且等待对共享存储器中的数据的锁定的释放。
12.如权利要求11所述的方法,还包括在存在多个并行事务时保护共享存储器中的事务数据。
13.如权利要求11所述的方法,还包括允许锁定机制使用旋转计数,旋转计数是允许的TAS操作的指定的最大轮数。
14.如权利要求13所述的方法,还包括在元数据中预配置所述旋转计数。
15.如权利要求13所述的方法,还包括基于硬件配置和应用情况动态地确定所述旋转计数。
16.如权利要求13所述的方法,还包括利用特殊处理周期性地确定所述旋转计数。
17.如权利要求16所述的方法,其中所述旋转计数是利用算法动态地确定的,其中所述算法指定: 如果在前一周期中旋转失败的数目超过旋转失败极限并且在前一周期中CPU空闲率低于CPU空闲率极限,则旋转计数从前一周期的旋转计数增加,以及 如果CPU空闲率超过CPU空闲率极限,则旋转计数从前一周期的旋转计数减小。
18.如权利要求17所述的方法,其中当处理在尝试TAS操作指定次数之后未能获得对数据的锁定时,旋转失败发生。
19.如权利要求11所述的方法,还包括当锁定拥有者醒来并且释放锁定时使用信号量获得锁定。
20.如权利要求11所述的方法,还包括手动地精细调谐所述旋转计数以找到优化的值。
21.一种程序,使得计算机执行权利要求11到20中任何一个所述的方法。
22.—种 计算机可读非易失性介质,存储如权利要求21所述的程序。
【文档编号】G06F15/167GK103842986SQ201280047496
【公开日】2014年6月4日 申请日期:2012年9月18日 优先权日:2011年9月29日
【发明者】申旭刚, 李向东 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1