CN104798045B - 用于在并行优先级队列中使用定序器的系统和方法 - Google Patents
用于在并行优先级队列中使用定序器的系统和方法 Download PDFInfo
- Publication number
- CN104798045B CN104798045B CN201380060771.3A CN201380060771A CN104798045B CN 104798045 B CN104798045 B CN 104798045B CN 201380060771 A CN201380060771 A CN 201380060771A CN 104798045 B CN104798045 B CN 104798045B
- Authority
- CN
- China
- Prior art keywords
- request
- sequencer
- priority query
- competition
- queue
- 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
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
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
-
- 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/524—Deadlock detection or avoidance
-
- 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
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
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)
- Telephonic Communication Services (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种可以支持并行优先级队列的系统和方法。并行优先级队列允许多个线程与所述优先级队列交互。优先级队列可使用定序器来检测和竞争所述优先级队列中的一个或多个请求的多个线程并对所述多个线程排序。此外,优先级队列操作以减少所述多个线程之间的竞争。
Description
版权信息
本专利文件的公开的一部分包含受版权保护的材料。版权拥有者不反对任何人对本专利公开的专利文件的传真复制,因为它出现在专利商标局的专利文件或记录中,但是在其他方面保留所有的版权。
技术领域
本发明一般涉及诸如中间件等的计算机系统和软件,并且具体涉及用于支持中间件机器环境中的队列的系统和方法。
背景技术
在任何大组织内,经过许多年的跨度,该组织常常发现它自己具有包括各种不同的计算机硬件、操作系统、和应用软件的杂乱的IT基础设施。尽管此基础设施的每个单独组件自身可能都是设计良好和维护良好的,但是当尝试互联这些组件或者共享公共资源时,常常发现这是困难的管理任务。近年来,组织已经将它们的注意力转到可以为共享的基础设施提供基础的诸如虚拟化和集中式存储,甚至是近来的云计算等的技术。但是,几乎没有特别适用于这种环境使用的一体化(all-in-one)平台。这些是本发明的实施例旨在要解决的一般背景。
发明内容
提供了用于支持并行优先级队列的系统和方法。并行优先级队列允许多个线程与所述优先级队列交互。优先级队列可使用定序器来检测竞争所述优先级队列中的一个或多个请求的多个线程并对所述多个线程进行排序。此外,优先级队列操作以减少所述多个线程之间的竞争。
本发明的其他目标和优点根据下面结合附图阅读的各种实施例的详细描述,对本领域技术人员变得清晰。
附图说明
图1示出了根据本发明的实施例的中间件机器环境100的示图;
图2示出了根据本发明的实施例的中间件机器平台或环境的另一个示图;
图3示出了根据本发明的各种实施例使用优先级队列处理中间件机器环境中的请求的示图;
图4示出了支持中间件机器环境中的非阻塞队列的示图;
图5示出了根据本发明的各种实施例支持并行优先级队列的示图;
图6示出了根据本发明的各种实施例保证异常值(outlier)列表的先入先出(FIFO)次序的示图;
图7说明了根据本发明的实施例用于将多个请求添加到并行优先级队列中的异常值列表中的示例交互图表;
图8示出了根据本发明的各种实施例检测并行优先级队列的不同用户之间的竞争的示图;
图9是根据本发明的实施例用于说明当检测到竞争时受害者和竞争者之间的交互的示例交互图表;
图10是根据本发明的实施例用于说明当检测到没有竞争时受害者和竞争者之间的交互的示例交互图表;
图11说明了根据本发明的实施例用于支持优先级队列中的合作并行性的示例流程图。
具体实施方式
本文描述的是可以支持集群中的工作分享多路复用的系统和方法。
图1示出了根据本发明的实施例的中间件机器环境100的示图。如图1所示,每个中间件机器系统102包括若干中间件机器机架组件104,组件104的每个都包括高性能中间件机器硬件节点106(例如,64位处理器、高性能大存储器、和冗余InfiniBand和以太网络)和中间件机器软件环境108的组合。结果是可以在数分钟内而不是数天或数月内提供并且可根据需求缩放的完整的应用服务器环境。根据实施例,每个中间件机器系统可被部署为全、半、或四分之一机架,或其他配置的机架组件,并且可再次使用InfiniBand将若干中间件机器系统耦合在一起以创建更大的环境。每个中间件机器软件环境都可利用若干应用服务器或其他软件实例提供。如图1所示的例子,应用服务器实例109可包括虚拟机116、操作系统120、虚拟化层124、和应用服务器层128(例如,包括小服务器程序(servlet)132、EJB 134和Gridlink 136容器的WebLogic)。另一种应用服务器实例110可包括虚拟机118、操作系统122、虚拟化层126、和数据网格层140(例如包括主动式高速缓存142的Coherence)。每个实例可使用中间件机器集成组件150(诸如Exalogic集成包等)彼此通信并且可与它的中间件机器硬件节点和其他节点通信,所述中间件机器集成组件150本身提供了诸如支持InfiniBand和其他特征等的若干优化特征,如以下进一步详述的。
图2示出了根据本发明的实施例的中间件机器平台或环境的另一个示图。如图2所示,每个应用服务器实例可作为中间件机器环境内的发送器和/或接收器160、161。每个应用服务器实例也与多路复用器162、163关联,允许所述应用服务器经InfiniBand网络164彼此通信。在图2示出的例子中,应用服务器实例可包括内核空间165、用户空间167、应用服务器(例如,WebLogic空间)166,应用服务器(例如,WebLogic空间)166又可与套接字直接协议168、JVM(例如,JRockit/Hotspot层)170、WLS核172、小服务程序容器174、和JSP编译器176关联。根据其他实施例,可以包括中间件类型的软件的其他组合。根据各种实施例,机器集成组件可以提供特征180以提供用于共享的基础设施的基础和改善共享的基础设施内的性能,所述特征180是诸如零缓冲区拷贝、分散/集中I/O、T3连接、懒惰解串行化(LazyDeserialization)和GridLink数据源等。
优先级队列
根据本发明的各种实施例,并行系统可使用优先级队列将进入的请求优先化,以便提供具有合适的服务水平协议(SLA)的服务。
图3示出了根据本发明的各种实施例使用优先级队列处理中间件机器环境中的请求的示图。如图3所示,一个或多个线程(例如解串行化(deserialzing)线程A-B 311-312)可以将包含一个或多个请求320的进入的网络业务310解串行化。解串行化线程A-B 311-312例如可以使用add()方法将请求320放置在优先级队列301中。接着,多个工作线程(例如工作线程A-C 321-323)可以例如使用delete_min()方法并行访问优先级队列301并且可以声明请求320。
优先级队列30可被设计成满足要求的并行标准,以便竞争者之间的交互不引起系统整体的吞吐量下降。此外,优先级队列301可被实施成具有固定的存储器占用空间,以便JVM能够更好地优化它对固定尺寸的原始数组的操作,并且可以实现显著的高速缓存效率。
根据本发明的各种实施例,优先级队列301可以基于日历队列来实施,所述日历队列例如是在WebLogic应用服务器中提供的日历队列。所述日历队列可以包括具有多个桶的日历,其中每个桶都可存储落入到特定时间片内的事件。例如,多个桶可以通过比较目标服务时间与当前时间来被分类和安排。如果时间差在第一字节中,则所述请求可被存储在第一256个桶的桶中。所述特定的桶可使用用于执行所述请求的目标时间的实际值来选择。此外,如果时间差在第二字节中,则所述请求可被存储在第二256个桶的桶中。
当用户例如经工作线程A-C 321-323的一个工作线程尝试移除被配置成最早执行的下一个请求时,系统可扫描所述日历以查看非空的第一桶。如果该桶不是第一256个桶的一个,则所述日历队列可使用循环和晋升方法将所述请求朝着第一256个桶移动到“下一级”的桶。最终,一些请求可被晋升到第一256个桶中的一个或多个桶中,并且用户可声明请求并且相应前进。
上述晋升过程可涉及可对系统的整体性能有影响的算法代价。此外,日历队列可以有其他设计,这些设计的性能可被限制为从“O(1)add,O(logN)delete_min”与“O(logN)add,O(1)delete_min”之间进行选择。
图4示出了支持中间件机器环境中的非阻塞队列的示图。如图4中所示,多个用户(例如用户A-B 411-412)可以并行访问中间件机器环境400中的优先级队列401。优先级队列401可被实施为非阻塞队列并且可经请求管理器402访问。
管理线程池403的请求管理器402可以具有用于将不同线程与不同请求关联的单独的逻辑。例如,请求管理器402可以通过使用锁定机构将对优先级队列401的调用打包在同步的语句或同步的块410中,来串行化所有线程池方法调用。
因此,由于串行化是在非阻塞优先级队列401外部完成的,因此对优先级队列401的操作可被单线程的设计限制。
并行优先级队列
图5示出了根据本发明的各种实施例支持并行优先级队列的示图。如图5所示,多个用户(例如用户A-C 511-513)可以并行访问中间件机器环境500中的并行优先级队列501。
并行优先级队列501可以包括能够将进入的请求优先化和存储的日历,例如日历环502。尺寸有限的日历环502可被配置成存储具有预配置时间限制内的目标响应时间的请求。在日历环502内,请求可被直接存储或放置在匹配所述请求的服务质量(QoS)(例如目标服务时间)的位置处的环形缓冲区中。
因此,在不改变日历队列的存储器占用空间的情况下,系统可以实现对请求的更廉价的查找。此外,系统可以将日历队列的delete_min操作的算法复杂度减小到几乎是线性缓存效率搜索,同时将向日历队列添加元素保持为O(1)操作。
此外,具有高于预配置时间限制的目标服务时间的请求可被添加到异常值列表,例如异常值列表504。由于这些请求的调度可能不是时间关键的,因此系统允许更慢地向排序后的异常值列表504添加。此外,并行优先级队列501可以使用定序器(例如outliers_seq)以对具有相同QoS的异常值列表实施先进先出(FIFO)次序。
例如,日历环502可被配置成存储具有低于2秒的目标响应时间(或QoS)的请求,因为具有高于2秒的QoS的请求被认为是稀有的。此外,具有低于2秒的QoS的请求可被放置到匹配QoS的日历环502中,而具有高于2秒的QoS的请求可被放置到异常值列表504中。
不同于图4中所示的日历队列,请求管理器510不需要将每个对日历队列501的调用都放到同步的语句中。支持连续传递(continuation-passing)507的同步的块506可以在并行优先级队列501的范围内实施。用户(例如用户A-C 511-513)可以不需要从并行优先级队列501外部访问线程池520。
使用连续传递,系统可以将日历队列从非阻塞变换为阻塞。连续传递507可以使得用户A-C 511-513能够管理线程池520中的空闲工作或线程530,以便在线程池520中可以正等待的线程530可被重用。
此外,并行优先级队列501可以包括使得并行优先级队列501能够检测竞争的定序器503并且可使用快通道505支持合作并行性。因此,并行优先级队列501可以察觉和恰当地处理竞争,而不需要锁定以获得关于竞争的了解。
为异常值列表维护FIFO
图6示出了根据本发明的各种实施例保证异常值列表的先入先出(FIFO)次序的示图。如图6所示,中间件机器环境600中的优先级队列601可包括日历环602和异常值列表603。
多个调用者(例如不同线程上的解串行化器A-B 611-612)可以尝试并行访问优先级队列601。优先级队列601可以使用基于票机构的定序器604来保证异常值列表603的先入先出(FIFO)次序。
例如,在调用者(例如解串行化器A 611)被允许向异常值列表603添加请求A 621之前,解串行化器A 611可首先向定序器604发送请求票的消息。如果没有竞争,则定序器604可以将票(例如票A631)发出给解串行化器A 611。
此外,另一个调用者(例如解串行化器B 612)可以试着向异常值列表603添加另一个请求(例如请求B 622)。定序器604可以接收来自解串行化器B 612的另一个对票的请求。因此,在解串行化器A 611正将请求A 621添加到异常值列表603中的此刻,定序器604可以阻塞解串行化器B 612。
在解串行化器A 611将请求A 621添加到异常值列表603完成之后,解串行化器A611可以推进定序器604。接着,定序器604可以将票(例如票B 632)发出给解串行化器B612,这允许解串行化器B612在请求A 621之后将请求B 622添加到异常值列表603中。
图7说明了根据本发明的实施例用于将多个请求添加到并行优先级队列中的异常值列表中的示例交互图表。如图7所示,定序器710可以协调可以尝试并行访问优先级队列的多个调用者或线程(例如解串行化器A-B 711-712)。
在步骤701,解串行化器A 711可以尝试从定序器710中获得票。接着,在步骤702,定序器710可以检查票机构。如果成功,则不存在其他正尝试访问优先级队列的调用者。否则,解串行化器A 711可被阻塞直到某用户将其释放。
接着,在步骤703,另一个调用者(解串行化器B 712)可以成功将请求添加到异常值列表,同时解串行化器A 711被阻塞。在步骤704,解串行化器B可以尝试推进定序器710中。
在步骤705,在定序器710接收推进的消息后,定序器710可以创建票并且把票发出给正在等待的解串行化器A 711。因此,在步骤706,解串行化器A 711接收票,并且在步骤707,解串行化器A 711可以继续将另一个请求添加到异常值列表。
因此,使用定序器710,不需要实施同步或锁定机构就可以保持异常值列表的FIFO次序。
检测和处理不同用户之间的竞争
图8示出了根据本发明的各种实施例检测并行优先级队列的不同用户之间的竞争的示图。如图8所示,不同用户(例如用户A-B 811-812)可以并行访问中间件机器环境800中的优先级队列801。优先级队列801可以包括日历环802、异常值列表803、和快通道804。
每个用户可以利用被偷的请求的列表以进一步减小并行性。例如,用户A 811可以使用可充当用户A 811的本地列表的被偷的请求的列表807。另外,用户A-B 811-812的每个用户可在它被允许访问优先级队列801之前向定序器805发送请求票的消息。
定序器805可以维护读者计数806,读者计数806是已经从定序器805请求过票的读者的总数。当定序器805每次接收票请求时,它可以增加读者计数806。此外,读者计数806可被用以检测竞争。
例如,在用户A 811被允许访问优先级队列801之前,它可以从定序器805中获得票,例如票A 831。接着,另一个用户B 812可以向定序器805发送对票(例如票B 832)的请求。定序器805可以增加读者计数806并且阻塞用户B 812直到用户A 811完成它的操作。
另一方面,当用户A 811检测到定序器805的当前读者计数806(t)超过了它可以保持的票数目(ticket number)时(t>ticket number),用户A 811可以检测到来自用户B 812的竞争。接着,用户A 811可以通过将请求放置到快通道804中并且允许请求被用户B812使用来减小竞争,这可被称作合作并行性策略。
因此,使用定序器805,通过允许用户除了访问日历环802之外还访问快通道804和被偷的请求的列表807,而不需要同步或锁定机构,优先级队列可以被优化以用于多个用户之间的竞争。
图9是根据本发明的实施例用于说明当检测到竞争时受害者和竞争者之间的交互的示例交互图表。如图9所示,定序器920可被用以检测和处理并行优先级队列的不同用户(例如受害者922与竞争者921)之间的竞争。
在步骤901,竞争者921可以向定序器920发送表明它正等待票的消息。因为受害者922目前正访问优先级队列,所以在步骤902,定序器920可以阻塞竞争者921并且增加读者计数(readers)。
在步骤903-905,受害者922可以从并行优先级队列中获得请求并且针对当前readers检查定序器920。(步骤903-904也可被称作非暂态转变913,这将在后面的部分讨论。)
接着,在步骤906,受害者922可以将获得的读者计数(t)与它保持的票数量(ticket number)比较。因为定序器920已经增加了读者计数,所以当受害者发现t>ticketnumber时,受害者可以检测到竞争。
随后,在受害者922试着在步骤909推进读者定序器之前,受害者922在步骤907-908可以将请求放置到快通道中并且在快通道中更新请求计数fastLane_w。(步骤907-908也可被称作非暂态转变914,这将在后面的部分讨论。)
在接收来自受害者922的推进读者定序器的消息后,在步骤910,定序器920可以继续以向竞争者921发出票,这释放竞争者921。
最终,在步骤911,竞争者921可以接收票,并且在步骤912,竞争者921可以继续以从快通道中声明请求。
图10是根据本发明的实施例用于说明当检测到没有竞争时受害者和竞争者之间的交互的示例交互图。如图10所示,由于访问优先级队列的并行性质,受害者1022可能不总是能够检测到来自竞争者1021的竞争。
在步骤1001-1003,受害者1022可以从并行优先级队列获得请求,并且受害者1022可以针对当前读者计数(readers)检查定序器1022。(步骤1001-1002也可被称作非暂态转变1011,这将在后面的部分讨论。)
此外,在步骤1004,定序器1020可以接收来自竞争者1021的对票的请求,并且在步骤1005,定序器1020可以增加读者计数(readers)。
在步骤1006,因为定序器1020在竞争者1021将当前读者计数返回给受害者1022之后增加了读者计数,所以受害者1022可能不能够检测到来自竞争者1021的竞争。
在步骤1007,受害者1022可以声明请求并且推进读者定序器,读者定序器在步骤1008可以接着向竞争者1021发出票。
接着,在步骤1009,竞争者1021可以接收票,并且在步骤1010,竞争者1021可以继续以从优先级队列(例如从快通道)声明请求。
图11说明了根据本发明的实施例用于支持优先级队列中的合作并行性的示例流程图。如图11所示,在步骤1101,系统允许多个线程与并行优先级队列交互。接着,在步骤1102,系统可以使用定序器检测竞争优先级队列中的一个或多个请求的多个线程。此外,在步骤1103,系统可以减小优先级队列中的多个线程之间的竞争。
暂态和非暂态转变
根据本发明的实施例,并行编程模型可以支持不同种类的转变:诸如暂态转变和非暂态转变等。
包括常规程序次序步骤的非暂态转变步骤可被编译器和处理器自由重排序。例如,图9包括非暂态转变步骤913和914,并且图10包括非暂态转变步骤1011。在这些非暂态转变步骤的每个步骤内,可以确保重排序不破坏程序次序意图的逻辑。
另一方面,存在着对暂态转变的重排序的约束,这也可以出现在程序次序中。暂态转变可以包括在并行算法中的有意设计选择,并且暂态转变可被实施为编译器和处理器屏障。例如,delete_min中的暂态转变可指示例如读取fastLane_w的任意数据加载不能先于例如加载fastLane_r的数据加载。
暂态转变和非暂态转变的使用允许调用者收集关于并行算法的其他部分的进展的信息,以使得状态的变化是一致的。
在图9示出的例子中,在受害者922在步骤906检测到竞争者之后,当更多竞争者到来时读者计数可以改变。即使受害者922可能不知道读者计数的确切值,但是读者计数仍然只会增加。因此,将请求放置在快通道环中是安全的。
另一方面,在图10示出的例子中,在受害者1022确定在步骤1006没有竞争者(readers==ticket number)之后,由于竞争者1021的到来,readers的真值可以实际上高于先前返回的值。可以假定这种情况是稀少的,并且确定readers的确切值的代价高于知道确切值的收益。另外,这里猜错的代价可以认为是低的,因为受害者1022在步骤1007几乎立即推进读者定序器,这可以相当快地将任何竞争者解阻塞。
此外,在图8示出的例子中,由用户A 811将请求(例如请求A821)添加到快通道804可以被实施为非暂态转变,而由用户B 812从快通道804声明请求A 821可被实施为暂态转变。
在此例子中,在请求被实际存储到快通道环804之前,竞争者(用户B 812)可以观察fastLane_w的值。在此,在受害者(用户A 811)推进读者定序器之后,只允许一个竞争者访问快通道804。访问快通道804的竞争者的数目不多于可以观察到的请求的数目。
因此,即使竞争者811可以观察到对快通道804的请求计数(fastLane_w)在快通道804的实际填充部分之前,竞争者仍可以使用被每个竞争者仅更新一次的索引(fastLane_r)来访问所述值。换句话说,受害者(用户A 811)可以通过控制可被释放的竞争者的最大数目来控制对快通道804中的请求的可访问性,这是因为只有当受害者812释放的竞争者足够多时,fastLane_r的值才可达到fastLane_w。
在某些实施例中,提供了用于实施上述方法的一种方法的计算机程序。根据本发明的实施例,计算机程序使得系统执行以下步骤:允许多个线程与并行优先级队列交互;经定序器检测竞争优先级队列中的一个或多个请求的多个线程;经优先级队列减小多个线程之间的竞争。
在一种实施例中,提供了用于支持并行优先级队列的系统。系统包括用于允许多个线程与并行优先级队列交互的装置,用于经定序器检测竞争优先级队列中的一个或多个请求的多个线程的装置,以及用于经优先级队列减小多个线程之间的竞争的装置。
在一种实施例中,系统还包括用于在优先级队列中包含日历环的装置,其中日历环操作以存储具有小于预配置的服务质量(QoS)的目标响应时间的各种请求。
在一种实施例中,系统还包括用于将预配置的服务质量(QoS)规定为大约两秒的装置。
在一种实施例中,系统还包括用于使用与日历环同步更新的位图进行快速扫描的装置。
在一种实施例中,系统还包括用于将可被用来当工作负载密集时减小日历环上的竞争的被偷的请求的列表与优先级队列关联的装置,所述被偷的请求的列表包含位于相同日历条目上的一个或多个请求。
在一种实施例中,系统还包括用于在优先级队列中包含可用以支持合作并行性的快通道的装置。
在一种实施例中,系统还包括用于经定序器使用可以对多个线程排序的票机构的装置。
在一种实施例中,系统还包括用于经票机构保持每当用户尝试访问优先级队列时增加的读者计数的装置。
在一种实施例中,系统还包括用于经定序器向竞争的线程发出票的装置,其中票允许竞争的线程访问优先级队列。
本发明可以使用包括一个或多个处理器、存储器和/或根据本公开的教导编程的计算机可读存储介质的一个或多个传统通用数字计算机或专用数字计算机、计算设备、机器、或微处理器来方便地实施。合适的软件代码可以由熟练的编程人员基于本公开的教导来容易地准备,如会对软件领域的技术人员清晰的那样。
在某些实施例中,本发明包括计算机程序产品,所述计算机程序产品是其上或其中存储有可被用以编程计算机以执行本发明的任何过程的指令的存储介质或计算机可读介质。存储介质可以包括但不限于,包括软盘、光盘、DVD、CD-ROM、微驱动器、和磁光盘的任何类型的盘,ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存设备、磁卡或光卡、纳米系统(包括分子存储器IC)、或适于存储指令和/或数据的任何类型的介质或设备。
已经提供了本发明的前述部分用于说明和描述目的。不旨在穷尽或者将本发明限制为所公开的精确形式。许多修改和变体对本领域技术人员来说是清晰的。实施例被选择和描述以最好地解释本发明的原理和它的实际应用,由此使得本领域其他技术人员理解本发明的各种实施例和带有适于具体期望使用的各种修改的本发明。预期本发明的范围由以下权利要求和它们的等价物来限定的。
Claims (17)
1.一种用于支持并行优先级队列的系统,包括:
一个或多个微处理器;
优先级队列,允许多个线程与该优先级队列交互,其中,所述优先级队列包含日历环,所述日历环操作以存储具有小于预配置时间限制的目标响应时间的请求,其中,所述优先级队列还包含异常值列表,所述异常值列表操作以存储具有大于预配置时间限制的目标响应时间的请求;以及
在所述一个或多个微处理器上运行的定序器,其中所述定序器操作以检测竞争所述优先级队列中的一个或多个请求的所述多个线程的子集,并且
其中所述优先级队列操作以减少所述多个线程之间的竞争,以及
其中所述定序器操作以保持异常值列表中存储的请求的先进先出FIFO次序。
2.根据权利要求1所述的系统,其中:
所述预配置时间限制被规定为大约两秒。
3.根据权利要求1或2所述的系统,其中:
与日历环同步更新的位图被用于快速扫描。
4.根据权利要求1或2所述的系统,其中:
所述优先级队列包含能被用来当工作负载密集时减小日历环上的竞争的被偷的请求的列表,其中所述被偷的请求的列表包含位于相同日历条目上的一个或多个请求。
5.根据权利要求1或2所述的系统,其中:
所述优先级队列包含用以支持合作并行性的快通道。
6.根据权利要求1或2所述的系统,其中:
所述定序器使用能够对所述多个线程排序的票机构。
7.根据权利要求6所述的系统,其中:
所述票机构保持每当用户尝试访问所述优先级队列时增加的读者计数。
8.根据权利要求6所述的系统,其中:
所述定序器操作以向竞争的线程发出票,其中所述票允许所述竞争的线程访问所述优先级队列。
9.一种用于支持并行优先级队列的方法,包括:
允许多个线程与所述并行优先级队列交互;
在所述优先级队列中包含日历环,其中所述日历环操作以存储具有小于预配置时间限制的目标响应时间的请求;
在所述优先级队列中包含异常值列表,其中所述异常值列表操作以存储具有大于预配置时间限制的目标响应时间的请求;
经定序器检测竞争所述优先级队列中的一个或多个请求的所述多个线程的子集;
经所述优先级队列减小所述多个线程之间的竞争;以及
经所述定序器保持异常值列表中存储的请求的先进先出FIFO次序。
10.根据权利要求9所述的方法,还包括:
将预配置时间限制规定为大约两秒。
11.根据权利要求9或10所述的方法,还包括:
使用与所述日历环同步更新的位图进行快速扫描。
12.根据权利要求9或10所述的方法,还包括:
将能够被用来当工作负载密集时减小日历环上的竞争的被偷的请求的列表与所述优先级队列关联,其中所述被偷的请求的列表包含位于相同日历条目上的一个或多个请求。
13.根据权利要求9或10所述的方法,还包括:
在所述优先级队列中包含用以支持合作并行性的快通道。
14.根据权利要求9或10所述的方法,还包括:
经定序器使用能够对所述多个线程排序的票机构。
15.根据权利要求14所述的方法,还包括:
经所述票机构保持每当用户尝试访问所述优先级队列时增加的读者计数。
16.根据权利要求14所述的方法,还包括:
经所述定序器向竞争的线程发出票,其中所述票允许所述竞争的线程访问所述优先级队列。
17.一种非暂态机器可读存储介质,包括当被执行时使得系统执行根据权利要求9到16中的任何一个所述的方法的机器可读指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/781,493 US9110715B2 (en) | 2013-02-28 | 2013-02-28 | System and method for using a sequencer in a concurrent priority queue |
US13/781,493 | 2013-02-28 | ||
PCT/US2013/067108 WO2014133595A1 (en) | 2013-02-28 | 2013-10-28 | System and method for using a sequencer in a concurrent priority queue |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104798045A CN104798045A (zh) | 2015-07-22 |
CN104798045B true CN104798045B (zh) | 2018-10-16 |
Family
ID=49551816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380060771.3A Active CN104798045B (zh) | 2013-02-28 | 2013-10-28 | 用于在并行优先级队列中使用定序器的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9110715B2 (zh) |
EP (1) | EP2962200B1 (zh) |
JP (2) | JP6505610B2 (zh) |
KR (1) | KR101997816B1 (zh) |
CN (1) | CN104798045B (zh) |
WO (1) | WO2014133595A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372716B1 (en) * | 2013-09-23 | 2016-06-21 | Amazon Technologies, Inc. | Download prioritization |
US10127061B2 (en) * | 2015-08-21 | 2018-11-13 | International Business Machines Corporation | Controlling priority of dynamic compilation |
US10496577B2 (en) * | 2017-02-09 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Distribution of master device tasks among bus queues |
CN108563495A (zh) * | 2018-04-08 | 2018-09-21 | 郑州云海信息技术有限公司 | 数据中心综合管理系统的云资源队列分级调度系统和方法 |
US11422856B2 (en) | 2019-06-28 | 2022-08-23 | Paypal, Inc. | Adaptive program task scheduling to blocking and non-blocking queues |
CN111541623B (zh) * | 2020-04-10 | 2022-12-06 | 深圳前海微众银行股份有限公司 | 一种数据处理方法及装置 |
US11893613B2 (en) | 2020-12-23 | 2024-02-06 | Shopify Inc. | Systems, manufacture, and methods for controlling access to resources |
CN114924849B (zh) * | 2022-04-27 | 2024-06-04 | 上海交通大学 | 一种工业控制系统高并发执行和资源调度方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201229897A (en) * | 2010-12-16 | 2012-07-16 | Intel Corp | A fast and linearizable concurrent priority queue via dynamic aggregation of operations |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5109384A (en) | 1988-11-02 | 1992-04-28 | Tseung Lawrence C N | Guaranteed reliable broadcast network |
US6571274B1 (en) | 1998-11-05 | 2003-05-27 | Beas Systems, Inc. | Clustered enterprise Java™ in a secure distributed processing system |
US6449614B1 (en) | 1999-03-25 | 2002-09-10 | International Business Machines Corporation | Interface system and method for asynchronously updating a share resource with locking facility |
US6874144B1 (en) | 1999-04-05 | 2005-03-29 | International Business Machines Corporation | System, method, and program for implementing priority inheritance in an operating system |
US6701367B1 (en) | 1999-09-24 | 2004-03-02 | Sun Microsystems, Inc. | Mechanism for enabling customized session managers to interact with a network server |
AU2001249402A1 (en) | 2000-03-29 | 2001-10-08 | Nextset Software Inc. | System and method of generating and using proxy beans |
US20030120822A1 (en) | 2001-04-19 | 2003-06-26 | Langrind Nicholas A. | Isolated control plane addressing |
US7209921B2 (en) | 2000-09-01 | 2007-04-24 | Op40, Inc. | Method and system for deploying an asset over a multi-tiered network |
US20020174136A1 (en) | 2000-12-14 | 2002-11-21 | Ducan Cameron | Method and system for high performance transaction processing using a relational database management system |
JP3944231B2 (ja) * | 2000-12-28 | 2007-07-11 | フューチャーアーキテクト株式会社 | フレームワークシステム |
US6895585B2 (en) * | 2001-03-30 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Method of mixed workload high performance scheduling |
US7409420B2 (en) | 2001-07-16 | 2008-08-05 | Bea Systems, Inc. | Method and apparatus for session replication and failover |
JP3975703B2 (ja) * | 2001-08-16 | 2007-09-12 | 日本電気株式会社 | 情報処理システムにおける優先実行制御方法及びその装置並びにプログラム |
US7136392B2 (en) * | 2001-08-31 | 2006-11-14 | Conexant Systems, Inc. | System and method for ordering data messages having differing levels of priority for transmission over a shared communication channel |
US6895590B2 (en) | 2001-09-26 | 2005-05-17 | Intel Corporation | Method and system enabling both legacy and new applications to access an InfiniBand fabric via a socket API |
US7143227B2 (en) | 2003-02-18 | 2006-11-28 | Dot Hill Systems Corporation | Broadcast bridge apparatus for transferring data to redundant memory subsystems in a storage controller |
US6886041B2 (en) * | 2001-10-05 | 2005-04-26 | Bea Systems, Inc. | System for application server messaging with multiple dispatch pools |
US7046676B2 (en) | 2001-11-01 | 2006-05-16 | International Business Machines Corporation | QoS scheduler and method for implementing quality of service with cached status array |
US20030110232A1 (en) | 2001-12-11 | 2003-06-12 | International Business Machines Corporation | Distributing messages between local queues representative of a common shared queue |
US7403996B2 (en) | 2002-02-21 | 2008-07-22 | Bea Systems, Inc. | Systems and methods for migratable services |
US7554993B2 (en) | 2003-03-27 | 2009-06-30 | Hewlett-Packard Development Company, L.P. | Method and apparatus for performing connection management with multiple stacks |
US7536673B2 (en) | 2003-07-22 | 2009-05-19 | Sap Ag | Application business object processing |
US7953860B2 (en) | 2003-08-14 | 2011-05-31 | Oracle International Corporation | Fast reorganization of connections in response to an event in a clustered computing system |
JP2005128952A (ja) * | 2003-10-27 | 2005-05-19 | Nippon Telegr & Teleph Corp <Ntt> | 監視制御装置及び監視制御プログラム |
US7366109B2 (en) | 2003-10-29 | 2008-04-29 | Nortel Networks Limited | Virtual private networks within a packet network having a mesh topology |
US20050102412A1 (en) | 2003-11-10 | 2005-05-12 | Jan Hirsimaki | Transmission performance of a transport layer protocol connection |
US7640357B2 (en) | 2004-04-30 | 2009-12-29 | Sap Ag | Transmitting enterprise messages based on buffer sizes |
US7649854B2 (en) | 2004-05-19 | 2010-01-19 | Bea Systems, Inc. | System and method for providing channels in application servers and transaction-based systems |
US7219198B2 (en) | 2004-06-22 | 2007-05-15 | International Business Machines Corporation | Facilitating communication within shared memory environments using lock-free queues |
US7447861B2 (en) | 2004-07-14 | 2008-11-04 | International Business Machines Corporation | Integrated multi-function object locks |
WO2007014186A2 (en) | 2005-07-22 | 2007-02-01 | The Thomson Corporation | Systems, methods, and software for online courses |
EP1699257B1 (en) | 2005-03-04 | 2007-09-12 | Alcatel Lucent | Switch for integrated telecommunication networks. |
DE602004012563T2 (de) | 2004-10-11 | 2009-05-07 | Texas Instruments Inc., Dallas | Mehrfädiges DMA |
US7685391B1 (en) | 2004-10-12 | 2010-03-23 | Sun Microsystems, Inc. | Kernel/user stack relocation during system uptime |
JP4189374B2 (ja) * | 2004-11-19 | 2008-12-03 | 富士通株式会社 | 処理システム |
US7562138B2 (en) | 2004-12-28 | 2009-07-14 | Sap | Shared memory based monitoring for application servers |
US20060176884A1 (en) | 2005-02-04 | 2006-08-10 | Sytex, Inc. | Sytems, Methods And Devices For Remotely Administering A Target Device |
US7409709B2 (en) | 2005-02-14 | 2008-08-05 | Etsec, Inc. | Systems and methods for automatically reconfiguring a network device |
US7603502B2 (en) | 2005-04-12 | 2009-10-13 | Microsoft Corporation | Resource accessing with locking |
CA2609979A1 (en) | 2005-06-05 | 2006-12-14 | Starkey Laboratories, Inc. | Communication system for wireless audio devices |
US7480823B2 (en) | 2005-06-24 | 2009-01-20 | Sun Microsystems, Inc. | In-memory replication of timing logic for use in failover within application server node clusters |
US8166547B2 (en) | 2005-09-06 | 2012-04-24 | Fortinet, Inc. | Method, apparatus, signals, and medium for managing a transfer of data in a data network |
US8015256B2 (en) | 2005-11-23 | 2011-09-06 | Medicalis Corp. | Method and apparatus for parallel sequencing of messages between disparate information systems |
US8707323B2 (en) | 2005-12-30 | 2014-04-22 | Sap Ag | Load balancing algorithm for servicing client requests |
JP2007226398A (ja) | 2006-02-22 | 2007-09-06 | Hitachi Ltd | データベース接続管理方法及び計算機システム |
US7685131B2 (en) | 2006-02-28 | 2010-03-23 | International Business Machines Corporation | Web services database cluster architecture |
US8131860B1 (en) | 2006-03-30 | 2012-03-06 | Emc Corporation | Serialization and deserialization |
WO2007113539A1 (en) | 2006-03-31 | 2007-10-11 | British Telecommunications Public Limited Company | Interactive development tool and debugger for web services |
US20070263650A1 (en) | 2006-05-09 | 2007-11-15 | Srivatsa Sivan Subramania | Method for prioritizing web service requests |
US7371014B2 (en) | 2006-08-21 | 2008-05-13 | Intel Corporation | Monolithic active optical cable assembly for data device applications and various connector types |
US7991904B2 (en) | 2007-07-10 | 2011-08-02 | Bytemobile, Inc. | Adaptive bitrate management for streaming media over packet networks |
US8391295B2 (en) | 2007-07-31 | 2013-03-05 | Oracle International Corporation | Temporal affinity-based routing of workloads |
US7809925B2 (en) | 2007-12-07 | 2010-10-05 | International Business Machines Corporation | Processing unit incorporating vectorizable execution unit |
US20090182642A1 (en) | 2008-01-14 | 2009-07-16 | Neelakantan Sundaresan | Methods and systems to recommend an item |
US8306951B2 (en) | 2009-09-18 | 2012-11-06 | Oracle International Corporation | Automated integrated high availability of the in-memory database cache and the backend enterprise database |
US10127059B2 (en) | 2008-05-02 | 2018-11-13 | Skytap | Multitenant hosted virtual machine infrastructure |
US8255914B1 (en) | 2008-09-25 | 2012-08-28 | Emc Corporation | Information retrieval techniques involving the use of prioritized object requests |
US8347302B1 (en) * | 2008-10-09 | 2013-01-01 | Amazon Technologies, Inc. | System-aware resource scheduling |
US20100100889A1 (en) | 2008-10-16 | 2010-04-22 | International Business Machines Corporation | Accelerating mutual exclusion locking function and condition signaling while maintaining priority wait queues |
US8612930B2 (en) | 2009-01-30 | 2013-12-17 | Oracle America, Inc. | Methods and apparatus for dynamic class reloading and versioning |
US9230002B2 (en) | 2009-01-30 | 2016-01-05 | Oracle International Corporation | High performant information sharing and replication for single-publisher and multiple-subscriber configuration |
US7986706B2 (en) * | 2009-04-29 | 2011-07-26 | Telefonaktiebolaget Lm Ericsson | Hierarchical pipelined distributed scheduling traffic manager |
US8539486B2 (en) | 2009-07-17 | 2013-09-17 | International Business Machines Corporation | Transactional block conflict resolution based on the determination of executing threads in parallel or in serial mode |
CN101989922B (zh) | 2009-07-31 | 2014-05-28 | 国际商业机器公司 | 用于恢复会话初始协议事务的方法和系统 |
US8566509B2 (en) | 2009-08-25 | 2013-10-22 | International Business Machines Corporation | Efficiently implementing a plurality of finite state machines |
US8130776B1 (en) | 2009-08-28 | 2012-03-06 | Massachusetts Institute Of Technology | Method and apparatus providing network coding based flow control |
EP2293524A1 (en) | 2009-09-07 | 2011-03-09 | Nxp B.V. | Set-up of media stream transmission and server and client for media stream transmission |
US8811417B2 (en) | 2009-11-15 | 2014-08-19 | Mellanox Technologies Ltd. | Cross-channel network operation offloading for collective operations |
US8972994B2 (en) | 2009-12-23 | 2015-03-03 | Intel Corporation | Method and apparatus to bypass object lock by speculative execution of generated bypass code shell based on bypass failure threshold in managed runtime environment |
IT1397440B1 (it) | 2009-12-30 | 2013-01-10 | St Microelectronics Srl | Procedimento e sistemi per la distribuzione di contenuti mediali e relativo prodotto informatico |
US8549538B2 (en) | 2010-03-18 | 2013-10-01 | Microsoft Corporation | Coordinating communication medium state for subtasks |
US8627317B2 (en) | 2010-03-25 | 2014-01-07 | International Business Machines Corporation | Automatic identification of bottlenecks using rule-based expert knowledge |
EP2595058A4 (en) | 2010-07-13 | 2014-03-12 | Fujitsu Ltd | DEVICE, SYSTEM, PROGRAM, AND METHOD FOR PROCESSING MULTIPLE PATHS |
US9185054B2 (en) | 2010-09-15 | 2015-11-10 | Oracle International Corporation | System and method for providing zero buffer copying in a middleware machine environment |
US8756329B2 (en) | 2010-09-15 | 2014-06-17 | Oracle International Corporation | System and method for parallel multiplexing between servers in a cluster |
US20120158684A1 (en) | 2010-12-21 | 2012-06-21 | Lsi Corporation | Performance enhanced synchronization mechanism with intensity-oriented reader api |
TW201237632A (en) | 2010-12-21 | 2012-09-16 | Ibm | Buffer management scheme for a network processor |
US8504691B1 (en) | 2010-12-29 | 2013-08-06 | Amazon Technologies, Inc. | System and method for allocating resources for heterogeneous service requests |
US8918791B1 (en) * | 2011-03-10 | 2014-12-23 | Applied Micro Circuits Corporation | Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID |
US8863136B2 (en) | 2011-05-19 | 2014-10-14 | International Business Machines Corporation | Lock control in multiple processor systems |
JP5885481B2 (ja) | 2011-12-01 | 2016-03-15 | キヤノン株式会社 | 情報処理装置、情報処理方法、及びプログラム |
US9219765B2 (en) * | 2012-05-10 | 2015-12-22 | International Business Machines Corporation | End user QoS selection |
US8930584B2 (en) | 2012-08-09 | 2015-01-06 | Oracle International Corporation | System and method for providing a linearizable request manager |
-
2013
- 2013-02-28 US US13/781,493 patent/US9110715B2/en active Active
- 2013-10-28 WO PCT/US2013/067108 patent/WO2014133595A1/en active Application Filing
- 2013-10-28 KR KR1020157014571A patent/KR101997816B1/ko active IP Right Grant
- 2013-10-28 CN CN201380060771.3A patent/CN104798045B/zh active Active
- 2013-10-28 JP JP2015560169A patent/JP6505610B2/ja active Active
- 2013-10-28 EP EP13786862.6A patent/EP2962200B1/en active Active
-
2019
- 2019-01-08 JP JP2019001317A patent/JP6682668B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201229897A (en) * | 2010-12-16 | 2012-07-16 | Intel Corp | A fast and linearizable concurrent priority queue via dynamic aggregation of operations |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20150122119A (ko) | 2015-10-30 |
JP6682668B2 (ja) | 2020-04-15 |
WO2014133595A1 (en) | 2014-09-04 |
JP2016508651A (ja) | 2016-03-22 |
US9110715B2 (en) | 2015-08-18 |
US20140245313A1 (en) | 2014-08-28 |
EP2962200A1 (en) | 2016-01-06 |
CN104798045A (zh) | 2015-07-22 |
EP2962200B1 (en) | 2020-07-15 |
JP6505610B2 (ja) | 2019-04-24 |
JP2019071108A (ja) | 2019-05-09 |
KR101997816B1 (ko) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104798045B (zh) | 用于在并行优先级队列中使用定序器的系统和方法 | |
US9405574B2 (en) | System and method for transmitting complex structures based on a shared memory queue | |
US8930584B2 (en) | System and method for providing a linearizable request manager | |
US9996403B2 (en) | System and method for providing message queues for multinode applications in a middleware machine environment | |
US9588733B2 (en) | System and method for supporting a lazy sorting priority queue in a computing environment | |
US10095562B2 (en) | System and method for transforming a queue from non-blocking to blocking | |
US10331500B2 (en) | Managing fairness for lock and unlock operations using operation prioritization | |
US20160156715A1 (en) | Optimal allocation of dynamically instantiated services among computation resources | |
EP3295293B1 (en) | Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging | |
US8127295B1 (en) | Scalable resource allocation | |
EP2951691B1 (en) | System and method for supporting work sharing muxing in a cluster | |
CN107203890A (zh) | 凭证数据发放方法、装置及系统 | |
CN104798044B (zh) | 用于在中间件机器环境中支持协同并发性的系统和方法 | |
CN115061779B (zh) | 一种用户态虚拟机的内核锁管理方法及装置 | |
CN116932210A (zh) | 任务执行方法、装置和存储介质及电子设备 | |
CN117539599A (zh) | 资源调度方法和装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |