CN106471486B - 用于在事务中间件机器环境中支持自适应自调整锁定机制的***和方法 - Google Patents

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

Info

Publication number
CN106471486B
CN106471486B CN201480078564.5A CN201480078564A CN106471486B CN 106471486 B CN106471486 B CN 106471486B CN 201480078564 A CN201480078564 A CN 201480078564A CN 106471486 B CN106471486 B CN 106471486B
Authority
CN
China
Prior art keywords
rotation
adjustment period
counting
failure rate
rotation counting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480078564.5A
Other languages
English (en)
Other versions
CN106471486A (zh
Inventor
金永顺
申旭刚
张庆生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN106471486A publication Critical patent/CN106471486A/zh
Application granted granted Critical
Publication of CN106471486B publication Critical patent/CN106471486B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

用于在事务中间件机器环境中支持自适应自调整锁定机制的 ***和方法
版权声明
本专利文档的公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现的那样进行影印复制,但是除此之外在任何情况下都保留所有版权。
对相关申请的交叉引用
本申请涉及以下专利申请,其中每个都通过引用被完整地结合于此:
于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中,***可以使用以下算法来实时确定实际使用的旋转计数(即,使用的SPINCOUTN)。
使用的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)、或适于存储指令和/或数据的任何类型的介质或设备。
出于说明和描述的目的提供了本发明的前述描述。它并不旨在穷举或将本发明限定到所公开的精确形式。许多修改和变化对本领域技术人员将是清晰的。修改和变化包括所公开特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域其它技术人员能够理解本发明的各种实施例和具有适于构想的特定用途的各种修改。意图是本发明的范围由所附权利要求及其等同物来限定。

Claims (20)

1.一种用于支持事务中间件机器环境中的自适应锁定机制的方法,包括:
在第一调整周期期间使用第一旋转计数经由多个进程中的每个进程监控执行测试和设置TAS操作,以便获得用于共享存储器中的数据的锁,其中所述第一旋转计数指定在第一调整周期期间由所述多个进程中的每个进程允许的TAS操作的第一最大轮数;
将所述第一旋转计数存储为最后一个良好旋转计数;
获得第一调整周期的第一旋转失败率,其中第一旋转失败包括所述多个进程中的进程在执行在第一调整周期期间允许的TAS操作的第一最大轮数之后未能获得锁;
基于所获得的第一旋转失败率自适应地配置第一调整周期之后的第二调整周期的第二旋转计数,其中所述第二旋转计数不同于所述最后一个良好旋转计数并且指定在第二调整周期期间由所述多个进程中的每个进程允许的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操作,以便获得用于共享存储器中的数据的锁,其中所述第二旋转计数指定在第二调整周期期间允许的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操作的第一最大轮数之后未能获得锁;
基于所获得的第一旋转失败率自适应地配置第一调整周期之后的第二调整周期的第二旋转计数,其中所述第二旋转计数不同于所述最后一个良好旋转计数并且指定在第二调整周期期间允许的TAS操作的第二最大轮数;
在第二调整周期期间使用第二旋转计数经由所述多个进程中的每个进程监控执行所述TAS操作,以便获得用于所述共享存储器中的数据的锁;
获得第二调整周期的第二旋转失败率,其中第二旋转失败包括所述多个进程中的进程在执行在第二调整周期期间允许的TAS操作的第二最大轮数之后未能获得锁;
响应于第二旋转失败率小于第一旋转失败率,将第二调整周期之后的下一调整周期的下一旋转计数选择性地配置为第二旋转计数,并且将第二旋转计数存储为所述最后一个良好旋转计数;以及
响应于第二旋转失败率大于第一旋转失败率,将第二调整周期之后的下一调整周期的下一旋转计数选择性地配置为所述最后一个良好旋转计数。
CN201480078564.5A 2014-04-30 2014-04-30 用于在事务中间件机器环境中支持自适应自调整锁定机制的***和方法 Active CN106471486B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/076594 WO2015165073A1 (en) 2014-04-30 2014-04-30 System and method for supporting adaptive self-tuning locking mechanism in transactional middleware machine environment

Publications (2)

Publication Number Publication Date
CN106471486A CN106471486A (zh) 2017-03-01
CN106471486B true CN106471486B (zh) 2019-05-17

Family

ID=54355309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480078564.5A Active CN106471486B (zh) 2014-04-30 2014-04-30 用于在事务中间件机器环境中支持自适应自调整锁定机制的***和方法

Country Status (5)

Country Link
US (1) US9846603B2 (zh)
JP (1) JP6446475B2 (zh)
KR (1) KR102239280B1 (zh)
CN (1) CN106471486B (zh)
WO (1) WO2015165073A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017131624A1 (en) * 2016-01-26 2017-08-03 Hewlett Packard Enterprise Development Lp A unified lock
US10740158B2 (en) * 2018-05-02 2020-08-11 EMC IP Holding Company LLC Synchronization object aborting systems and methods
CN110309024B (zh) * 2019-04-23 2023-07-18 网宿科技股份有限公司 数据处理***及其执行数据处理任务的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256509A (zh) * 2008-04-07 2008-09-03 中兴通讯股份有限公司 一种锁机制的加锁方法、解锁方法和实现方法
US8046758B2 (en) * 2004-06-04 2011-10-25 Oracle America, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US8191046B2 (en) * 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
WO2013048826A1 (en) * 2011-09-29 2013-04-04 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295262A (en) * 1991-05-16 1994-03-15 International Business Machines Corporation Read-only access without blocking via access vectors
JP2853608B2 (ja) 1995-05-30 1999-02-03 日本電気株式会社 並列処理システムのファイルアクセス制御方式
US6119115A (en) * 1998-03-12 2000-09-12 Microsoft Corporation Method and computer program product for reducing lock contention in a multiple instruction execution stream processing environment
US6148300A (en) * 1998-06-19 2000-11-14 Sun Microsystems, Inc. Hybrid queue and backoff computer resource lock featuring different spin speeds corresponding to multiple-states
JP2001084235A (ja) * 1999-09-10 2001-03-30 Nec Corp ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体
US6549961B1 (en) 1999-10-27 2003-04-15 Infineon Technologies North America Corporation Semaphore access in a multiprocessor system
US6687904B1 (en) * 1999-11-22 2004-02-03 Sun Microsystems, Inc. Method and apparatus for selecting a locking policy based on a per-object locking history
WO2003038683A1 (en) 2001-11-01 2003-05-08 Verisign, Inc. Transactional memory manager
CA2374290A1 (en) * 2002-03-01 2003-09-01 Ibm Canada Limited-Ibm Canada Limitee Updating spin counters for spin latches
US7051026B2 (en) * 2002-07-31 2006-05-23 International Business Machines Corporation System and method for monitoring software locks
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
GB0518516D0 (en) * 2005-09-10 2005-10-19 Ibm Managing a resource lock
CN101546275B (zh) 2008-03-26 2012-08-22 中国科学院微电子研究所 一种获取多处理器硬件信号量的方法
US8392925B2 (en) * 2009-03-26 2013-03-05 Apple Inc. Synchronization mechanisms based on counters
US8495311B2 (en) * 2009-06-25 2013-07-23 International Business Machines Corporation Updating shared variables atomically
US9575985B2 (en) * 2009-12-07 2017-02-21 Novell, Inc. Distributed lock administration
US9354945B2 (en) * 2012-10-12 2016-05-31 International Business Machines Corporation Managing a lock to a resource shared among a plurality of processors
US9772888B2 (en) * 2013-04-10 2017-09-26 Wind River Systems, Inc. Semaphore with timeout and lock-free fast path for message passing architectures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046758B2 (en) * 2004-06-04 2011-10-25 Oracle America, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
CN101256509A (zh) * 2008-04-07 2008-09-03 中兴通讯股份有限公司 一种锁机制的加锁方法、解锁方法和实现方法
US8191046B2 (en) * 2008-10-06 2012-05-29 Microsoft Corporation Checking transactional memory implementations
WO2013048826A1 (en) * 2011-09-29 2013-04-04 Oracle International Corporation System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment

Also Published As

Publication number Publication date
KR102239280B1 (ko) 2021-04-13
CN106471486A (zh) 2017-03-01
KR20160147984A (ko) 2016-12-23
WO2015165073A1 (en) 2015-11-05
US20150317191A1 (en) 2015-11-05
JP6446475B2 (ja) 2018-12-26
JP2017515234A (ja) 2017-06-08
US9846603B2 (en) 2017-12-19

Similar Documents

Publication Publication Date Title
US11385939B2 (en) Method and system for modeling and analyzing computing resource requirements of software applications in a shared and distributed computing environment
US10621005B2 (en) Systems and methods for providing zero down time and scalability in orchestration cloud services
US9971823B2 (en) Dynamic replica failure detection and healing
CN106663035B (zh) 用于资源隔离和消耗的***、方法、介质和装置
US9559977B2 (en) System and method for supporting a dynamic resource broker in a transactionial middleware machine environment
CN107667363B (zh) 具有多种可选数据处理策略的基于对象的存储集群
US9389907B2 (en) System and method for providing a distributed transaction lock in a transactional middleware machine environment
US20170318091A1 (en) System, device and process for dynamic tenant structure adjustment in a distributed resource management system
CN106471486B (zh) 用于在事务中间件机器环境中支持自适应自调整锁定机制的***和方法
US8914588B2 (en) System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment
Syed et al. The container manager pattern
US7117496B1 (en) Event-based synchronization
TWI652621B (zh) 產生虛擬機器訊息佇列應用程式之相依關係的方法與系統
US9934268B2 (en) Providing consistent tenant experiences for multi-tenant databases
Truyen et al. Feasibility of container orchestration for adaptive performance isolation in multi-tenant SaaS applications
CN115499311B (zh) 一种基于虚拟cpe的资源分配方法及***
US20240192996A1 (en) Mapping of tenant-specific database sessions to workload classes
CN118170528A (zh) 租户级资源隔离的工作负载类
Satoh Self-Adaptively Auto-scaling for Mobile Cloud Applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant