【技术实现步骤摘要】
一种锁传递方法及相关装置
[0001]本申请涉及计算机
,尤其涉及一种锁传递方法及相关装置。
技术介绍
[0002]非统一内存访问(non
‑
uniform memory access,NUMA)是一种多处理器的计算机内存架构。采用NUMA架构的计算机系统通常包括多个NUMA域节点,每个NUMA域节点包含一个或多个处理器和物理内存,且每个NUMA域节点中的物理内存被独立的内存控制器管理。其中,处理器访问同一个NUMA域节点下的物理内存的速度要高于访问其他NUMA域节点下的物理内存的速度。简单来说,在部署NUMA架构的计算机系统中,处理器访问内存的速度取决于内存相对于处理器的位置。
[0003]在计算机系统中的多个线程需要访问同一个共享资源的情况下,为了防止多个线程同时访问该共享资源,各个线程在访问该共享资源之前,需要竞争该共享资源对应的自旋锁。在任何时刻,自旋锁最多只能被一个线程持有,只有持有共享资源对应的自旋锁的线程才能够访问该共享资源。目前,主要是基于线程申请自旋锁的顺序,来决定线程获得自
【技术保护点】
【技术特征摘要】
1.一种锁传递方法,其特征在于,所述方法应用于非统一内存访问NUMA架构,所述NUMA架构为包括多个层级的树形结构,所述树形结构中的每个层级包括一个或多个节点,所述方法包括:获取来自于第一线程的锁释放请求,所述锁释放请求用于请求释放控制访问共享资源的多个锁,所述多个锁中的每个锁对应于所述NUMA架构中各个层级的节点,其中在所述多个锁中,层级相邻的两个节点所对应的锁之间具有持有关系,且对应于低层级节点的锁持有对应于高层级节点的锁;若存在等待抢占第一锁的线程,则根据所述锁释放请求释放所述第一锁并保留所述多个锁之间的持有关系,以将所述多个锁传递给等待抢占所述第一锁的线程,所述第一锁为所述多个锁中对应于最低层级节点的锁;若不存在等待抢占所述第一锁的线程,则根据所述锁释放请求释放所述第一锁以及所述第一锁所持有的第二锁,以将所述第二锁传递给等待抢占所述第二锁的线程;其中,所述共享资源的访问条件为线程持有所述NUMA架构下每个层级的节点所对应的锁。2.根据权利要求1所述的方法,其特征在于,所述根据所述锁释放请求释放所述第一锁以及所述第一锁所持有的第二锁,包括:根据所述锁释放请求释放所述第一锁以及所述第一锁所持有的第二锁,并保留所述多个锁中剩余的锁之间的持有关系,以将所述多个锁中剩余的锁传递给等待抢占所述第二锁的线程;其中,所述多个锁中剩余的锁为所述多个锁中除所述第一锁以外的其他锁。3.根据权利要求1或2所述的方法,其特征在于,在释放所述第一锁所持有的第二锁的过程中,若不存在等待抢占所述第二锁的线程,则释放所述第二锁以及所述第二锁所持有的锁,以将所述多个锁中除所述第一锁和所述第二锁之外的其他锁传递给等待抢占所述第二锁所持有的锁的线程。4.根据权利要求1
‑
3任意一项所述的方法,其特征在于,所述若存在等待抢占第一锁的线程,则根据所述锁释放请求释放所述第一锁并保留所述多个锁之间的持有关系,包括:若存在等待抢占第一锁的线程且所述第一锁的释放次数小于第一阈值,则根据所述锁释放请求释放所述第一锁并保留所述多个锁之间的持有关系,其中所述第一锁的释放次数用于指示所述第一锁在所述第一锁对应的节点下的线程之间的传递次数;所述若不存在等待抢占所述第一锁的线程,则根据所述锁释放请求释放所述第一锁以及所述第一锁所持有的第二锁,包括:若不存在等待抢占所述第一锁的线程,或所述第一锁的释放次数大于或等于所述第一阈值,则根据所述锁释放请求释放所述第一锁以及所述第一锁所持有的第二锁。5.根据权利要求1
‑
3任意一项所述的方法,其特征在于,所述若存在等待抢占第一锁的线程,则根据所述锁释放请求释放所述第一锁并保留所述多个锁之间的持有关系,包括:若存在等待抢占第一锁的线程且所述第一锁持有所述第二锁的时间小于第二阈值,则根据所述锁释放请求释放所述第一锁并保留所述多个锁之间的持有关系,其中所述第一锁的释放次数用于指示所述第一锁在所述第一锁对应的节点下的线程之间的传递次数;所述若不存在等待抢占所述第一锁的线程,则根据所述锁释放请求释放所述第一锁以
及所述第一锁所持有的第二锁,包括:若不存在等待抢占所述第一锁的线程,或所述第一锁持有所述第二锁的时间大于或等于第二阈值,则根据所述锁释放请求释放所述第一锁以及所述第一锁所持有的第二锁。6.根据权利要求1
‑
5任意一项所述的方法,其特征在于,所述方法还包括:获取来自于第二线程的锁申请请求,所述锁申请请求用于请求申请控制访问所述共享资源的锁;根据所述锁申请请求确定所述第二线程对应的多个目标锁,所述多个目标锁分别对应于所述NUMA架构中各个层级的节点,所述多个目标锁中相邻的锁所对应的节点位于相邻的层级,且所述多个目标锁中相邻的锁所对应的节点之间具有连接关系;按照锁对应的节点所处层级从低到高的顺序,依次抢占所述多个锁,直至所述第二线程成功抢占所述多个目标锁。7.根据权利要求1
‑
3任意一项所述的方法,其特征在于,所述若存在等待抢占第一锁的线程,则根据所述锁释放请求释放所述第一锁并保留所述多个锁之间的持有关系,包括:根据所述锁释放请求,调用第一释放函数,所述第一释放函数为所述第一锁对应的锁释放函数;执行所述第一释放函数,并根据等待抢占第一锁的线程的数量不为0,释放所述第一锁并保留所述多个锁之间的持有关系。8.根据权利要求1
‑
3任意一项所述的方法,其特征在于,所述若不存在等待抢占所述第一锁的线程,则根据所述锁释放请求释放所述第一锁以及所述第一锁所持有的第二锁,包括:根据所述锁释放请求,调用第一释放函数,所述第一释放函数为所述第一锁对应的锁释放函数;根据等待抢占第一锁的线程的数量为0,调用所述第一释放函数中所指示的第二释放函数,所述第二释放函数为所述第二锁对应的锁释放函数;执行所述第二释放函数,以释放所述第一锁所持有的第二锁;执行所述第一释放函数,以释放所述第一锁。9.根据权利要求1
‑
8任意一项所述的方法,其特征在于,所述多个锁均为自旋锁。10.根据权利要求1
‑
9任意一项所述的方法,其特征在于,所述多个锁均为类型相同的锁;或,所述多个锁中包括类型不相同的锁。11.根据权利要求10所述的方法,其特征在于,所述多个锁中每个锁的类型是根据不同锁在所述NUMA架构每个层级中的使用性能确定的。12.根据权利要求1
‑
11任意一项所述的方法,其特征在于,所述NUMA架构中的多个层级包括系统层级、NUMA节点层级、缓存组层级和物理核层级;或,所述NUMA架构中的多个层级包括系统层级、插槽层级、NUMA节点层级和缓存组层级。13.一种锁传递装置,其特征在于,所述装置应...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。