CN105393212A - 使用锁定机制的高效任务调度 - Google Patents
使用锁定机制的高效任务调度 Download PDFInfo
- Publication number
- CN105393212A CN105393212A CN201480041204.8A CN201480041204A CN105393212A CN 105393212 A CN105393212 A CN 105393212A CN 201480041204 A CN201480041204 A CN 201480041204A CN 105393212 A CN105393212 A CN 105393212A
- Authority
- CN
- China
- Prior art keywords
- locking mechanism
- task
- spin
- predetermined threshold
- described locking
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Manufacturing Of Steel Electrode Plates (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
为了使用锁定机制进行高效任务调度,如果针对所述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值,则允许新任务针对所述锁定机制自旋。
Description
技术领域
本发明一般地涉及计算系统,更具体地说,涉及用于针对在计算环境中的多个线程之间需要锁的并行操作,使用锁定机制进行高效任务调度的系统和方法。
背景技术
在当今社会中,计算机系统普遍存在。可以在工作场所、家里或学校中发现计算机系统。计算机系统可以包括数据存储系统或盘存储系统,以便处理和存储数据。考虑到当今社会中对计算机的依赖性持续增加,计算机技术必须在许多方面都有所发展以便跟上增加的需求。重要研究和开发工作的一个特定主题是并行性,即,多个任务的并行执行。
已开发多种计算机软件和硬件技术以促进增加的并行处理。从软件角度来看,已开发多线程操作系统和内核,这允许在多个“线程”中同时执行计算机程序,以使得可以基本同时执行多个任务。线程通常表示程序的独立执行路径。例如,对于电子商务计算机应用,可能将不同线程分配给不同客户,以使得在单独的线程中处理每个客户的特定电子商务交易。从硬件角度来看,计算机越来越依赖多个微处理器来提供增加的工作负载能力。此外,已开发某些微处理器,它们支持并行执行多个线程的能力,从而有效地提供可通过使用多个微处理器获得的许多相同性能增益。
发明内容
在一个实施例中,提供一种用于在计算环境中通过至少一个处理器设备使用锁定机制进行高效任务调度的方法。在一个实施例中,仅作为举例,如果针对所述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值,则允许新任务针对所述锁定机制自旋。
在另一个实施例中,提供一种用于在计算环境中通过至少一个处理器设备使用锁定机制进行高效任务调度的计算机系统。所述计算机系统包括计算机可读介质和处理器,所述处理器可操作以与所述计算机可读介质通信。在一个实施例中,仅作为举例,如果针对所述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值,则所述处理器允许新任务针对所述锁定机制自旋。
在另一实施例中,提供一种用于在计算环境中通过至少一个处理器设备使用锁定机制进行高效任务调度的计算机程序产品。所述计算机可读存储介质具有存储在其上的计算机可读程序代码部分。所述计算机可读程序代码部分包括第一可执行部分,其在针对所述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值的情况下,允许新任务针对所述锁定机制自旋。
除了上述示例性方法实施例之外,还提供其它示例性系统和计算机产品实施例并且提供相关优点。已提供上述概要以便以简化形式引入概念的选择,下面在“具体实施方式”中进一步描述这些概念。此“发明内容”并非旨在标识所要求保护的主题的关键特性或基本特性,也并非旨在用于帮助确定所要求保护的主题的范围。所要求保护的主题并不限于解决“背景技术”中描述的任何或全部缺点的实施方式。
附图说明
为了容易地理解本发明的优点,将通过参考在附图中示出的特定实施例给出上面简要描述的本发明的更具体的说明。要理解,这些附图仅示出本发明的典型实施例,并且因此不被视为其范围的限制,将通过使用附图以额外特殊性和细节描述和解释本发明,这些附图是:
图1是示出其中可以实现本发明的各个方面的具有实例存储设备的计算系统环境的框图;
图2是示出根据本发明的其中可以实现本发明的各个方面的计算机系统中的数据存储系统的示例性硬件结构的框图;
图3是示出其中可以实现本发明的各个方面的用于使用锁定机制进行高效任务调度的示例性方法的流程图;以及
图4是示出其中可以实现本发明的各个方面的用于使用锁定机制进行高效任务调度的其它示例性方法的流程图。
具体实施方式
在一个实施例中,多处理计算机系统中的架构是分布式共享存储器架构。分布式共享存储器架构包括多个节点,处理器和存储器位于这些节点中。多个节点经由耦合在其间的网络通信。当被视为一个整体时,包括在多个节点中的存储器形成计算机系统的共享存储器。可以使用目录标识哪些节点已缓存对应于特定地址的数据的副本。可以经由检查目录生成一致性活动。在一个实施例中,分布式共享存储器系统是可伸缩的,从而克服与共享总线架构关联的各种限制。因为许多处理器访问都在一个节点中完成,所以与共享总线架构为了获得可比较性能而必须针对其共享总线提供的带宽要求相比,节点通常针对网络具有低得多的带宽要求。节点可以在高时钟频率和带宽下操作,从而在需要时访问网络。可以向网络添加其它节点而不影响节点的本地带宽。借助逻辑分区,共享资源(被称为“系统管理程序”或分区管理器)管理逻辑分区并促进将资源分配给不同逻辑分区。例如,分区管理器可以将诸如处理器、工作站适配器、存储设备、存储空间、网络适配器之类的资源分配给各分区,以便支持每个逻辑分区以与单独物理计算机基本相同的方式进行相对独立的操作。
此外,在一个实施例中,大型数据库和因特网交易应用需要并行服务器,这些服务器能够在具有二十到一百个处理器或更多处理器的机器上运行。此外,在一个实施例中,以某种方式的并行编程可以涉及使用最低级别的锁定。锁是提供互相排斥的基元(primitive),它们允许数据结构保持处于一致状态。在一个实施例中,如果没有锁定机制,则执行的多个线程可能同时修改数据结构。如果没有深思熟虑并且通常复杂的无锁算法,则结果通常是崩溃或挂起,因为进入非预期程序状态。因为无锁算法的创建极其困难,所以大多数程序都使用锁。如果更新数据结构缓慢,则选择的锁是某种类型的互斥(例如,互相排斥)。当这些线程阻塞时,它们将控制转移到操作系统。这允许当第一个线程休眠时,另一个线程运行并且可能取得进展。这种控制转移包括一对上下文切换,它们是相当缓慢的操作。因此,如果锁持有时间预计很短,则这可能不是最快的方法。
在一个实施例中,自旋锁(spin-lock)操作可以用于并行操作,并且自旋锁操作可以与软件锁关联,程序使用软件锁以便确保每次只有一个并行进程可以访问存储器的关键区域。在一个实施例中,自旋锁可以用于互相排斥。自旋锁是这样的锁:其导致尝试获得该锁的线程简单地在循环中等待(“自旋”),同时反复检查该锁是否可用。因为线程保持活动但未执行有用任务,所以此类锁的使用是一种忙等待。在获得之后,自旋锁可以被持有到它们被显式释放,然而在某些实现中,如果正在等待(持有锁)的线程阻塞或“转到休眠”,则自旋锁可以被自动释放。
在一个实施例中,自旋锁(例如,信号量(semaphore))可以被实现为变量或令牌,该变量或令牌与指向数据结构的共享指针关联,并且可由多个线程读取以便判定指针当前是否由线程之一使用。每当线程读取指示没有其它线程当前正在使用指针的信号量时,该线程能够将信号量设置为一个值,该值向所有其它线程指示指针当前在使用中(被称为“获得”信号量的过程)。因此,当另一个线程希望访问数据结构,但检测到信号量由另外一个线程持有时,需要该线程一直等待,直到另外一个线程释放信号量以便指示其它线程可再次访问指针(并且因此访问数据结构)。在一个实施例中,在任何给定时间仅允许一个线程持有信号量。
此外,在一个实施例中,自旋锁将“自旋”并且反复检查以便查看锁是否被解锁,而不是上下文切换。自旋非常快速,因此解锁-锁定对之间的延迟很小。但是,自旋不完成任何工作,因此如果花费的时间变得很多,则可能不如休眠互斥高效。因此,本发明提供一种解决方案,其1)通过在始终自旋的同时减少CPU周期的浪费,提高计算效率,并且2)如果任务不能立即获得锁,则允许任务避免转到休眠并且始终重新分派任务。
因此,本发明用于在计算环境中通过至少一个处理器设备使用锁定机制进行高效任务调度。在一个实施例中,仅作为举例,如果针对锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值,则允许新任务针对锁定机制自旋。如果针对锁定机制自旋的任务的数量是等于和大于预定阈值中的一个,则防止/禁止新任务针对锁定机制自旋。在允许新任务针对锁定机制自旋之前,获得当前针对锁定机制自旋的任务的数量。如果针对锁定机制自旋的任务的数量等于和/或大于预定阈值,则使新任务(多个)失败。当针对锁定机制自旋的任务的数量是等于和大于预定阈值中的一个时,将新任务退出到分派队列。需要锁定机制以便判定针对锁定机制自旋的任务的数量是否小于预定阈值。在一个实施例中,本发明在基于票据(ticket)的锁和基于队列的锁中的一个之上实现锁定机制以便判定针对锁定机制自旋的任务的数量是否小于预定阈值。所述锁定机制是新的锁尝试或自旋(lock-try-or-spin)。锁尝试或自旋基于预定阈值针对该锁自旋和/或将任务退出到分派队列。这是本发明的主要概念的一个名称,其具有传统尝试锁定(try-Lock)机制的类似动作,其中代码多次尝试获得锁,并且如果不能获得锁,则仅退出,其中如果满足预定阈值准则,则新的尝试或自旋锁(try-or-spin-lock)将针对锁自旋,并且如果不满足,则立即退出。在一个实施例中,基于票据的锁是这样的锁定算法:它是一种类型的自旋锁,其使用“票据”控制哪个执行线程被允许进入关键部分。
在一个实施例中,票据锁按如下方式工作;具有从0开始的两个整数值。第一个值是队列票据,第二个值是出列票据。当线程到达时,它自动获得并且然后递增队列票据。它然后自动将其票据的值(在递增之前)与出列票据的值相比较。如果值相同,则允许线程进入关键部分。如果值不同,则另一个线程必须已经在关键部分中,并且此线程必须忙等待或放弃。当线程离开由锁控制的关键部分时,它自动递增出列票据。这允许下一个等待线程进入关键部分。
在一个实施例中,基于队列的自旋锁通过安排每个等待线程针对存储中的单独本地标志自旋而避免争用。基于队列的自旋锁通过维护等待者队列并通过在解锁操作期间将锁授予第一个等待者来保证公平性。在一个实施例中,借助基于队列的锁,每个等待进程被链接到队列中的其前任进程和后续进程。基于队列的自旋锁还可以被称为尝试锁(trylock),并且允许进程在给定时间量之后放弃其获得锁的尝试。进程然后可以遵循某个其它代码路径。
在一个实施例中,本发明可以使用基于队列的锁和/或票据锁,它们指示多少个任务针对自旋锁自旋。在测试和设置自旋锁的一个实施例中,进程可以互相匿名。在基于队列的锁中,它们并不互相排斥,并且每个等待进程被链接到队列中的其前任进程和后续进程。因此,借助基于队列的锁,本发明能够区分/指示多少个任务针对锁自旋。即使没有基于队列的锁,本发明也构建自旋锁,这可以告知多少个任务针对锁自旋。例如,借助票据锁,本发明可以查看上一个给定票据编号和当前服务票据编号,并且了解多少个任务正在自旋。
现在转到图1,示出计算系统环境的示例性架构10。计算机系统10包括中央处理单元(CPU)12,其连接到通信端口18和存储设备16。通信端口18与通信网络20通信。通信网络20和存储网络可以被配置为与服务器(主机)24和存储系统通信,存储系统可以包括存储设备14。存储系统可以包括硬盘驱动器(HDD)设备、固态设备(SSD)等,它们可以被配置在独立磁盘冗余阵列(RAID)中。下面描述的操作可以在存储设备(多个)14上执行,位于系统10中或其他位置,并且可以具有独立工作和/或与其它CPU设备12结合工作的多个存储设备16。存储设备16可以包括诸如电可擦式可编程只读存储器(EEPROM)之类的存储器或相关设备主机。存储设备16和存储设备14经由信号承载介质连接到CPU12。此外,CPU12通过通信端口18连接到通信网络20,通信网络20具有附接的多个其它计算机主机系统24。此外,存储设备16和CPU12可以嵌入和包括在计算系统10的每个组件中。每个存储系统还可以包括单独和/或不同的存储设备16和CPU12,它们结合工作或者作为单独的存储设备16和/或CPU12工作。
图2是示出根据本发明的计算机系统中的数据存储系统的硬件结构的示例性框图200。示出主计算机210、220、225,每个充当中央处理单元以便作为数据存储系统200的一部分执行数据处理。主机(物理或虚拟设备)210、220和225可以是一个或多个新的物理设备或逻辑设备,以便在数据存储系统200中实现本发明的目的。在一个实施例中,仅作为举例,数据存储系统200可以被实现为SystemStorageTMDS8000TM。网络连接260可以是光纤通道结构、光纤通道点到点链路、以太网光纤通道结构或点到点链路、FICON或ESCONI/O接口、任何其它I/O接口类型、无线网络、有线网络、LAN、WAN、异构、同构、公共(即,因特网)、专用,或者其任意组合。主机210、220和225可以是本地的或者在一个或多个位置之间分布,并且可以配备有到存储控制器240的任何类型结构(或结构通道)(未在图2中示出)或网络适配器260,例如光纤通道、FICON、ESCON、以太网、光纤、无线或同轴适配器。数据存储系统200相应地配备有合适的结构(未在图2中示出)或网络适配器260以便通信。数据存储系统200在图2中示出,其包括存储控制器240和存储装置230。在一个实施例中,在此描述的实施例可以适用于各种类型的计算架构,例如在使用此处描述的各种实施例的虚拟集群管理环境中。
为了便于更清晰地理解在此描述的方法,存储控制器240在图2中被示出为单个处理单元,其包括微处理器242、系统存储器243和非易失性存储装置(“NVS”)216,将在下面更详细地描述它们。注意,在某些实施例中,存储控制器240包括多个处理单元,每个处理单元具有它们自己的处理器复合体和系统存储器,并且在数据存储系统200中通过专用网络互连。存储装置230可以包括一个或多个存储设备,例如存储阵列,它们通过存储网络连接到存储控制器240。
在某些实施例中,包括在存储装置230中的设备可以以环形架构连接。存储控制器240管理存储装置230,并且促进处理用于存储装置230的写入和读取请求。存储控制器240的系统存储器243存储操作软件250、程序指令和数据,处理器242可以访问它们以便执行与管理存储装置230关联的功能和方法,并且执行本发明的步骤和方法。如图2中所示,系统存储器243还可以包括存储装置230的高速缓存245或者与其通信,高速缓存245在此还被称为“高速缓冲存储器”,其用于缓冲分别指写入/读取请求及其关联数据的“写入数据”和“读取数据”。在一个实施例中,高速缓存245被分配在系统存储器243外部的设备中,但保持可由微处理器242访问,并且除了执行在此描述的操作之外,还可以用于针对数据丢失提供额外安全性。
在某些实施例中,高速缓存245使用易失性存储器和非易失性存储器实现,并且经由局域总线(未在图2中示出)耦合到微处理器242以便增强数据存储系统200的性能。包括在数据存储控制器中的NVS216可由微处理器242访问,并且用于针对在其它附图中描述的本发明的操作和执行提供额外支持。NVS216还可以被称为“永久性”高速缓存或“高速缓冲存储器”,并且使用非易失性存储器实现,该非易失性存储器可以使用也可以不使用外部电力来保留存储在其中的数据。NVS可以存储在高速缓存245中并且与其一起存储,以便实现适合于完成本发明目标的任何目的。在某些实施例中,诸如电池之类的备用电源(未在图2中示出)为NVS216提供足够的电力,以便在数据存储系统200的电源中断的情况下,保留存储在其中的数据。在某些实施例中,NVS216的容量小于或等于高速缓存245的总容量。
存储装置230可以在物理上包括一个或多个存储设备,例如存储阵列。存储阵列是个体存储设备(例如硬盘)的逻辑分组。在某些实施例中,存储装置230包括JBOD(简单磁盘捆绑)阵列或RAID(独立磁盘冗余阵列)阵列。可以进一步组合一批物理存储阵列以便形成存储组(rank),这将物理存储装置与逻辑配置相分离。可以将存储组中的存储空间分配到逻辑卷中,这些逻辑卷定义在写入/读取请求中指定的存储位置。
在一个实施例中,如图2中所示的存储系统可以包括逻辑卷或简称“卷”,可以具有不同类型的分配。存储装置230a、230b和230n在数据存储系统200中被示出为存储组,并且在此被称为存储组230a、230b和230n。存储组可以在数据存储系统200的本地,或者可以位于物理远程位置处。换言之,本地存储控制器可以与远程存储控制器连接,并且管理远程位置处的存储装置。存储组230a被示出配置有两个完整卷234和236,以及一个部分卷232a。存储组230b被示出具有另一个部分卷232b。因此,卷232跨存储组230a和230b被分配。存储组230n被示出为完全分配给卷238—即,存储组230n指用于卷238的完整物理存储装置。从上面的实例,将理解存储组可以被配置为包括一个或多个部分和/或完整卷。卷和存储组可以进一步分为所谓的“磁道”,磁道表示存储装置的固定块。磁道因此与给定卷关联,并且可以被给予给定存储组。
存储控制器240可以包括并行处理模块255(例如,并行操作处理模块)、锁定模块257(例如,Lock_Try_or_Spin模块)、自旋任务模块258和计算模块259(例如,用于确定自旋任务数量的计算模块)。并行处理模块255、锁定模块257、自旋任务模块258和计算模块259可以是同时执行功能的一个完整模块或单独的模块。并行处理模块255、锁定模块257、自旋任务模块258和计算模块259可以具有某个内部存储器(未示出),并且可以存储未处理、已处理或“半处理”数据。并行处理模块255、锁定模块257、自旋任务模块258和计算模块259可以各自结合工作并与以下项的每个组件结合工作:存储控制器240、主机210、220、225以及可以经由存储结构260远程连接的其它存储控制器240和主机210、220及225。并行处理模块255、锁定模块257、自旋任务模块258和计算模块259可以在结构上是一个完整模块,或者可以与其它个体模块关联和/或包括在其它个体模块中。并行处理模块255、锁定模块257、自旋任务模块258和计算模块259还可以位于高速缓存245或存储控制器240的其它组件中。
存储控制器240包括用于控制主计算机210、220、225的光纤通道协议的控制开关241、用于控制全部存储控制器240的微处理器242、用于存储微程序(操作软件)250以便控制存储控制器240的操作的非易失性控制存储器243、用于临时存储(缓冲)数据的高速缓存245,以及用于帮助高速缓存245读取和写入数据的缓冲器244,控制开关241用于控制协议以便控制来往于其中可以设置信息的并行处理模块255、锁定模块257、自旋任务模块258和计算模块259的数据传输。可以实现多个缓冲器244以便辅助在此描述的方法和步骤。
在一个实施例中,主计算机或一个或多个物理或虚拟设备210、220、225和存储控制器240通过作为接口的网络适配器(这可以是光纤通道)260连接,即,经由被称为“光纤通道网络(fabric)”的开关来连接。微处理器242可以控制存储器243以便存储来自集群主机/节点设备(物理或虚拟)210的命令信息以及用于标识集群主机/节点设备(物理或虚拟)210的信息。控制开关241、缓冲器244、高速缓存245、操作软件250、微处理器242、存储器243、NVS216、并行处理模块255、锁定模块257、自旋任务模块258和计算模块259彼此通信,并且可以是单独或一个或多个个体组件。此外,存储器243可以包括数个组件(如果不是所有组件),例如操作软件250。示出的设备中的每个组件可以链接在一起,并且可以彼此通信以便实现适合于本发明的目的。
转到图3,示出显示用于使用锁定机制进行高效任务调度的示例性方法300的流程图。方法300开始(步骤302)。如果针对锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值,则方法300允许新任务针对锁定机制自旋(步骤304)。方法300结束(步骤306)。
转到图4,示出显示用于使用锁定机制进行高效任务调度的其它示例性方法400的流程图。方法400开始(步骤402)。方法400实现并且需要Lock_Lock_Try_or_Spin(步骤404)。方法400获得针对Lock_Lock_Try_or_Spin自旋的任务的数量(步骤406)。方法400然后判定针对锁(例如,Lock_Try_or_Spin(锁_尝试_或_自旋))自旋的任务的数量是否大于预定数量(例如N,其中N可以是大于0的至少一个值,例如1)(步骤408)。如果是,则如果针对Lock_Try_or_Spin自旋的任务的数量大于预定数量(例如N,其中N可以是大于0的至少一个值,例如1),则方法400重新分派任务(步骤410)。如果针对Lock_Try_or_Spin自旋的任务的数量等于或小于预定数量,则新任务将针对锁自旋(步骤412)。方法400结束(步骤414)。
在一个实施例中,本发明针对自旋锁实现新的Lock_Try_or_Spin。新的Lock_Try_or_Spin按如下方式工作:1)如果针对自旋锁自旋的任务的数量大于N(N可以是1),则算法返回失败通知。如果针对自旋锁自旋的任务的数量等于和/或小于N(N可以是1),则算法将使任务针对锁自旋。可以从其它类型的锁(例如,票据锁)获得已经自旋的任务的数量。例如,对于票据锁,本发明可以从上一个给出的票据编号和当前服务票据编号告知多少个任务/CPU正在等待。
在一个实施例中,本发明需要Lock_Try_or_Spin。如果Lock_Try_or_Spin失败,则本发明放弃处理器并且任务移动到分派队列。因此,本发明根本不需要像基于队列的锁那样等待。在一个实施例中,本发明不需要等待特定时间并且然后放弃队列锁中的任务,从而消除CPU周期的浪费。
此外,本发明不需要每个任务进行自旋(如票据锁所要求的那样),这意味着其它任务可以使用CPU周期。因此,可以在基于票据和/或队列的锁之上实现新的Lock_Try_or_Spin。
所属技术领域的普通技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者物理计算机可读存储介质。物理计算机可读存储介质例如可以是—但不限于—电、磁、光、晶体、聚合物、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。物理计算机可读存储介质的实例包括但不限于:具有一个或多个导线的电连接、便携式计算机盘、硬盘、RAM、ROM、EPROM、闪存、光纤、CD-ROM、光存储设备、磁存储设备、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序或数据的有形介质,该程序或数据可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读介质上包含的计算机代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、射频(RF)等等,或者上述的任意合适的组合。可以以任何静态语言编写用于执行本发明的各个方面的操作的计算机代码,所述静态语言例如包括“C”语言或其它类似的程序设计语言。计算机代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络或通信系统—包括但不限于局域网(LAN)或广域网(WAN)、融合网络—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(articleofmanufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
上面附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
尽管详细描述了本发明的一个或多个实施例,但所属技术领域的普通技术人员将理解,可以对这些实施例进行修改和改变而不偏离在以下权利要求中给出的本发明的范围。
Claims (20)
1.一种在计算环境中由处理器设备使用锁定机制进行高效任务调度的方法,所述方法包括:
如果针对所述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值,则允许新任务针对所述锁定机制自旋。
2.如权利要求1所述的方法,还包括如果针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个,则禁止所述新任务针对所述锁定机制自旋。
3.如权利要求2所述的方法,还包括在允许所述新任务针对所述锁定机制自旋之前,获得当前针对所述锁定机制自旋的所述任务的数量。
4.如权利要求1所述的方法,还包括如果针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个,则使所述新任务失败。
5.如权利要求1所述的方法,还包括当针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个时,将所述新任务退出到分派队列。
6.如权利要求1所述的方法,还包括需要所述锁定机制判定针对所述锁定机制自旋的任务的数量是否小于所述预定阈值。
7.如权利要求1所述的方法,还包括在基于票据的锁和基于队列的锁中的一个之上实现所述锁定机制以便判定针对所述锁定机制自旋的任务的数量是否小于所述预定阈值,其中所述锁定机制是锁尝试或自旋。
8.一种在计算环境中使用锁定机制进行高效任务调度的系统,所述系统包括:
所述锁定机制;以及
至少一个处理器设备,其可在所述计算环境中操作并与所述锁定机制通信,其中所述处理器设备:
在针对所述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值的情况下,允许新任务针对所述锁定机制自旋。
9.如权利要求8所述的系统,其中如果针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个,则所述至少一个处理器设备禁止所述新任务针对所述锁定机制自旋。
10.如权利要求9所述的系统,其中所述至少一个处理器设备在允许所述新任务针对所述锁定机制自旋之前,获得当前针对所述锁定机制自旋的所述任务的数量。
11.如权利要求8所述的系统,其中如果针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个,则所述至少一个处理器设备使所述新任务失败。
12.如权利要求8所述的系统,其中当针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个时,所述至少一个处理器设备将所述新任务退出到分派队列。
13.如权利要求8所述的系统,其中所述至少一个处理器设备需要所述锁定机制判定针对所述锁定机制自旋的任务的数量是否小于所述预定阈值。
14.如权利要求8所述的系统,其中所述至少一个处理器设备在基于票据的锁和基于队列的锁中的一个之上实现所述锁定机制以便判定针对所述锁定机制自旋的任务的数量是否小于所述预定阈值,其中所述锁定机制是锁尝试或自旋。
15.一种在计算环境中由至少一个处理器设备使用锁定机制进行高效任务调度的计算机程序产品,所述计算机程序产品包括非瞬时性计算机可读存储介质,所述非瞬时性计算机可读存储介质具有存储在其上的计算机可读程序代码部分,所述计算机可读程序代码部分包括:
第一可执行部分,其在针对所述锁定机制自旋的任务的数量小于在多个线程之间需要锁的并行操作的预定阈值的情况下,允许新任务针对所述锁定机制自旋。
16.如权利要求15所述的计算机程序产品,还包括第二可执行部分,其在针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个的情况下,禁止所述新任务针对所述锁定机制自旋。
17.如权利要求16所述的计算机程序产品,还包括第三可执行部分,其在允许所述新任务针对所述锁定机制自旋之前,获得当前针对所述锁定机制自旋的所述任务的数量。
18.如权利要求15所述的计算机程序产品,还包括第二可执行部分,其执行以下操作之一:
如果针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个,则使所述新任务失败,以及
当针对所述锁定机制自旋的所述任务的数量是等于和大于所述预定阈值中的一个时,将所述新任务退出到分派队列。
19.如权利要求15所述的计算机程序产品,还包括第二可执行部分,其需要所述锁定机制判定针对所述锁定机制自旋的任务的数量是否小于所述预定阈值。
20.如权利要求15所述的计算机程序产品,还包括第二可执行部分,其在基于票据的锁和基于队列的锁中的一个之上实现所述锁定机制以便判定针对所述锁定机制自旋的任务的数量是否小于所述预定阈值,其中所述锁定机制是锁尝试或自旋。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/966,468 | 2013-08-14 | ||
US13/966,468 US10579413B2 (en) | 2013-08-14 | 2013-08-14 | Efficient task scheduling using a locking mechanism |
PCT/CN2014/083148 WO2015021855A1 (en) | 2013-08-14 | 2014-07-28 | Efficient task scheduling using locking mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105393212A true CN105393212A (zh) | 2016-03-09 |
CN105393212B CN105393212B (zh) | 2018-08-24 |
Family
ID=52467788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480041204.8A Active CN105393212B (zh) | 2013-08-14 | 2014-07-28 | 使用锁定机制进行高效任务调度的方法、系统和存储介质 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10579413B2 (zh) |
JP (1) | JP2016530625A (zh) |
CN (1) | CN105393212B (zh) |
DE (1) | DE112014002754T5 (zh) |
GB (1) | GB2532400B (zh) |
WO (1) | WO2015021855A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086124A (zh) * | 2017-06-13 | 2018-12-25 | 龙芯中科技术有限公司 | 调整时间的方法、装置、电子设备及存储介质 |
CN115934370A (zh) * | 2022-12-23 | 2023-04-07 | 科东(广州)软件科技有限公司 | 自旋锁的获取方法、装置、设备及存储介质 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9542236B2 (en) * | 2011-12-29 | 2017-01-10 | Oracle International Corporation | Efficiency sequencer for multiple concurrently-executing threads of execution |
US9558035B2 (en) * | 2013-12-18 | 2017-01-31 | Oracle International Corporation | System and method for supporting adaptive busy wait in a computing environment |
GB2532424B (en) * | 2014-11-18 | 2016-10-26 | Ibm | An almost fair busy lock |
US11119903B2 (en) * | 2015-05-01 | 2021-09-14 | Fastly, Inc. | Race condition testing via a scheduling test program |
US10606487B2 (en) * | 2017-03-17 | 2020-03-31 | International Business Machines Corporation | Partitioned memory with locally aggregated copy pools |
CN108710541B (zh) * | 2018-05-22 | 2022-02-01 | 泰康保险集团股份有限公司 | 一种定时任务的执行方法及装置 |
US10713082B2 (en) * | 2018-11-28 | 2020-07-14 | Sap Se | Cloud platform integration load balancer |
CN111552574A (zh) * | 2019-09-25 | 2020-08-18 | 华为技术有限公司 | 一种多线程同步方法及电子设备 |
WO2022265248A1 (en) * | 2021-06-15 | 2022-12-22 | Samsung Electronics Co., Ltd. | Method and electronic device for distributing packet flow |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274809A (en) * | 1988-05-26 | 1993-12-28 | Hitachi, Ltd. | Task execution control method for a multiprocessor system with enhanced post/wait procedure |
US6112222A (en) * | 1998-08-25 | 2000-08-29 | International Business Machines Corporation | Method for resource lock/unlock capability in multithreaded computer environment |
CN1601478A (zh) * | 2003-09-25 | 2005-03-30 | 国际商业机器公司 | 用于在被争夺的互斥锁上被动态限定的自旋线程的方法与系统 |
CN102566979A (zh) * | 2011-12-02 | 2012-07-11 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2804478B2 (ja) | 1988-05-26 | 1998-09-24 | 株式会社日立製作所 | タスク制御方式及びオンライン・トランザクション・システム |
JPH02171952A (ja) | 1988-12-26 | 1990-07-03 | Hitachi Ltd | マルチプロセッサにおけるディスパッチ方式 |
JPH0318935A (ja) | 1989-06-15 | 1991-01-28 | Hitachi Ltd | データリストに対するアクセスの直列化方式 |
JPH0612394A (ja) | 1992-06-25 | 1994-01-21 | Hitachi Ltd | プロセススケジュール方式 |
US6965961B1 (en) | 2002-03-01 | 2005-11-15 | University Of Rochester | Queue-based spin lock with timeout |
US7861042B2 (en) * | 2006-10-23 | 2010-12-28 | Hewlett-Packard Development Company, L.P. | Processor acquisition of ownership of access coordinator for shared resource |
US8086437B2 (en) | 2008-04-02 | 2011-12-27 | Microsoft Corporation | Modeling and simulating software contention |
US20120304185A1 (en) | 2010-02-03 | 2012-11-29 | Nec Corporation | Information processing system, exclusive control method and exclusive control program |
US9158596B2 (en) * | 2011-03-18 | 2015-10-13 | Oracle International Corporation | Partitioned ticket locks with semi-local spinning |
US20130080672A1 (en) * | 2011-09-27 | 2013-03-28 | Kaminario Technologies Ltd. | System, method and computer program product for access control |
CN102508381B (zh) | 2011-11-29 | 2015-02-11 | 深圳市华星光电技术有限公司 | 一种用于液晶面板的烘烤设备 |
US8905000B2 (en) | 2011-12-22 | 2014-12-09 | Continental Automotive Systems, Inc. | Throttle body assembly |
-
2013
- 2013-08-14 US US13/966,468 patent/US10579413B2/en active Active
-
2014
- 2014-07-28 CN CN201480041204.8A patent/CN105393212B/zh active Active
- 2014-07-28 DE DE112014002754.5T patent/DE112014002754T5/de active Pending
- 2014-07-28 GB GB1603638.6A patent/GB2532400B/en active Active
- 2014-07-28 JP JP2016533795A patent/JP2016530625A/ja active Pending
- 2014-07-28 WO PCT/CN2014/083148 patent/WO2015021855A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274809A (en) * | 1988-05-26 | 1993-12-28 | Hitachi, Ltd. | Task execution control method for a multiprocessor system with enhanced post/wait procedure |
US6112222A (en) * | 1998-08-25 | 2000-08-29 | International Business Machines Corporation | Method for resource lock/unlock capability in multithreaded computer environment |
CN1601478A (zh) * | 2003-09-25 | 2005-03-30 | 国际商业机器公司 | 用于在被争夺的互斥锁上被动态限定的自旋线程的方法与系统 |
CN102566979A (zh) * | 2011-12-02 | 2012-07-11 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086124A (zh) * | 2017-06-13 | 2018-12-25 | 龙芯中科技术有限公司 | 调整时间的方法、装置、电子设备及存储介质 |
CN109086124B (zh) * | 2017-06-13 | 2021-08-20 | 龙芯中科技术股份有限公司 | 调整时间的方法、装置、电子设备及存储介质 |
CN115934370A (zh) * | 2022-12-23 | 2023-04-07 | 科东(广州)软件科技有限公司 | 自旋锁的获取方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
GB2532400B (en) | 2020-06-03 |
DE112014002754T5 (de) | 2016-03-03 |
US10579413B2 (en) | 2020-03-03 |
WO2015021855A1 (en) | 2015-02-19 |
JP2016530625A (ja) | 2016-09-29 |
CN105393212B (zh) | 2018-08-24 |
GB201603638D0 (en) | 2016-04-13 |
GB2532400A (en) | 2016-05-18 |
US20150052529A1 (en) | 2015-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105393212A (zh) | 使用锁定机制的高效任务调度 | |
US10725755B2 (en) | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads | |
CN105573660B (zh) | 用于改善分簇磁盘阵列的性能的方法和装置 | |
US10853249B2 (en) | Read and write sets for transactions of a multithreaded computing environment | |
BR112019009566A2 (pt) | aparelhos e métodos para uma arquitetura de processador | |
US9063786B2 (en) | Preferential CPU utilization for tasks | |
CN106708975A (zh) | 商品库存信息的处理方法及系统 | |
CN103473250A (zh) | 用于保存文件系统节点的过去状态的方法与系统 | |
US10331499B2 (en) | Method, apparatus, and chip for implementing mutually-exclusive operation of multiple threads | |
US10248471B2 (en) | Lockless execution in read-mostly workloads for efficient concurrent process execution on shared resources | |
CN105359109A (zh) | 基于次计算机中的存储器错误移动主计算机中的对象 | |
Suminto et al. | Pbse: A robust path-based speculative execution for degraded-network tail tolerance in data-parallel frameworks | |
CN102681890B (zh) | 一种应用于线程级推测并行的限制性值传递方法和装置 | |
CN106068497A (zh) | 事务存储器支持 | |
US8001364B2 (en) | Dynamically migrating channels | |
US20220283745A1 (en) | Storage system, path management method, and recording medium | |
CN110633049A (zh) | 非易失性存储器感知的高速缓存策略 | |
Kong et al. | Origin pilot: a quantum operating system for effecient usage of quantum resources | |
CN103778003A (zh) | 资源的分层锁定 | |
US10628056B2 (en) | Information processing apparatus and shared memory management method | |
US20170177508A1 (en) | Information processing apparatus and shared-memory management method | |
Zhi et al. | OPC: An effective memory computing solution of big data for PC | |
US8447930B2 (en) | Managing in-line store throughput reduction | |
Surman | The IBM z Systems Coupling Facility exploitation of storage-class memory | |
Vallath et al. | The SQL Scripts Used in This Book |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |