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

上传人:b*** 文档编号:6104309 上传时间:2019-04-11 格式:PDF 页数:19 大小:1,012.85KB
返回 下载 相关 举报
摘要
申请专利号:

CN201480078564.5

申请日:

2014.04.30

公开号:

CN106471486A

公开日:

2017.03.01

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 15/167申请日:20140430|||公开

IPC分类号:

G06F15/167

主分类号:

G06F15/167

申请人:

甲骨文国际公司

发明人:

金永顺; 申旭刚; 张庆生

地址:

美国加利福尼亚

优先权:

专利代理机构:

中国国际贸易促进委员会专利商标事务所 11038

代理人:

袁玥

PDF下载: PDF下载
内容摘要

系统和方法可以支持事务中间件机器环境中的自适应自调整锁定机制。该系统允许多个进程中的每个进程执行一个或多个测试和设置(TAS)操作,以便获得用于共享存储器中的数据的锁。然后,该系统可以获得当前调整周期的旋转失败率,其中当进程在执行允许的TAS操作的最大轮数之后不能获得锁时,发生旋转失败。此外,该系统可以基于所获得的旋转失败率来自适应地配置下一调整周期的旋转计数,其中旋转计数指定对下一调整周期允许的TAS操作的最大轮数。

权利要求书

1.一种用于支持事务中间件机器环境中的自适应锁定机制的方法,包括:
经由多个进程中的每个进程执行一个或多个测试和设置(TAS)操作,以便获得用于共
享存储器中的数据的锁;
获得当前调整周期的旋转失败率,其中当进程在执行允许的TAS操作的最大轮数之后
未能获得锁时,发生旋转失败;及
基于所获得的旋转失败率自适应地配置下一调整周期的旋转计数,其中该旋转计数指
定对下一调整周期允许的TAS操作的最大轮数。
2.如权利要求1所述的方法,还包括:
使用组件部件来执行所述一个或多个TAS操作。
3.如权利要求1所述的方法,还包括:
使用元数据预配置旋转计数。
4.如权利要求1所述的方法,还包括:
确定当前调整周期的空闲CPU率是否大于用户配置的最小空闲CPU率以及当前调整周
期的旋转失败比率是否满足用户配置的目标。
5.如权利要求4所述的方法,还包括:
当当前调整周期的空闲CPU率大于用户配置的最小空闲CPU率并且当前调整周期的旋
转失败比率不满足用户配置的目标时,
如果当前调整周期的旋转失败比率好于最后一次良好旋转失败比率,或者
如果当前调整周期的旋转失败比率在没有调整的情况下变得更差,
则增加旋转计数。
6.如权利要求5所述的方法,还包括:
将用于可能的旋转计数值的范围划分为若干个间隔,及
使用不同的公式来计算每个不同间隔中的调整旋转计数值。
7.如权利要求1所述的方法,还包括:
如果满足以下中的至少一个
应用处于空闲,
空闲CPU比率大于用户配置的最小空闲CPU率,并且用户CPU比率是足够的,及
旋转计数已经被保持稳定一段时间,
则减少旋转计数。
8.如权利要求1所述的方法,还包括:
如果满足以下中的至少一个
当前调整周期的旋转失败比率满足要求,
当前调整周期的旋转计数达到上限或下限,及
当前调整周期的旋转失败比率保持稳定,
则保持旋转计数。
9.如权利要求1所述的方法,还包括:
通过具有旋转失败的进程在信号量等待队列中等待共享存储器中的数据上的锁的释
放;及
当锁拥有者释放数据上的锁时,访问共享存储器中的数据。
10.如权利要求9所述的方法,还包括:
当信号量等待队列不为空时,对执行TAS操作的每个进程应用额外的旋转计数。
11.一种用于在事务中间件机器环境中提供自适应锁定机制的系统,包括:
一个或多个处理器;
多个进程,其中所述多个进程中的每个进程操作来执行一个或多个测试和设置(TAS)
操作,以便获得用于共享存储器中的数据的锁;
事务服务器,在所述一个或多个处理器上运行,操作来
获得当前调整周期的旋转失败率,其中当进程在执行允许的TAS操作的最大轮数之后
未能获得锁时,发生旋转失败;及
基于所获得的旋转失败率自适应地配置下一调整周期的旋转计数,其中该旋转计数指
定对下一调整周期允许的TAS操作的最大轮数。
12.如权利要求11所述的系统,其中:
组件部件被用来执行所述一个或多个TAS操作。
13.如权利要求11所述的系统,其中:
使用元数据预配置旋转计数。
14.如权利要求11所述的系统,其中:
管理部件操作来确定当前调整周期的空闲CPU率是否大于用户配置的最小空闲CPU率
以及当前调整周期的旋转失败比率是否满足用户配置的目标。
15.如权利要求14所述的系统,其中:
当当前调整周期的空闲CPU率大于用户配置的最小空闲CPU率并且当前调整周期的旋
转失败比率不满足用户配置的目标时,
如果当前调整周期的旋转失败比率好于最后一次良好旋转失败比率,或者
如果当前调整周期的旋转失败比率在没有调整的情况下变得更差,
则管理部件操作来增加旋转计数。
16.如权利要求15所述的系统,其中:
用于可能的旋转计数值的范围被划分为若干个间隔,并且管理部件操作来使用不同的
公式来计算每个不同间隔中的调整旋转计数值。
17.如权利要求11所述的系统,其中:
如果满足以下中的至少一个
应用处于空闲,
空闲CPU比率大于用户配置的最小空闲CPU率,并且用户CPU比率是足够的,及
旋转计数已经保持稳定一段时间,
则管理部件操作来减少旋转计数。
18.如权利要求11所述的系统,其中:
如果满足以下中的至少一个
当前调整周期的旋转失败比率满足要求,
当前调整周期的旋转计数达到上限或下限,及
当前调整周期的旋转失败比率保持稳定,
则管理组件操作来保持旋转计数。
19.如权利要求11所述的系统,其中:
管理部件操作来
使具有旋转失败的进程在信号量等待队列中等待共享存储器中的数据上的锁的释放;
当锁拥有者释放数据上的锁时,访问共享存储器中的数据;及
当信号量等待队列不为空时,对执行TAS操作的进程应用额外的旋转计数。
20.一种其上存储有指令的非瞬时性机器可读存储介质,所述指令当被执行时使系统
执行包括以下的步骤:
经由多个进程中的每个进程执行一个或多个测试和设置(TAS)操作,以便获得用于共
享存储器中的数据的锁;
获得当前调整周期的旋转失败率,其中当进程在执行允许的TAS操作的最大轮数之后
未能获得锁时,发生旋转失败;及
基于所获得的旋转失败率自适应地配置下一调整周期的旋转计数,其中该旋转计数指
定对下一调整周期允许的TAS操作的最大轮数。

说明书

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

版权声明

本专利文档的公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何
人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现的那样进行影
印复制,但是除此之外在任何情况下都保留所有版权。

对相关申请的交叉引用

本申请涉及以下专利申请,其中每个都通过引用被完整地结合于此:

于2012年3月7日提交的、标题为“SYSTEM AND METHOD FOR SUPPORTING A SELF-
TUNING LOCKING MECHANISM IN A TRANSACTIONAL MIDDLEWARE MACHINE ENVIRONMENT”的
美国专利申请,申请No.13/414,593(代理人案号为ORACL-05255US1)。

技术领域

本发明一般涉及诸如中间件的计算机系统和软件,并且特别地涉及支持事务中间
件机器环境。

背景技术

事务中间件系统或面向事务的中间件包括可以处理组织内的各种事务的企业应
用服务器。随着诸如高性能网络和多处理器计算机的新技术的发展,需要进一步改进事务
中间件的性能。这些是本发明的实施例旨在解决的一般领域。

发明内容

本文描述了可以支持事务中间件机器环境中的自适应自调整锁定机制的系统和
方法。该系统允许多个进程中的每个进程执行一个或多个测试和设置(test-and-set,TAS)
操作,以便获得用于共享存储器中的数据的锁。然后,该系统可以获得当前调整周期的旋转
失败率,其中当进程在执行允许的TAS操作的最大轮数之后不能获得锁时,发生旋转失败。
此外,该系统可以基于所获得的旋转失败率来自适应地配置下一调整周期的旋转计数,其
中旋转计数指定对下一调整周期允许的TAS操作的最大轮数。

附图说明

图1示出了根据本发明实施例的支持锁机制的事务中间件机器环境的图示。

图2示出了根据本发明实施例的支持事务中间件机器环境中的自适应自调整锁机
制的图示。

图3示出了根据本发明实施例的用于支持事务中间件机器环境中的自适应自调整
锁机制的示例性流程图。

图4示出了根据本发明实施例的在支持自适应自调整锁机制的事务中间件机器环
境中动态增加旋转计数值的图示。

图5示出了根据本发明实施例的在支持自适应自调整锁机制的事务中间件机器环
境中动态减少旋转计数值的图示。

图6示出了根据本发明实施例的在支持自适应自调整锁机制的事务中间件机器环
境中保持旋转计数值不变的图示。

图7示出了根据本发明实施例的在支持自适应自调整锁机制的事务中间件机器环
境中配置具有负载浪涌(surge)保护的旋转计数的图示。

图8示出了根据本发明实施例的用于在事务中间件机器环境中配置具有负载浪涌
保护的旋转计数的示例性流程图。

具体实施方式

本文描述了用于在事务中间件机器环境中支持自适应自调整锁定机制的系统和
方法。

根据本发明的实施例,系统包括高性能硬件(例如64位处理器技术)、高性能大存
储器、以及冗余InfiniBand和以太网联网、连同应用服务器或中间件环境(诸如WebLogic套
件)的组合,以提供包括可以被快速供给并且可按需缩放的大规模并行存储器内网格的完
整Java EE应用服务器集合体。根据实施例,系统可以被部署为提供应用服务器网格、存储
区域网络和InfiniBand(IB)网络的全、半或四分之一机架或其它配置。中间件机器软件可
以提供应用服务器、中间件和其它功能,诸如像WebLogic服务器、JRockit或Hotspot JVM、
Oracle Linux或Solaris以及Oracle VM。根据实施例,系统可以包括经由IB网络彼此通信
的多个计算节点、IB交换机网关和存储节点或单元。当实现为机架配置时,机架的未使用部
分可以留空或被填充物占据。

根据本文被称为“Sun Oracle Exalogic”或“Exalogic”的本发明的实施例,系统
是用于托管诸如Oracle中间件SW套件或Weblogic的中间件或应用服务器软件的易于部署
的解决方案。如本文所述,根据实施例,系统是包括一个或多个服务器、存储单元、用于存储
联网的IB架构、以及托管中间件应用所需的所有其它部件的“盒中网格”。通过利用使用例
如真正应用集群和Exalogic开放存储的大规模并行网格体系架构,可以为所有类型的中间
件应用提供显著的性能。系统交付具有线性I/O可扩展性的改进的性能、易于使用和管理、
并且交付任务关键的可用性和可靠性。

根据本发明的实施例,Tuxedo是一组软件模块,其使得能够构建、执行和管理高性
能、分布式业务应用,并且已被多个多层应用开发工具用作事务中间件。Tuxedo是可用来管
理分布式计算环境中的分布式事务处理的中间件平台。它是经过验证的平台,用于解锁企
业传统应用并将其扩展到面向服务的体系架构,同时交付无限的可扩展性和基于标准的互
操作性。

根据本发明的实施例,诸如Tuxedo系统的事务中间件系统可以利用具有多个处理
器的快速机器(诸如Exalogic中间件机器)以及高性能网络连接(诸如Infiniband(IB)网
络)。

锁机制

图1示出了根据本发明实施例的支持锁机制的事务中间件机器环境的图示。如图1
所示,当存在并发事务时(即,在进程111-115上),事务中间件环境100可以采用锁机制103
来保护共享存储器101中的各种事务数据102,例如,在Tuxedo环境中的公告板(BB)。

根据本发明的实施例,事务中间件环境100可以通过使用用于实现有效锁定机制
的原子TAS(测试和设置)104组件部件来利用多处理器机器。此外,如果需要,事务应用中的
进程可以使用由操作系统(OS)提供的信号量机制107来获得数据102上的锁。

例如,当进程111想要获得数据102上的锁时,进程111可以执行多个轮次的TAS操
作。系统可以指定旋转计数105,该旋转计数105是允许的TAS操作的最大轮数。

如图1所示,如果锁103在达到旋转计数105之前变得可用,则进程111可以以比由
OS提供的信号量107机制低得多的成本获得锁103。

否则,如果在进程111已经执行允许的TAS操作的最大轮数之后锁103不可用,则进
程111可以在信号量107上阻塞并且可以等待直到锁拥有者释放锁103。例如,可以将信号量
107上阻塞的锁请求放入到队列中,例如,信号量等待队列106。

此外,在信号量107上阻塞的锁请求可以具有比基于TAS组件部件104的锁请求更
高的优先级。因此,只要信号量等待队列106不为空,锁保持器就将首先把锁103释放给在信
号量等待队列106中的进程。

自适应自调整锁机制

图2示出了根据本发明实施例的支持事务中间件机器环境中的自适应自调整锁机
制的图示。如图2所示,当存在并发事务时(即,在进程211-215上),事务中间件环境200可以
采用锁机制203来保护共享存储器201中的各种事务数据202。

例如,当进程211-215想要获得数据202上的锁203时,进程211-215中的每一个可
以执行多轮TAS 204操作。系统可以指定旋转计数205,该旋转计数205是允许的TAS操作的
最大轮数。根据本发明的实施例,诸如Tuxedo配置文件中的SPINCOUNT参数的元数据可以用
于指定旋转计数205的默认值和/或初始值。

如图2所示,如果锁203在达到旋转计数205之前变得可用,则进程(例如,进程211-
212和214-215中的一个)可以以比由OS提供的信号量机制少得多的成本获得锁203。

否则,如果锁203在达到旋转计数205之前不可用(即,发生旋转失败),则进程(例
如进程213)可以被配置为在信号量上阻塞,并且等待直到锁拥有者释放锁203并将其唤醒。

此外,旋转计数值205可以存储在共享存储器201中。诸如Tuxedo守护进程的特殊
进程可以根据在先前调整周期收集到的操作信息周期性地调整(或改变)旋转计数值205。
例如,默认情况下,Tuxedo守护程序可以每五秒更新目标旋转计数值。

根据一种实施例,可以使用不同的算法来计算和配置旋转计数205的值。例如,当
当前调整周期的CPU空闲比率足够时,如果旋转失败率208高于目标(即太多的TAS 204操作
未能在当前调整周期中获得锁203并且已切换到信号量),则简单算法206可以增加旋转计
数205的值。此外,如果CPU空闲比率太高,则简单算法可以减少旋转计数205的值。

虽然简单算法206易于实现,但是当简单算法206在例如Oracle数据库的真实资源
管理器(RM)上运行时,它可能遇到不同的问题。例如,由于只要旋转失败比率是亚标准的,
简单算法206就将增加旋转计数值205,因此简单算法206会生成极大的旋转计数值205。此
外,简单算法206可能不能微调旋转计数值205,这是因为由简单算法206所采取的增加旋转
计数值205的步进往往太大,并且旋转计数值205会在几轮调整中达到上限。此外,简单算法
206会生成大的旋转计数值205,当在真实RM上运行时,这实际上在系统中导致较差的吞吐
量。此外,当空闲CPU比率足够高时,简单算法206可以不减小旋转计数值205。此外,简单算
法206会难以对真实RM环境相应地配置默认原始旋转计数值205和旋转失败率208的默认目
标。

可替代地,系统可以采用自适应算法207来实时动态地计算旋转计数205的值。自
适应算法207可以避免当系统在例如Oracle数据库的真实资源管理器(RM)上运行时利用简
单算法206可能发生的各种问题。

根据本发明的实施例,自适应算法207可以通过保持良好的调整来防止不好的调
整。例如,自适应算法207可以存储来自最后一个良好调整周期的旋转计数值205和旋转失
败率208。

对于每个调整周期210,系统可以检查当前旋转失败率208是否好于存储的最后一
个良好旋转失败比率。如果当前旋转失败率208好于最后一个良好旋转失败比率,则系统可
以将当前调整周期210视为良好调整。然后,系统可以高速缓存当前旋转计数值205和当前
旋转失败率208。另一方面,如果当前旋转失败率在调整之后增加(即变得更差),则系统可
以使用存储的最后一个良好旋转计数值205用于下一调整周期210。

因此,事务中间件环境200可以支持大规模并发事务场景并实现高吞吐量。

图3示出了根据本发明实施例的用于支持事务中间件机器环境中的自适应自调整
锁机制的示例性流程图。如图3所示,在步骤301,每个进程可以执行一个或多个测试和设置
(TAS)操作,以便获得用于共享存储器中的数据的锁。此外,在步骤302,系统可以获得当前
调整周期的旋转失败率,其中当进程在执行允许的TAS操作的最大轮数之后不能获得锁时,
发生旋转失败。此外,在步骤303,系统可以基于所获得的旋转失败率自适应地配置下一调
整周期的旋转计数值,其中旋转计数指定对下一调整周期允许的TAS操作的最大轮数。

动态计算目标旋转计数值的自适应算法

根据本发明的实施例,系统可以使用自适应算法来实时动态地确定目标旋转计数
值。此外,系统可以在硬件配置和应用场景的上下文中计算目标旋转计数值。

例如,在Tuxedo环境中,系统可以通过调用如下所示的函数来计算旋转计数值。

static int_calc_spintuning(_TCADEF)

在Tuxedo中,应用可以在每个调整周期中调用上述函数,诸如在每个扫描单元中
(其可以使用RESOURCE部分中的参数SCANUNIT来配置)。

此外,如下所示,系统可以调用负责检索CPU比率的另一函数。

static int getCPUrate(int type,float*rate,int size)

上述功能的实现可以是平台相关的。例如,上述函数可以通过系统工具获得CPU比
率,诸如Exalogic Elastic Cloud(64位Linux)平台中的file/proc/stat工具。可替代的,
上述函数可以通过系统库获得CPU比率,诸如在SPARC SuperCluster(64位Sparc)平台中的
kstat库。

图4示出了根据本发明实施例的在支持自适应自调整锁机制的事务中间件机器环
境中动态增加旋转计数值的图示。如图4所示,自适应算法可以在适当时动态增加旋转计
数。

在步骤401,系统可以检查当前空闲CPU是否足够,即当前调整周期的空闲CPU率是
否大于用户配置的最小空闲CPU率。此外,在步骤402,系统可以检查当前旋转失败比率是否
低于用户配置的目标。

然后,当当前空闲CPU足够或当前调整周期的当前旋转失败比率已经满足用户配
置的目标时,自适应算法可以决定不增加旋转计数。

否则,在步骤403,自适应算法可以检查当前旋转失败比率是否好于存储的最后一
个良好旋转失败比率。此外,在步骤404,自适应算法可以检查当前旋转失败比率是否在没
有调整的情况下变得更差。

因此,在步骤405,如果当前调整周期的旋转失败比率小于最后一个良好旋转失败
比率,或者如果当前调整周期的旋转失败比率在没有调整的情况下变得更差,则系统可以
增加旋转计数。

最后,在步骤406,系统可以前进到下一个调整周期,这可以导致进程返回到对下
一调整周期重复上述步骤401-405。

在Tuxedo中,系统可以使用以下算法来确定旋转计数的增加(即,计算下一调整周
期的调整的SPI NCOUTN)。

调整的SPI NCOU NT+=

(SPINCOUNT*base_factor)*min(max_times,(空闲CPU比率/用户CPU比率))

上述算法使用两个因子来微调SPINCOUTN的增加,这取决于当前SPINCOUTN值和空
闲CPU比率/用户CPU比率的值。第一个因子,base_factor,小于1,其可以用来减少当前
SPINCOUNT的贡献。第二个因子max_times可以用作空闲CPU比率/用户CPU比率的上限。

此外,可能的SPINCOUNT值的范围可以被划分为若干个间隔。以下表1示出了若干
个间隔的示例性划分。



表1

如以上表1所示,不同的间隔可以被配置有不同的base_factor和max_times值。为
了确保SPINCOUNT可以逐渐达到目标值,随着SPINCOUNT变大,可以将base_factor和max_
times的值设置得更小。

图5示出了根据本发明实施例的在支持自适应自调整锁机制的事务中间件机器环
境中动态减少旋转计数值的图示。如图5所示,自适应算法可以在适当时动态减少旋转计
数。

在步骤501,自适应算法可以检查应用是否空闲。此外,在步骤502,自适应算法可
以检查当前空闲CPU比率是否大于限制,并且用户CPU比率是否足够,并且在步骤503,自适
应算法可以检查当前旋转计数是否被保持不变(或稳定)一段足够长的时间。

然后,在步骤504,如果应用空闲,则算法可以减少旋转计数。例如,Tuxedo可以使
用以下公式来减小SPI NCOUNT值。

调整的SPI NCOUNT-=调整的SPI NCOU NT>>3

使用上述算法,当应用变得空闲时,Tuxedo可以自动地将高SPINCOUNT值恢复到原
始SPI NCOUNT值。

此外,在步骤504,如果当前空闲CPU比率大于限制(如由用户配置的)并且用户CPU
比率足够,则算法可以减少旋转计数。例如,Tuxedo可以使用以下公式来减小SPINCOUNT值。

调整的SPI NCOUNT=调整的SPINCOUNT>>2

此外,在步骤504,如果当前SPINCOUNT已经在足够长的一段时间内保持稳定,则算
法可以减少旋转计数。例如,Tuxedo可以使用以下公式来减少SPINCOUNT值。

调整的SPI NCOU NT-=调整的SPI NCOUNT>>3

使用上述算法,Tuxedo允许SPINCOUNT值在长稳定时间之后减小。因此,当负载变
得较轻时,Tuxedo可以自动将高SPINCOUNT恢复到合适的值。

最后,在步骤505,系统可以前进到下一调整周期,这可以导致进程返回到对下一
调整周期重复上述步骤501-504。

图6示出了根据本发明实施例的在支持自适应自调整锁机制的事务中间件机器环
境中保持旋转计数值不变的图示。如图6所示,自适应算法可以在不同场景中保持旋转计数
不变。

在步骤601,自适应算法可以检查当前旋转失败比率是否满足要求。此外,在步骤
602,自适应算法可以检查在调整时当前旋转计数是否达到上限或下限,并且在步骤603,自
适应算法可以检查当前旋转失败比率是否保持稳定。

然后,在步骤604,如果当前旋转失败比率满足要求,或者如果在调整时当前
SPINCOUNT达到上限或下限,或者如果当前旋转失败比率保持稳定,则算法可以保持旋转计
数不变。

配置具有负载浪涌保护的旋转计数

图7示出了根据本发明实施例的在支持自适应自调整锁机制的事务中间件机器环
境中配置具有负载浪涌保护的旋转计数的图示。如图7所示,当存在并发事务时(即在进程
711-715上),事务中间件环境700可以采用锁703来保护共享存储器701中的各种事务数据
702。

此外,事务中间件环境700可以使用原子TAS(测试和设置)704组件部件来实现有
效的锁定机制。此外,当发生旋转失败时,系统可以将进程(例如,进程71 1-713)置于信号
量等待队列706中。

如图7所示,由在信号量等待队列706中等待的进程711-713的锁请求可以比由基
于TAS组件部件704的进程714-715的锁请求具有更高的优先级。

因此,只要信号量等待队列706不为空,锁保持器就可以首先将锁703释放给信号
量等待队列706中的进程711-713,并且进程714-715可以不访问锁703。

根据本发明的实施例,系统可以实时动态地确定旋转计数值,因为信号量等待队
列706的长度可以随时间而变化。

如图7所示,系统可以对使用TAS组件部件704的进程714-715应用额外的旋转。例
如,在Tuxedo中,系统可以使用以下算法来实时确定实际使用的旋转计数(即,使用的SPI
NCOUTN)。

使用的SPINCOUNT=调整的SPINCOUNT+额外的旋转*信号量等待队列的深度

如上所述,当计算使用的SPINCOUNT时,Tuxedo可以考虑信号量等待队列的当前深
度。信号量等待队列越深,使用的SPINCOUNT可以被设置得越大。

根据本发明的实施例,当在事务中间件机器环境700中发生负载浪涌时,在TAS组
件部件704处会存在旋转失败的突然增加,这可能导致更多的进程在信号量等待队列706中
等待锁703。

通过对使用TAS组件部件704的进程714-715应用额外的旋转,当信号量队列深时,
系统可以减少旋转失败比率。此外,当系统中的负载最终变轻时,信号量等待队列706的长
度被缩短。因此,可以在调整周期内实时地减少实际使用的旋转计数。

图8示出了根据本发明实施例的用于在事务中间件机器环境中配置具有负载浪涌
保护的旋转计数的示例性流程图。如图8所示,在步骤801,具有旋转失败的进程可以在信号
量等待队列中等待共享存储器中的数据上的锁的释放。然后,在步骤802,当锁拥有者释放
数据上的锁时,进程可以访问共享存储器中的数据。此外,在步骤803,当信号量等待队列不
为空时,系统可以对执行TAS操作的每个进程应用额外的旋转计数。

本发明可以利用包括根据本公开内容的教导编程的一个或多个处理器、存储器
和/或计算机可读存储介质的一个或多个常规通用或专用数字计算机、计算设备、机器或微
处理器来方便地实现。如对软件领域的技术人员将清晰的是,基于本公开内容的教导,熟练
的程序员可以容易地准备适当的软件编码。

在一些实施例中,本发明包括计算机程序产品,其是具有存储在其上/其中的指令
的存储介质或计算机可读介质,其中指令可以用来对计算机进行编程以执行本发明的任何
过程。存储介质可以包括但不限于任何类型的盘(包括软盘、光盘、DVD、CD-ROM、微型驱动器
和磁光盘)、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存存储器设备、磁卡或光卡、纳米系统
(包括分子存储器IC)、或适于存储指令和/或数据的任何类型的介质或设备。

出于说明和描述的目的提供了本发明的前述描述。它并不旨在穷举或将本发明限
定到所公开的精确形式。许多修改和变化对本领域技术人员将是清晰的。修改和变化包括
所公开特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际
应用,从而使本领域其它技术人员能够理解本发明的各种实施例和具有适于构想的特定用
途的各种修改。意图是本发明的范围由所附权利要求及其等同物来限定。

用于在事务中间件机器环境中支持自适应自调整锁定机制的系统和方法.pdf_第1页
第1页 / 共19页
用于在事务中间件机器环境中支持自适应自调整锁定机制的系统和方法.pdf_第2页
第2页 / 共19页
用于在事务中间件机器环境中支持自适应自调整锁定机制的系统和方法.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《用于在事务中间件机器环境中支持自适应自调整锁定机制的系统和方法.pdf》由会员分享,可在线阅读,更多相关《用于在事务中间件机器环境中支持自适应自调整锁定机制的系统和方法.pdf(19页珍藏版)》请在专利查询网上搜索。

系统和方法可以支持事务中间件机器环境中的自适应自调整锁定机制。该系统允许多个进程中的每个进程执行一个或多个测试和设置(TAS)操作,以便获得用于共享存储器中的数据的锁。然后,该系统可以获得当前调整周期的旋转失败率,其中当进程在执行允许的TAS操作的最大轮数之后不能获得锁时,发生旋转失败。此外,该系统可以基于所获得的旋转失败率来自适应地配置下一调整周期的旋转计数,其中旋转计数指定对下一调整周期允许的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1