自旋锁定参数值的高效调整制造技术

技术编号:38250721 阅读:14 留言:0更新日期:2023-07-25 18:09
本文描述了用于调整用于并发性控制的自旋锁实施方式的参数的系统和方法。在实施例中,系统从资源管理系统连续地检索定义资源管理系统的状态的一个或多个状态值。基于一个或多个状态值,系统确定资源管理系统已经达到稳态,并且作为响应,调整用于由所述资源管理系统执行的自旋锁定的多个参数以识别多个参数的最优值。在调整多个参数之后,系统基于一个或多个当前状态值检测资源管理系统中的工作负载改变,并且作为响应,重新调整用于由所述资源管理系统执行的自旋锁定的所述多个参数以识别参数的新的最优值。以识别参数的新的最优值。以识别参数的新的最优值。

【技术实现步骤摘要】
【国外来华专利技术】自旋锁定参数值的高效调整


[0001]本公开涉及用于资源管理系统和数据库管理系统的基于锁的并发性控制。更具体而言,本公开涉及自旋锁定作为在访问资源时响应查询的手段的改进。

技术介绍

[0002]本节中描述的方法是可以采用的方法,但不一定是以前设想或采用的方法。因此,除非另有说明,否则不应当假设本节中描述的任何方法仅仅因为它们包括在本节中就有资格作为现有技术。另外,不应当假设本节中描述的任何方法仅仅因为它们包括在本节中就已被充分理解、是例行的或常规的。
[0003]资源管理系统中的并发性控制确保向访问资源的请求提供资源的正确版本。在基于锁的并发性控制中,进程或操作请求访问一个或多个资源,并且如果一个或多个资源可用,那么进程或操作将被给予一个或多个资源上的锁。当进程或操作维持一个或多个资源上的锁时,其它进程或操作不能访问该一个或多个资源。
[0004]当进程或操作请求访问被另一个进程或操作锁定的资源时,存在可以给出的几个可能的响应。作为示例,资源管理系统可以拒绝对于访问的请求,要求在未来做出新的请求。这对于接收大量查询或事务时间相对短的系统可能无效。因此,许多系统使用自旋锁实施方式,从而使线程在重新请求访问资源之前通过执行PAUSE(暂停)指令等待。这个循环可以重复多次,直到资源变得可用或者经过一定数量的循环并且系统执行上下文切换。
[0005]虽然自旋锁在实现并发性控制方面往往非常高效,但自旋锁的不同配置可能效率较低并导致CPU周期的浪费或更长的查询时间。可以通过改变一个或多个自旋锁参数的值来配置自旋锁,该一个或多个自旋锁参数包括与常常用暂停指令的数量表达的线程在重试访问资源之前等待多长时间以及在系统执行上下文切换之前线程尝试访问资源的次数相关的参数。这些参数的最优值可以确保线程不会通过在不太可能很快可用的资源上自旋太长时间而浪费CPU周期,或者确保线程可以在资源变得可用时快速访问资源。
[0006]出于多种原因,上面提到的参数的特性调节可能是困难的。一个问题是自旋锁定参数的最优值往往是特定于工作负载的。此外,最优值可以随着新软件被发布或旧软件被更新而改变。因此,当自旋锁要应用于不同的服务器或不同类型的工作负载时,预先调节参数以找到最优默认参数是不可能的。
[0007]第二个问题是工作负载很少保持静态。当工作负载改变时,用于自旋锁定的最优参数值也会改变。虽然可以重新调节这些值,但操作者识别效率下降并重新调节这些值所花费的时间是系统低效率运行的所有时间。可替代地,参数可以被连续或周期性地调节,但这增加了效率低下,因为调节参数的动作可能使系统低效率执行,诸如当选择与设置默认参数时相比使系统以较低效率运行的值时。
[0008]第三个问题是单个暂停指令的长度可以取决于硬件。对于每个系统体系架构,将必须修改以暂停指令的数量表达的延迟值。此外,如果代码从一种系统体系架构转移到另一种系统体系架构,那么将需要为新的系统体系架构确定新的参数值。
[0009]因此,需要一种可以动态调节用于自旋锁定的参数值的系统,以确保资源的高效利用。

技术实现思路

[0010]所附权利要求可以作为本公开的概要。
附图说明
[0011]在附图中:
[0012]图1描绘了用于调整自旋锁定参数的示例系统和过程。
[0013]图2描绘了调整用于查询或其它资源访问请求的自旋锁定的参数的示例方法。
[0014]图3是图示可以在其上实现本公开的实施例的计算机系统的框图。
具体实施方式
[0015]在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本公开的透彻理解。但是,将明显的是,可以在没有这些具体细节的情况下实践实施例。在其它情况下,以框图形式示出了众所周知的结构和设备,以避免不必要地使本公开模糊。
[0016]总体概述
[0017]本文描述了用于动态调节自旋锁定参数的系统和方法。根据实施例,客户端通过衍生(spawn)并行操作的三个线程来发起调节机制。第一线程通过收集工作负载统计信息来监视资源管理系统的状态,而第二线程基于资源管理系统的被监视状态来确定何时达到稳态。当第二线程检测到稳态时,信息被传递给第三线程,第三线程调节用于多个自旋锁定参数的值。当参数已被调节时,第三线程衍生第四线程以基于资源管理系统的被监视状态来检测工作负载改变。当第四线程检测到工作负载改变时,信息被传递给第三线程,第三线程再次调节用于多个自旋锁定参数的值。在实施例中,代替将信息传回第三线程,第四线程重新初始化第二线程,因此使得系统在再次执行调节之前等待稳态。
[0018]可以通过扫描遍历用于每个参数的值的集合并保持优化性能的值来执行调节。用于每个参数的值的范围和/或扫描的方向可以至少部分地基于数据库的被监视状态来确定,从而减少由调节过程造成的任何低效。
[0019]检测稳态和工作负载改变可以通过将当前性能值(诸如吞吐量值)与滑动窗口中的先前性能值进行比较来执行。在当前性能值与先前性能值之间的差异小于第一阈值时可以检测到稳态,而在当前性能值与先前性能值之间的差异大于第二阈值时可以检测到工作负载改变。
[0020]结构概述
[0021]图1描绘了用于调整自旋锁定参数的示例系统和过程。服务器102、客户端104和资源管理系统106通过网络进行通信。资源管理系统106可以是被配置为管理对资源的访问的任何系统,例如数据库管理系统或文件服务器管理系统。服务器102可以将由资源管理系统106管理的资源存储在持久存储装置中。客户端104可以包括与服务器102和/或资源管理系统106交互的应用和/或客户端设备。如本文所使用的,“系统”是指实现本文描述的方法的图1的设备中的一个或多个设备。
[0022]资源管理系统106通过自旋锁定来管理对资源的访问。当线程正在访问资源时,资源管理系统锁定该资源,拒绝未来线程访问该资源,直到锁被移除。使用自旋锁,当线程试图访问被锁定的资源时,资源管理系统使得该线程等待并周期性地检查以查看资源是否可用。资源管理系统可以根据多个参数来实现自旋锁。多个参数可以指定在检查以查看资源是否可用之前资源要自旋多长时间和/或定义在阻塞线程和执行上下文切换之前要执行的自旋和检查周期的数量的同步循环参数。
[0023]在实施例中,自旋锁利用暂停指令使系统在检查以查看资源上的锁是否已被释放之前等待。每个附加的暂停指令都会使得系统在执行下一个动作之前等待特定的时间段。系统在自旋锁中使用的暂停指令的数量可以取决于上面提到的参数中的一个或多个。例如,两个可配置的参数可以包括自旋等待延迟参数和自旋等待暂停乘数参数。系统可以通过随机地或伪随机地选择0和自旋等待延迟参数值之间的值并将所选择的值乘以自旋等待暂停乘数参数值来确定暂停指令的数量。作为实际示例,如果自旋等待延迟参数值为6并且自旋等待暂停乘数值为50,那么系统可以选择0到6之间的值,诸如3,并将其乘以自旋等待暂停乘数值50以产生150。因此,系统可以在检查以查看资源是否可用之前执行150本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种方法,包括:通过连续运行的独立进程从资源管理系统中连续检索定义资源管理系统的状态的一个或多个状态值;基于在第一时间点检索到的所述一个或多个状态值,确定资源管理系统已经达到稳态;响应于确定资源管理系统已经达到稳态,调整用于由所述资源管理系统执行的自旋锁定的多个参数;在调整所述多个参数的同时,识别所述多个参数的第一最优值并将所述多个参数设置为第一最优值;基于在第二时间点检索到的所述一个或多个状态值,检测资源管理系统中的工作负载改变;响应于检测到工作负载改变,重新调整用于由所述资源管理系统执行的自旋锁定的所述多个参数;以及在重新调整所述多个参数的同时,识别所述多个参数的第二最优值并将所述多个参数设置为第二最优值。2.如权利要求1所述的方法,其中所述一个或多个状态值包括吞吐量值和缓冲池命中率值;其中确定资源管理系统已经达到稳态包括:确定当前吞吐量值与先前吞吐量值之间的吞吐量值的改变小于第一阈值;以及确定当前平均缓冲池命中率值与先前平均缓冲池命中率值之间的平均缓冲池命中率值的改变小于第二阈值。3.如权利要求2所述的方法,其中确定当前吞吐量值与先前吞吐量值之间的吞吐量值的改变小于第一阈值包括:监视吞吐量值的滚动中值,其中所述滚动中值由吞吐量值的第一窗口定义;监视滚动中值的第二窗口中的最新滚动中值与滚动中值的第二窗口中的最旧中值之间的百分比差异;确定特定数量的连续百分比差异值全都小于第一阈值,并且作为响应,确定当前吞吐量值与先前吞吐量值之间的吞吐量值的改变小于第一阈值。4.如权利要求1所述的方法,其中所述一个或多个状态值包括吞吐量值;其中检测资源管理系统中的工作负载改变包括:确定当前吞吐量值与先前吞吐量值之间的吞吐量值的改变大于阈值。5.如权利要求4所述的方法,其中确定当前吞吐量值与先前吞吐量值之间的吞吐量值的改变大于阈值包括:监视吞吐量值的滚动中值,其中所述滚动中值由吞吐量值的第一窗口定义;监视滚动中值的第二窗口中的最新滚动中值与滚动中值的第二窗口中的最旧中值之间的百分比差异;确定特定数量的连续百分比差异值全都大于阈值,并且作为响应,确定当前吞吐量值与先前吞吐量值之间的吞吐量值的改变大于阈值。
6.如权利要求1所述的方法,其中调整用于由所述资源管理系统执行的自旋锁定的所述多个参数包括:使用以自旋等待延迟值的范围的最高值开始的自旋等待延迟值的范围内的多个自旋等待延迟值,通过以下操作来执行对用于由所述资源管理系统执行的自旋锁定的自旋等待延迟值的调整:等待特定时间段;在等待所述特定时间段之后记录性能值;以及将自旋等待延迟值递减特定量。7.如权利要求6所述的方法,其中调整用于由所述资源管理系统执行的自旋锁定的所述多个参数还包括:设置所述多个自旋等待延迟值中的特定自旋等待延迟值,所述特定自旋等待延迟值与最高的所记录的性能值对应;使用自旋等待暂停乘数值的第一范围内的第一多个自旋等待暂停乘数值来执行对用于由...

【专利技术属性】
技术研发人员:O
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1