CN112306698A - 一种numa系统中的临界区执行方法及装置 - Google Patents

一种numa系统中的临界区执行方法及装置 Download PDF

Info

Publication number
CN112306698A
CN112306698A CN201910690846.5A CN201910690846A CN112306698A CN 112306698 A CN112306698 A CN 112306698A CN 201910690846 A CN201910690846 A CN 201910690846A CN 112306698 A CN112306698 A CN 112306698A
Authority
CN
China
Prior art keywords
target queue
queue
critical section
thread
data packet
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.)
Pending
Application number
CN201910690846.5A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910690846.5A priority Critical patent/CN112306698A/zh
Publication of CN112306698A publication Critical patent/CN112306698A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Abstract

本申请实施例提供了一种NUMA系统中的临界区执行方法及装置,在NUMA系统中,即使并发竞争锁的线程数量很大,也不会影响锁的性能。本申请提供的NUMA系统中的临界区执行方法包括:运行于所述NUMA系统的一个节点上的第一线程确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;所述第一线程基于从所述目标队列中获取到第一数据包,执行所述临界区。

Description

一种NUMA系统中的临界区执行方法及装置
技术领域
本申请涉及信息技术领域,尤其涉及一种非统一内存访问NUMA系统中的临界区执行方法及装置。
背景技术
非统一内存访问(non-uniform memory access,NUMA)是一种多处理器的计算机内存架构,NUMA架构的计算机系统中的内存访问时间取决于内存相对于处理器的位置。采用NUMA架构的计算机系统通常包括多个NUMA节点,每个NUMA节点包含若干处理器和物理内存(被独立的内存控制器管理)。其中,处理器访问它自己的本地内存的速度比非本地内存(位于另一个节点的内存,或者是处理器之间共享的内存)需要的时间成本少。
系统中的多个线程需要对同一个共享资源执行临界区时,为了防止冲突,各个线程在执行临界区之前,需要竞争该共享资源对应的自旋锁。自旋锁是为防止多处理器并发而引入的一种锁,在任何时刻,自旋锁最多只能被一个线程持有,若一个线程试图请求获取已经被其他某一个线程持有的自旋锁,则该任务可以循环尝试获取该自旋锁,等待该自旋锁重新可用。若该自旋锁未被其他任一个线程持有,则请求获取该自旋锁的该线程可直接获得该自旋锁,以便于对该自旋锁保护的共享资源执行临界区。
由于自旋锁本身就是共享内存中的变量,在NUMA架构的计算机系统中,共享内存可能分布在任意一个节点的内存中。因此,在各个线程竞争该共享内存时,分布于多个节点中的线程都需要访问上述共享内存中的变量,对于距离上述共享内存中的变量所属的节点较远的节点上的线程来说,访问上述共享内存中的变量有着很高的访问时延,随着竞争自旋锁线程的增多,自旋锁的性能会大幅度下降。
发明内容
本申请提供了一种NUMA系统中的临界区执行方法及装置,用于减少NUMA系统中多线程并发竞争锁引起的时延开销,提升锁的性能。
第一方面,本申请实施例提供了一种非统一内存访问NUMA系统中的临界区执行方法,包括:运行于所述NUMA系统的一个节点上的第一线程确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;所述第一线程基于从所述目标队列中获取到第一数据包,执行所述临界区。
通过上述方式,将临界区绑定到NUMA节点中的特定硬件队列,并将临界区的自旋锁的申请和释放转化为硬件队列的加包和取包操作,及以能否从临界区绑定的硬件队列中获取到数据包为依据来判断是否可以执行临界区。由于NUMA节点内的硬件队列的取包消耗的时间相比于从内存中读取锁变量的时间较短,且由于不需要将获取到的数据写入cacheline中,进而系统中不会出现由于现有技术中将锁变量写入cacheline,当锁变量发生变化,而导致系统出现大量cachemiss的情况。即使在NUMA系统中并发竞争锁的线程数量很大,对锁的性能的影响也比较小。
在第一方面的一种可能的设计中,所述第一线程执行所述临界区之后,所述第一线程将第二数据包加入所述目标队列。这样,将临界区的自旋锁的释放转化为硬件队列的加包操作,其它线程后续可以从该目标队列中获取到数据包,进而执行所述临界区,而不用访问内存中的锁变量,时延大大降低了。
在第一方面的一种可能的设计中,所述临界区唯一对应于所述多个节点的硬件队列中的一个硬件队列。也就是说,一个临界区可以绑定NUMA节点中的特定硬件队列上,这样,每个硬件队列代表一把保护临界区的锁。线程从临界区绑定的硬件队列中获取包,如果获取到包,则说明锁可以抢占,临界区可以执行。线程完成临界区执行后,向该临界区绑定的硬件队列中添加包,即代表本线程已释放临界区的锁,其他等待获取该临界区的锁的线程可以拿到锁(取到包),进而执行临界区。
在第一方面的一种可能的设计中,利用对硬件队列中数据包的插入和获取低时延特点,把针对临界区的自旋锁的状态值放入硬件队列中,避免了从内存访问自旋锁状态值的开销,特别是访问远端内存中的锁状态值的高时延开销。
在第一方面的一种可能的设计中,所述第一线程获取所述临界区对应的目标队列的标识ID。
在第一方面的一种可能的设计中,所述方法还包括:所述第一线程向硬件加速器发送所述目标队列的ID;所述第一线程接收所述硬件加速器根据所述目标队列的ID返回的所述第一数据包,其中,所述第一数据包为所述目标队列中的数据包。
在第一方面的一种可能的设计中,所述第一线程获取临界区对应的目标队列的标识ID,包括:所述第一线程从所述临界区对应的锁信息中获取所述目标队列的标识ID。
在第一方面的一种可能的设计中,所述第一线程将第二数据包加入所述目标队列,包括:所述第一线程向硬件加速器发送所述目标队列的ID和第二数据包,以指示所述硬件加速器根据所述目标队列的ID将所述第二数据包加入所述目标队列。
在第一方面的一种可能的设计中,所述目标队列为先入先出队列。这样,可以保证先申请获取目标队列中的数据包的线程可以先获取到,使得不会出现后申请获取目标队列中的数据包的线程,反而先执行临界区的情况,保证了各个线程对临界区执行的公平性。
在第一方面的一种可能的设计中,所述方法还包括:所述第一线程基于未从所述目标队列中获取到第一数据包,等待预设时间后重复执行从所述目标队列获取数据包的步骤,直至获取到所述第一数据包。这样,将线程循环获取自旋锁的动作转化为对目标队列获取包的动作。
第二方面,本申请提供了一种NUMA系统中的临界区执行装置,所述装置包括:处理器和存储器,所述存储器用于执行所述存储区中存储的程序,以执行第一方面或第一方面任一种可能的设计中的方法。
第三方面,本申请提供了一种NUMA系统中的临界区执行装置,所述装置包括:确定模块,用于确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;执行模块,用于基于从所述目标队列中获取到第一数据包,执行所述临界区。
在第二方面的一种可能的设计中,所述装置还包括:收发模块,用于执行所述临界区之后,将第二数据包加入所述目标队列。
在第二方面的一种可能的设计中,所述临界区唯一对应于所述多个节点的硬件队列中的一个硬件队列。
在第二方面的一种可能的设计中,所述确定模块,具体用于:获取所述临界区对应的目标队列的标识ID。
在第二方面的一种可能的设计中,所述收发模块,具体用于:向硬件加速器发送所述目标队列的ID;接收所述硬件加速器根据所述目标队列的ID返回的所述第一数据包,其中,所述第一数据包为所述目标队列中的数据包。
在第二方面的一种可能的设计中,所述确定模块,具体用于:从所述临界区对应的锁信息中获取所述目标队列的标识ID。
在第二方面的一种可能的设计中,所述收发模块,具体用于:向硬件加速器发送所述目标队列的ID和第二数据包,以指示所述硬件加速器根据所述目标队列的ID将所述第二数据包加入所述目标队列。
在第二方面的一种可能的设计中,所述目标队列为先入先出队列。
在第二方面的一种可能的设计中,其特征在于,所述收发模块,还用于:基于未从所述目标队列中获取到第一数据包,等待预设时间后重复执行从所述目标队列获取数据包的步骤,直至获取到所述第一数据包。
本申请实施例中,运行于所述NUMA系统的一个节点上的第一线程确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;所述第一线程基于从所述目标队列中获取到第一数据包,执行所述临界区。通过上述方式,将物理队列和临界区进行绑定,以能否从物理队列中获取到数据包为依据来判断是否可以执行临界区,由于物理队列的取包消耗的时间相比于从内存中读取锁变量的时间较短,且由于不需要将获取到的数据写入缓存中,进而系统中不会出现由于现有技术中将锁变量写入缓存,当锁变量发生变化,而导致系统出现大量cache miss的情况。在NUMA系统中,即使并发竞争锁的线程数量很大,也不会影响锁的性能。
附图说明
图1为本申请实施例提供的一种NUMA系统的示意性架构示意图;
图2为一种NUMA架构中两个节点的连接示意图;
图3为本申请实施例提供的一种NUMA系统中的临界区执行方法的示意图;
图4a至图4h为本申请实施例一种临界区执行的示意图;
图5为本申请实施例一种临界区执行的流程示意图;
图6为本申请实施例提供的一种NUMA系统中的临界区执行装置的结构示意图;
图7为本申请实施例提供的一种NUMA节点的结构示意图;
图8为本申请实施例提供的一种NUMA系统的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间或逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
下面首先介绍一下本申请的应用场景,在NUMA系统100的架构中,可以为多插槽系统100,参照图1,图1为本申请实施例提供的一种NUMA系统100的示意性架构示意图,如图1中示出的那样,NUMA系统100包括插槽(socket)101a和插槽101b。插槽101a和插槽101b在本文中可被统称为插槽101,可以用于安装中央处理器(central processing unit,CPU)。插槽101可以通过互联(interconnect)104彼此通信地耦合。示例性的,每个插槽101可经由点对点快速路径互连(quick path interconnect,QPI)链路来连接至其他插槽101中的每一个。需要说明的是,QPI是一种互连架构,本申请实施例中各个插槽之间的互联还可以通过其他互连架构实现,诸如其他点对点架构、环架构以及总线架构,这里并不限定。NUMA系统100中所描绘插槽的数量仅为一种示例,并且本领域技术人员将理解,可存在不同数量的插槽。例如,NUMA系统100可包括诸如,六个、四个或更少数量的插槽,又或者NUMA系统100可以包括诸如,十六个、三十二个或更多数量的插槽。
插槽101可以包括多个节点(node),每个节点有自己的CPU和内存,节点和节点之间通过互联104进行连接和通信,如图1中示出的那样,插槽101a包括节点102a和节点102b,插槽101b包括节点103a和节点103b,每个节点包括一个内存和六个CPU。需要说明的是,NUMA系统100中所描绘的节点和CPU的数量仅为一种示例,并且本领域技术人员将理解,每个插槽可以包括其他数量的节点,每个节点可以包括其他数量的CPU。
针对于对每个节点内的CPU而言,它访问的内存存在两种距离:一种是本节点内的内存,即近端内存;另一种是其他节点内的内存,即远端内存。参照图2,图2为一种NUMA架构中两个节点的连接示意图,如图2中示出的那样,当节点201上的CPU访问节点202上的内存(远端访问)时,需要通过互联104进行传输,而节点201上的CPU访问节点201自己内存(近端访问)则只需要通过内存通道进行访问,远端访问所需的时间明显大于近端访问所需的时间。
共享资源是所有线程都需要访问的内存资源,其存储于某一节点的共享内存中,而执行共享资源的代码段可以称作临界区。当NUMA系统100中的不同线程在访问共享资源或临界资源(执行该共享资源的临界区)时,需要保证在同一时刻只能有一个线程对共享资源进行操作,即同一时刻,同一个临界区只能被一个线程执行。具体的,可以使用锁对临界区进行保护,多个线程在同一个共享资源上执行临界区之前需要申请锁,只有持有锁的线程才能执行临界区,且在执行完临界区之后释放锁。
示例性的,以共享资源为变量a为例,NUMA系统100中运行的线程1需要执行临界区{a=a+1},且NUMA系统100中运行的线程2需要执行临界区{a=a+2},由于临界区{a=a+1}和临界区{a=a+2}都是针对于相同的共享资源进行的操作,因此需要通过一把锁(锁1)对临界区{a=a+2}和临界区{a=a+2}进行保护,当线程1将要执行临界区{a=a+1}时,需要竞争锁1,并基于竞争到锁1,执行临界区{a=a+1},并在执行完临界区{a=a+1}后,释放锁1。当线程2将要执行临界区{a=a+2}时,需要竞争锁1,如果此时锁1被其他线程(例如线程1)持有,则线程2需要等待直到获取到(锁1),执行临界区{a=a+2},并在执行完临界区{a=a+2}后,释放锁1。
在另一种场景中,当NUMA系统100中的不同线程在访问不同的共享资源(执行不同共享资源的临界区)时,也需要保证在同一时刻只能有一个线程对共享资源进行操作。此时,也需要使用锁对该临界区进行保护,多个线程在执行该被锁保护的临界区之前需要申请锁,只有持有锁的线程才能执行临界区,且在执行完临界区之后释放锁。
示例性的,NUMA系统100中运行的线程1需要执行临界区{c=c+1},且NUMA系统100中运行的线程2需要执行临界区{a=b;b=c;c=d},由于临界区{c=c+1}和临界区{a=b;b=c;c=d}需要其中一个临界区执行完之后再执行另一个临界区,因此需要通过一把锁(锁2)对临界区{c=c+1}和临界区{a=b;b=c;c=d}进行保护,当线程1将要执行临界区{c=c+1}时,需要竞争锁2,并基于竞争到锁2,执行临界区{c=c+1},并在执行完临界区{c=c+1}后,释放锁2。当线程2将要执行临界区{a=b;b=c;c=d}时,需要竞争锁2,如果此时锁2被其他线程(例如线程1)持有,则线程2需要等待直到获取到(锁2),执行临界区{a=b;b=c;c=d},并在执行完临界区{a=b;b=c;c=d}后,释放锁2。
需要说明的是,以上关于各个线程需要基于锁竞争的结果来确定是否执行临界的方案仅为一种示意,并不构成对本申请的限定。
以锁的类型为自旋锁(spinlock)为例,在任何时刻,自旋锁最多只能被一个线程持有,若一个线程试图请求获取已经被其他某一个线程持有的自旋锁,则线程循环尝试获取该自旋锁,等待该自旋锁重新可用。若该自旋锁未被其他任一个线程持有,则请求获取该自旋锁的线程可直接获得该自旋锁,以便于执行该自旋锁保护的临界区。
自旋锁的自旋变量存放于共享内存中,共享内存可以位于服务器中的任意一个节点的内存中,以图2为例,共享内存可以位于节点202的内存中,若位于节点201中的一个CPU的线程需要对位于节点202中的共享内存中的共享资源执行临界区,则该线程需要从202的共享内存中获取该临界区对应的自旋锁的自旋变量。
若获取到的自旋变量为0,则表示该自旋锁未被其他任一个线程持有,则可以获得该自旋锁,并将该自旋变量设置为1,表示该自旋锁已经被一个线程持有。之后,持有该自旋锁的线程执行临界区,并在执行完该临界区之后将自旋变量设置为0,表示该自旋锁未被任何一个线程持有。
若获取到的自旋变量为1,则表示该自旋锁已经被其他线程持有,则线程循环获取该自旋锁的自旋变量,直到获取到的自旋变量为0,相当于确认该自旋锁未被其他任一个线程持有,则线程可获得该自旋锁,并将该自旋变量设置为1,表示该自旋锁已经被一个线程持有。之后,持有该自旋锁的线程执行临界区,并在执行完该临界区之后将自旋变量设置为0,表示该自旋锁未被任何一个线程持有。
在基于NUMA架构的服务器中,分布于各个节点中的线程在执行该自旋锁保护的临界区时,都需要访问该自旋锁对应的自旋变量,对于距离存储自旋变量的节点最远的NUMA节点上的线程来说,访问这个自旋变量有着很高的访问时延。
同时,访问该自旋变量的线程都需要先将自旋变量从共享内存加载到对应的缓存行cacheline中,若线程获取到的自旋变量为0,表示该自旋锁未被其他任一个线程持有,则将该自旋变量设置为1,此时在其他要执行该自旋锁保护的临界区的线程所属的节点的cacheline中,存储的自旋变量都失效(由于自旋变量发生改变而导致的),造成了系统大量的缓存缺失cachemiss。
在基于NUMA架构的服务器中,存在着大量的节点,每个节点又部署有大量的CPU,服务器中可能存在大量需要执行一个锁保护的临界区的线程,由于每个线程获取自旋锁时存在一定的时延,在多线程并发执行一个自旋锁保护的临界区的场景中,会导致自旋锁的性能降低,且随着并发数量的增加,性能降低的程度会越大(并发数越高)。
为了解决上述问题,本申请提供了一种NUMA系统中的临界区执行方法,参照图3,图3为本申请实施例提供的一种NUMA系统中的临界区执行方法的示意图,如图3示出的那样,本申请提供的NUMA系统中的临界区执行方法,具体包括:
301、运行于所述NUMA系统的一个节点上的第一线程确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个。
本申请实施例中,NUMA系统可以包括互联的多个节点,每个节点具有至少一个硬件队列,示例性的,每个节点的硬件队列可以位于专属的静态随机存取存储器(staticrandom access memory,SRAM)中,硬件队列的访问速度和高速缓存cache的访问速度相近,每个队列可以配置包括的元素的数量和宽度,同时,每个节点的CPU可以包括为硬件队列提供服务的硬件加速器,关于硬件加速器如何为硬件队列提供服务将在后续实施例中叙述,这里不再赘述。需要说明的是,上述静态随机存取存储器SRAM为随机存取存储器的一种,该静态随机存取存储器SRAM只要保持通电,里面储存的数据就可以恒常保持。在一个实施例中,硬件队列可以为POE(Packet Order Enforcer)硬件免锁队列,简称POE队列。该POE队列位于节点专属的SRAM中,队列的加包和取包的原子性有POE硬件保证。
本申请实施例中,NUMA系统在数据库启动并在进行数据库初始化时,可以首先进行锁与硬件队列的绑定,具体的,针对于需要彼此之间需要原子性执行的临界区,可以通过锁来进行保护,本实施例中,可以将每一把锁(彼此之间需要原子性执行的临界区)与多个节点中的一个硬件队列绑定,相当于建立锁(彼此之间需要原子性执行的临界区)和硬件队列的绑定关系。
本申请实施例中,每把锁与彼此之间需要原子性执行的临界区相对应。若线程运行到某一临界区时,则可以通过上述临界区(锁)与硬件队列的绑定关系,确定该临界区对应的硬件队列。
需要说明的是,为了保证彼此之间需要原子性执行的临界区对应同一个锁,且彼此之间需要原子性执行的临界区对应唯一一个锁,彼此之间需要原子性执行的临界区对应NUMA系统中同一个且唯一一个硬件队列。
本申请实施例中,每个节点具有至少一个硬件队列,每个硬件队列可以对应一个目标队列的ID,其中,目标队列的ID可以包括该目标队列所在的节点的节点ID以及该目标队列在所在的节点中的队列ID。具体的,可以在每一把锁的锁信息中记录绑定的硬件队列所在节点的节点ID以及队列ID。若某一线程需要执行临界区时,则可以查询临界区对应的锁信息,并获取到临界区对应的节点ID以及队列ID,通过上述方式,第一线程实现了确定临界区对应的目标队列。
接下来描述一个进行锁与硬件队列的绑定的流程示意。示例性的,服务器包括n个节点(节点1至节点n),每个节点具有m个硬件队列(队列1至队列m),则服务器总的硬件队列个数=n*m,服务器中总共包括x个共享资源,相应对应有x把锁(锁1至锁x),将锁1与节点1中的队列1绑定,即在锁1的锁信息中记录(节点1和队列1),即完成了将锁1与节点1中的队列1的绑定,以及类推,将剩余的x-1把锁与剩余的队列进行绑定。
例如,以共享资源为变量a为例,NUMA系统100中运行的线程1需要执行临界区{a=a+1},且NUMA系统100中运行的线程2需要执行临界区{a=a+2},则临界区{a=a+1}和临界区{a=a+2}为彼此之间需要原子性执行的临界区,临界区{a=a+1}和临界区{a=a+2}对应一个目标队列。
需要说明的是,彼此之间需要原子性执行的临界区可以不对应同一个共享资源,例如可以参考上述NUMA系统100中运行的线程1需要执行临界区{c=c+1},且NUMA系统100中运行的线程2需要执行临界区{a=b;b=c;c=d}的例子,此时,临界区{c=c+1}和临界区{a=b;b=c;c=d}不对应于同一个共享资源,但彼此之间仍然需要原子性执行,因此,需要将上述临界区{c=c+1}和临界区{a=b;b=c;c=d}对应同一个目标队列。
本申请实施例中,NUMA系统中的一个节点运行有第一线程,第一线程包括临界区,在第一线程即将执行临界区时,可以确定所述临界区对应的目标队列(例如可以获取对应的目标队列的ID)。
可选地,在一种实现中,在第一线程即将执行临界区时,可以获取该临界区对应的锁信息,该锁信息包括临界区对应的目标队列的ID,第一线程可以通过获取该临界区对应的目标队列的ID来实现确定临界区对应的目标队列的步骤。需要说明的是,上述获取该临界区对应的锁信息,可以通过在该临界区中设置访问锁信息的任务指针来实现,具体的,当第一线程执行临界区之前,可以基于访问锁信息的任务指针,访问内存的对应位置,并获取到锁信息。
示例性的,NUMA系统中的一个节点运行有第一线程,第一线程包括临界区{a=a+1},临界区{a=a+1}对应于锁信息,该锁信息中保存有硬件队列的ID{节点2,队列5},在第一线程即将执行临界区{a=a+1}时,需要获取对应的锁信息,并从对应的锁信息中获取硬件队列的ID{节点2,队列5}。
302、第一线程基于从所述目标队列中获取到第一数据包,执行所述临界区。
本申请实施例中,所述第一线程确定所述临界区对应的目标队列之后,可以使所述第一线程获取到所述目标队列中的第一数据包。
可选地,所述第一线程获取到所述临界区对应的目标队列的ID之后,第一线程可以向硬件加速器发送所述目标队列的ID,并使所述第一线程接收所述硬件加速器根据所述目标队列的ID返回的第一数据包或者返回一个表示NULL的结果,其中,所述第一数据包为所述目标队列中的数据包。
本申请实施例中,硬件加速器可以提供两个接口:第一接口和第二接口,其中第一接口用于接收目标队列的ID,第二接口用于在目标队列不为空时,输出目标队列中的数据包,或者,在目标队列为空时,输出表示NULL的结果。
需要说明的是,上述接口的描述仅为一种示意,实际应用中还可以在硬件加速器山部署其他功能的接口,或者将上述两个接口的功能集成到一个接口来实现,这里并不限定。
本申请实施例中,服务器中的每个节点上可以设置有对应的硬件加速器,每个硬件加速器可以维护本地节点中的硬件队列。第一线程可以获取到目标队列所属的节点的节点ID,并通过获取到的节点ID路由到对应的节点中的硬件加速器,向硬件加速器的第一接口发送目标队列的ID。
在一种实施例中,目标队列的ID为前述的队列ID。
具体的,若临界区对应的目标队列为目标节点本地的队列,则可以直接向本地的硬件加速器发送目标队列的队列ID。若临界资源对应的目标队列不为目标节点本地的队列,则需要路由到对应的节点的硬件加速器,并向路由到的硬件加速器发送目标队列的队列ID。
相应的,硬件加速器接收到第一线程发送的目标队列的队列ID之后,若目标队列不为空,则可以将目标队列中的第一数据包通过第二接口发送至第一线程,以使得第一线程获取到所述目标队列中的第一数据包。
若目标队列为空,则硬件加速器可以将表示NULL的结果发送至第一线程。
本申请实施例中,第一线程可以根据是否获取到目标队列的第一数据包来确定是否可以执行临界区任务。
需要说明的是,本申请实施例中,在进行数据库初始化时,硬件加速器可以清空硬件队列,并在每个硬件队列中放入一个不为空的变量,表示硬件队列对应的锁未被任何一个线程持有。
本申请实施例中,第一线程接收硬件加速器根据目标队列的ID返回的第一数据包之后,可以确定临界区对应的锁未被其他线程持有,进而所述第一线程可以执行所述临界区。
可选地,若第一线程未接收到硬件加速器根据目标队列的ID返回的第一数据包,即第一线程接收到硬件加速器返回的表示NULL的结果,则第一线程可以确定临界区对应的锁被其他线程持有,并等待预设时间后重复执行从所述目标队列获取数据包的步骤,直至获取到所述第一数据包。具体的,第一线程可以等待预设时间后向所述硬件加速器发送所述目标队列的ID,直到接收到所述硬件加速器根据所述目标队列的ID返回的第一数据包,则第一线程可以确定临界区对应的锁未被其他线程持有,进而所述第一线程可以执行所述临界区。
本申请实施例中,在第一线程执行临界区时,若其他线程也运行至与第一线程执行的临界区需要原子性执行的临界区时,可以尝试从对应的硬件队列中获取数据包,由于硬件加速器将第一数据包发送给第一线程后,该目标队列并不包括任何数据,则其他线程并不能从该目标队列中获取到第一数据包,而是接收到硬件加速器返回的表示NULL的结果,进而可以确定锁正在被其他线程持有。
本申请实施例中,第一线程执行完所述临界区之后,第一线程可以向所述硬件加速器发送所述目标队列的ID和第二数据包,以指示所述硬件加速器根据所述目标队列的ID将所述第二数据包写入所述目标队列,相当于第二线程释放锁,此时,目标队列中存储了数据,表示该目标队列对应的锁未被任何线程持有,进而可以被其他想要执行该目标队列对应的锁保护的临界区的线程获取到。
可选的,在一种实施例中,目标队列为先入先出队列。
本申请实施例中,目标队列为先入先出队列,则可以保证先申请获取目标队列中的数据包的线程可以先获取到,使得不会出现后申请获取目标队列中的数据包的线程,反而先执行临界区的情况,保证了各个线程对临界区执行的公平性。
在一种场景中,临界区对应的共享资源为预写入日志(write ahead log buffer,WAL)缓存。
本申请实施例中,一个数据库的业务线程在提交之前需要先把日志写入WAL缓存并落盘,WAL缓存属于共享资源的一种,可以通过本申请实施例提供的方法进行保护。
本申请实施例中,运行于所述NUMA系统的一个节点上的第一线程确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;所述第一线程基于从所述目标队列中获取到第一数据包,执行所述临界区。通过上述方式,将物理队列和临界区进行绑定,以能否从物理队列中获取到数据包为依据来判断是否可以执行临界区,由于物理队列的取包消耗的时间相比于从内存中读取锁变量的时间较短,且由于不需要将获取到的数据写入cacheline中,进而系统中不会出现由于现有技术中将锁变量写入cacheline,当锁变量发生变化,而导致系统出现大量cachemiss的情况。在NUMA系统中,即使并发竞争锁的线程数量很大,也不会影响锁的性能。
参照图4a至图4h,图4a至图4h为本申请实施例一种临界区执行的示意图,本申请实施例中,线程1和线程2包括需要同一把锁保护的临界区,如图4a中示出的那样,线程1是节点1上运行的线程,线程2是节点2上运行的线程,节点1具有物理队列1至物理队列N,节点2具有物理队列1至物理队列N,线程1和线程2包括的上述临界区对应的物理队列为节点1中的物理队列1。
如图4b中示出的那样,线程1即将执行临界区时,需要获取到节点1中的物理队列1中的数据包。具体的,线程1可以从要执行的临界区对应的锁信息中获取对应的物理队列的ID(节点1、物理队列1),线程1可以基于节点1路由到节点1的硬件加速器,并向硬件加速器发送物理队列的标识(物理队列1),硬件加速器可以基于线程1发送的物理队列的标识(物理队列1),从物理队列1中获取数据包,并向线程1发送物理队列1中的第一数据包。
如图4c中示出的那样,线程1获取到物理队列1中的第一数据包,执行临界区,此时物理队列1中没有数据包。
如图4d中示出的那样,此时,线程2即将执行临界区时,需要获取到节点1中的物理队列1中的数据包,具体的,线程2可以从要执行的临界区对应的锁信息中获取对应的物理队列的ID(节点1、物理队列1),线程2可以基于节点1路由到节点1的硬件加速器,并向硬件加速器发送物理队列的标识(物理队列1),硬件加速器可以基于线程2发送的物理队列的标识(物理队列1),从物理队列1中获取数据包,然而,此时物理队列1中没有数据包,硬件加速器可以返回一个指示目标队列为空的信息(例如可以是指示空NULL的结果),线程2在接收到指示目标队列为空的信息之后,可以每隔预设时间向硬件加速器发送物理队列的标识(物理队列1)。
如图4e中示出的那样,线程1在执行完临界区之后,向物理队列1加入第二数据包,此时,物理队列1中存储有第二数据包。
如图4f中示出的那样,线程2某一次向硬件加速器发送物理队列的标识(物理队列1)之后,硬件加速器可以基于线程2发送的物理队列的标识(物理队列1),从物理队列2中获取到第二数据包,并向线程1发送物理队列1中的第二数据包。
如图4g中示出的那样,线程2获取到物理队列1中的第二数据包,执行临界区,此时物理队列1中没有数据包。
如图4h中示出的那样,线程2在执行完临界区之后,向物理队列1加入第三数据包,此时,物理队列1中存储有第三数据包。
参照图5,图5为本申请实施例一种临界区执行的流程示意图,如图5中示出的那样,T1表示第一线程,T2表示第二线程,T1包括临界区1,T2包括临界区2,T1和T2是并行执行任务的线程,从左到右是执行的时序,临界区1和临界区2是相互需要原子性执行的临界区。
在A1时刻,T1将要执行临界区1,此时T1在A1-A2的时间段内,从目标队列中获取到第一数据包,并在A2-A3的时间段内执行临界区。且在A4时刻将第二数据包发送到目标队列中。
在B1时刻,T2将要执行临界区2,T2在B1-A4的时间段内,通过从目标队列中获取不到数据包,在A4-B2的时间段内,T2从目标队列中获取到第二数据包,并在B2-B3的时间段内执行临界区。且在B4时刻将第三数据包发送到目标队列中。
本申请实施例中,将物理队列和临界区进行绑定,以能否从物理队列中获取到数据包为依据来判断是否可以执行临界区,由于物理队列的取包消耗的时间相比于从内存中读取锁变量的时间较短,且由于不需要将获取到的数据写入cacheline中,进而系统中不会出现由于现有技术中将锁变量写入cacheline,当锁变量发生变化,而导致系统出现大量cachemiss的情况。在NUMA系统中,即使并发竞争锁的线程数量很大,也不会影响锁的性能。
本申请实施例中,运行于所述NUMA系统的一个节点上的第一线程确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;所述第一线程基于从所述目标队列中获取到第一数据包,执行所述临界区。通过上述方式,将物理队列和临界区进行绑定,以能否从物理队列中获取到数据包为依据来判断是否可以执行临界区,由于物理队列的取包消耗的时间相比于从内存中读取锁变量的时间较短,且由于不需要将获取到的数据写入cacheline中,进而系统中不会出现由于现有技术中将锁变量写入cacheline,当锁变量发生变化,而导致系统出现大量cachemiss的情况。在NUMA系统中,即使并发竞争锁的线程数量很大,也不会影响锁的性能。
上面对本申请实施例中的NUMA系统中的临界区执行方法进行了描述,下面对本申请实施例中的NUMA系统中的临界区执行装置进行描述,参照图6,图6为本申请实施例提供的一种NUMA系统中的临界区执行装置的结构示意图,如图6中示出的那样,本申请实施例提供的一种NUMA系统中的临界区执行装置,包括:
确定模块601,用于确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;
执行模块602,用于基于从所述目标队列中获取到第一数据包,执行所述临界区。
可选地,在一种实施例中,所述装置还包括:
收发模块603,用于执行所述临界区之后,将第二数据包加入所述目标队列。
可选地,在一种实施例中,所述临界区唯一对应于所述多个节点的硬件队列中的一个硬件队列。
可选地,在一种实施例中,所述确定模块601,具体用于:
获取所述临界区对应的目标队列的标识ID。
可选地,在一种实施例中,所述收发模块603,具体用于:
向硬件加速器发送所述目标队列的ID;
接收所述硬件加速器根据所述目标队列的ID返回的所述第一数据包,其中,所述第一数据包为所述目标队列中的数据包。
可选地,在一种实施例中,所述确定模块601,具体用于:
从所述临界区对应的锁信息中获取所述目标队列的标识ID。
可选地,在一种实施例中,所述收发模块603,具体用于:
向硬件加速器发送所述目标队列的ID和第二数据包,以指示所述硬件加速器根据所述目标队列的ID将所述第二数据包加入所述目标队列。
可选地,在一种实施例中,所述目标队列为先入先出队列。
可选地,在一种实施例中,所述收发模块603,还用于:
基于未从所述目标队列中获取到第一数据包,等待预设时间后重复执行从所述目标队列获取数据包的步骤,直至获取到所述第一数据包。
需要说明的是,上述NUMA系统中的临界区执行装置可以为NUMA系统中的一个NUMA节电。
在硬件实现上,上述确定模块601和执行模块602可以为处理器,收发模块603可以为收发器,或者接收器和发送器集成的模块,接收器与发送器也可以构成通信接口。
参照图7,图7为本申请实施例提供的一种NUMA系统中的节点的结构示意图,如图7示出的那样,本申请实施例提供的一种NUMA系统中的NUMA节点,包括:
处理器702、通信接口703、存储器701以及总线704。处理器702、通信接口703以及存储器701通过总线704相互连接。在本申请的实施例中,处理器702用于对所述NUMA系统中的节点的动作进行控制管理,例如,处理器702用于支持所述NUMA系统中的节点执行图3中的步骤301和步骤302和/或用于本文所描述的技术的其他过程。通信接口703用于支持所述NUMA系统中的节点可以和其他节点进行通信。存储器701,用于存储所述NUMA系统中的节点中的程序代码和数据。
其中,处理器702可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器702也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线704可以是外设部件互连标准(peripheralcomponent interconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,通过调用存储器701存储的操作指令,处理器702可以运行有第一线程,处理器702可以执行如下步骤:
确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;
基于从所述目标队列中获取到第一数据包,执行所述临界区。
本申请的一些实施例中,处理器702还执行如下步骤:
执行所述临界区之后,将第二数据包加入所述目标队列。
本申请的一些实施例中,所述临界区唯一对应于所述多个节点的硬件队列中的一个硬件队列。
本申请的一些实施例中,所述处理器702具体执行如下步骤:
获取所述临界区对应的目标队列的标识ID。
调用通信接口703,向硬件加速器发送所述目标队列的ID;
接收所述硬件加速器根据所述目标队列的ID返回的所述第一数据包,其中,所述第一数据包为所述目标队列中的数据包。
本申请的一些实施例中,所述处理器702具体执行如下步骤:
从所述临界区对应的锁信息中获取所述目标队列的标识ID。
本申请的一些实施例中,所述处理器702具体执行如下步骤:
调用通信接口703,向硬件加速器发送所述目标队列的ID和第二数据包,以指示所述硬件加速器根据所述目标队列的ID将所述第二数据包加入所述目标队列。
本申请的一些实施例中,所述目标队列为先入先出队列。
本申请的一些实施例中,所述处理器702还执行如下步骤:
基于未从所述目标队列中获取到第一数据包,等待预设时间后重复执行从所述目标队列获取数据包的步骤,直至获取到所述第一数据包。
参照图8,图8为本申请实施例提供的一种NUMA系统的实施例的示意图,如图8中示出的那样,NUMA系统包括互联的多个NUMA节点,每个NUMA节点可以执行图2对应的实施例中的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者其他网络设备等)执行本申请图2实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (20)

1.一种非统一内存访问NUMA系统中的临界区执行方法,其特征在于,所述方法包括:
运行于所述NUMA系统的一个节点上的第一线程确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;
所述第一线程基于从所述目标队列中获取到第一数据包,执行所述临界区。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一线程执行所述临界区之后,所述第一线程将第二数据包加入所述目标队列。
3.根据权利要求1或2所述的方法,其特征在于,所述临界区唯一对应于所述多个节点的硬件队列中的一个硬件队列。
4.根据权利要求1至3任一所述的方法,其特征在于,所述第一线程确定临界区对应的目标队列,包括:
所述第一线程获取所述临界区对应的目标队列的标识ID。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第一线程向硬件加速器发送所述目标队列的ID;
所述第一线程接收所述硬件加速器根据所述目标队列的ID返回的所述第一数据包,其中,所述第一数据包为所述目标队列中的数据包。
6.根据权利要求4或5所述的方法,其特征在于,所述第一线程获取临界区对应的目标队列的标识ID,包括:
所述第一线程从所述临界区对应的锁信息中获取所述目标队列的标识ID。
7.根据权利要求2所述的方法,其特征在于,所述第一线程将第二数据包加入所述目标队列,包括:
所述第一线程向硬件加速器发送所述目标队列的ID和第二数据包,以指示所述硬件加速器根据所述目标队列的ID将所述第二数据包加入所述目标队列。
8.根据权利要求1至7任一所述的方法,其特征在于,所述目标队列为先入先出队列。
9.根据权利要求4至6任一所述的方法,其特征在于,所述方法还包括:
所述第一线程基于未从所述目标队列中获取到第一数据包,等待预设时间后重复执行从所述目标队列获取数据包的步骤,直至获取到所述第一数据包。
10.一种NUMA系统中的临界区执行装置,其特征在于,所述装置包括:处理器和存储器,所述处理器用于执行所述存储器中的程序,以执行权利要求1至9中任一项目所述的方法。
11.一种NUMA系统中的临界区执行装置,其特征在于,所述装置包括:
确定模块,用于确定临界区对应的目标队列,所述NUMA系统包括多个节点,其中,每个节点具有至少一个硬件队列,所述目标队列为所述多个节点的硬件队列中的一个;
执行模块,用于基于从所述目标队列中获取到第一数据包,执行所述临界区。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
收发模块,用于执行所述临界区之后,将第二数据包加入所述目标队列。
13.根据权利要求11或12所述的装置,其特征在于,所述临界区唯一对应于所述多个节点的硬件队列中的一个硬件队列。
14.根据权利要求11至13任一所述的装置,其特征在于,所述确定模块,具体用于:
获取所述临界区对应的目标队列的标识ID。
15.根据权利要求14所述的装置,其特征在于,所述收发模块,具体用于:
向硬件加速器发送所述目标队列的ID;
接收所述硬件加速器根据所述目标队列的ID返回的所述第一数据包,其中,所述第一数据包为所述目标队列中的数据包。
16.根据权利要求14或15所述的装置,其特征在于,所述确定模块,具体用于:
从所述临界区对应的锁信息中获取所述目标队列的标识ID。
17.根据权利要求12所述的装置,其特征在于,所述收发模块,具体用于:
向硬件加速器发送所述目标队列的ID和第二数据包,以指示所述硬件加速器根据所述目标队列的ID将所述第二数据包加入所述目标队列。
18.根据权利要求11至17任一所述的装置,其特征在于,所述目标队列为先入先出队列。
19.根据权利要求14至16任一所述的装置,其特征在于,所述收发模块,还用于:
基于未从所述目标队列中获取到第一数据包,等待预设时间后重复执行从所述目标队列获取数据包的步骤,直至获取到所述第一数据包。
20.一种NUMA系统,其特征在于,包括:多个节点,所述多个节点中的至少一个节点用于执行权利要求1至9任一项所述的方法。
CN201910690846.5A 2019-07-29 2019-07-29 一种numa系统中的临界区执行方法及装置 Pending CN112306698A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910690846.5A CN112306698A (zh) 2019-07-29 2019-07-29 一种numa系统中的临界区执行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910690846.5A CN112306698A (zh) 2019-07-29 2019-07-29 一种numa系统中的临界区执行方法及装置

Publications (1)

Publication Number Publication Date
CN112306698A true CN112306698A (zh) 2021-02-02

Family

ID=74328925

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910690846.5A Pending CN112306698A (zh) 2019-07-29 2019-07-29 一种numa系统中的临界区执行方法及装置

Country Status (1)

Country Link
CN (1) CN112306698A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047316A (en) * 1997-12-12 2000-04-04 Intel Corporation Multiprocessor computing apparatus having spin lock fairness
US6792497B1 (en) * 2000-12-12 2004-09-14 Unisys Corporation System and method for hardware assisted spinlock
US20050166206A1 (en) * 2004-01-26 2005-07-28 Parson Dale E. Resource management in a processor-based system using hardware queues
US7334102B1 (en) * 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
US20080177955A1 (en) * 2007-01-23 2008-07-24 International Business Machines Corporation Achieving Both Locking Fairness and Locking Performance with Spin Locks
CN102880518A (zh) * 2005-08-30 2013-01-16 英特尔公司 实现公平可缩放的读者写者互斥的方法和装置
US20130290967A1 (en) * 2012-04-27 2013-10-31 Irina Calciu System and Method for Implementing NUMA-Aware Reader-Writer Locks
CN104932933A (zh) * 2014-03-21 2015-09-23 华为技术有限公司 一种获取自旋锁的方法及装置
CN109558241A (zh) * 2018-11-13 2019-04-02 锐捷网络股份有限公司 一种获取自旋锁的方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047316A (en) * 1997-12-12 2000-04-04 Intel Corporation Multiprocessor computing apparatus having spin lock fairness
US6792497B1 (en) * 2000-12-12 2004-09-14 Unisys Corporation System and method for hardware assisted spinlock
US7334102B1 (en) * 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
US20050166206A1 (en) * 2004-01-26 2005-07-28 Parson Dale E. Resource management in a processor-based system using hardware queues
CN102880518A (zh) * 2005-08-30 2013-01-16 英特尔公司 实现公平可缩放的读者写者互斥的方法和装置
US20080177955A1 (en) * 2007-01-23 2008-07-24 International Business Machines Corporation Achieving Both Locking Fairness and Locking Performance with Spin Locks
US20130290967A1 (en) * 2012-04-27 2013-10-31 Irina Calciu System and Method for Implementing NUMA-Aware Reader-Writer Locks
CN104932933A (zh) * 2014-03-21 2015-09-23 华为技术有限公司 一种获取自旋锁的方法及装置
CN109558241A (zh) * 2018-11-13 2019-04-02 锐捷网络股份有限公司 一种获取自旋锁的方法及装置

Similar Documents

Publication Publication Date Title
JP3871305B2 (ja) マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化
US7318126B2 (en) Asynchronous symmetric multiprocessing
US8209690B2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
US5613139A (en) Hardware implemented locking mechanism for handling both single and plural lock requests in a lock message
US5282272A (en) Interrupt distribution scheme for a computer bus
US5261109A (en) Distributed arbitration method and apparatus for a computer bus using arbitration groups
US9158597B2 (en) Controlling access to shared resource by issuing tickets to plurality of execution units
KR101080845B1 (ko) 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템
US11748174B2 (en) Method for arbitration and access to hardware request ring structures in a concurrent environment
US6792497B1 (en) System and method for hardware assisted spinlock
US10331500B2 (en) Managing fairness for lock and unlock operations using operation prioritization
WO2003010626A2 (en) Distributed shared memory management
US8024739B2 (en) System for indicating and scheduling additional execution time based on determining whether the execution unit has yielded previously within a predetermined period of time
WO2014021879A1 (en) Systems and methods for controlling access to a shared data structure with reader-writer locks using multiple sub-locks
US8086766B2 (en) Support for non-locking parallel reception of packets belonging to a single memory reception FIFO
CN103455371A (zh) 用于优化的管芯内小节点间消息通信的方法和系统
US10445096B2 (en) Managing lock and unlock operations using traffic prioritization
CN112306703A (zh) 一种numa系统中的临界区执行方法及装置
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
WO2017131624A1 (en) A unified lock
KR100978082B1 (ko) 공유 메모리형 멀티 프로세서에 있어서의 비동기 원격 절차 호출 방법 및 비동기 원격 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체
CN112306698A (zh) 一种numa系统中的临界区执行方法及装置
Takada et al. Real-time scalability of nested spin locks
US20160328276A1 (en) System, information processing device, and method
KR100978083B1 (ko) 공유 메모리형 멀티 프로세서에 있어서의 절차 호출 방법 및 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체

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