CN104769553B - 用于支持集群中的工作共享复用的系统和方法 - Google Patents
用于支持集群中的工作共享复用的系统和方法 Download PDFInfo
- Publication number
- CN104769553B CN104769553B CN201380049818.6A CN201380049818A CN104769553B CN 104769553 B CN104769553 B CN 104769553B CN 201380049818 A CN201380049818 A CN 201380049818A CN 104769553 B CN104769553 B CN 104769553B
- Authority
- CN
- China
- Prior art keywords
- selector
- queue
- filec descriptor
- ready
- thread
- 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
-
- 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)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
系统和方法能够提供集群中的服务器之间的高效、低延时复用。一种这样的系统可包括一个或多个高性能计算系统的集群,每个计算系统包括一个或多个处理器和高性能存储器。所述集群通过无限带宽(InfiniBand)网络进行通信。所述系统还可包括在集群上运行的中间件环境,所述中间件环境包括一个或多个应用服务器实例。所述系统可包括一个或多个选择器,其中每个所述选择器包含读取就绪文件描述符的队列。此外,所述系统可包括共享队列,其中每个所述选择器中的读取就绪文件描述符可被注入共享队列中。另外,多个复用器线程操作为从所述共享队列接受工作。
Description
版权声明
本专利文献中的一部分公开内容包含受版权保护的素材。版权所有人不反对任何人影印再现专利文献或专利公开,因为专利文献或专利公开出现在美国专利商标局的专利文件或档案中,不过保留其它方面的所有版权。
技术领域
本发明一般涉及计算机系统和诸如中间件之类的软件,尤其涉及用于集群中的服务器之间的复用的系统和方法。
背景技术
在任何大型机构内,经过多年之后,所述机构常常发现自己具有散乱的IT基础结构,所述IT基础结构包含各种不同的计算机硬件、操作系统和应用软件。尽管这种基础结构的各个单独组件本身设计得很好并且维护得很好,不过当试图互连这样的组件,或者共享公共资源时,这常常是一项困难的管理任务。近年来,机构已将其注意力转向可提供共享基础结构的基础的诸如虚拟化和集中存储之类的技术,甚至最近转向云计算。然而,几乎不存在特别适合于在这种环境中使用的一体化平台。这些是本发明的实施例意图致力于的大致领域。
发明内容
提供用于提供集群中的服务器之间的高效、低延时复用的系统和方法。一种这样的系统可包括一个或多个高性能计算系统的集群,每个计算系统包括一个或多个处理器和高性能存储器。所述集群通过无限带宽网络进行通信。所述系统还可包括在所述集群上运行的中间件环境,所述中间件环境包括一个或多个应用服务器实例。所述系统可包括一个或多个选择器,其中每个所述选择器包含读取就绪文件描述符的队列。此外,所述系统可包括共享队列,其中每个所述选择器中的读取就绪文件描述符可被注入所述共享队列中。另外,多个复用器线程运行,以从所述共享队列接受工作。
当结合附图阅读时,根据各个实施例的以下详细说明,本发明的其它目的和优点对本领域的技术人员来说将变得明显。
附图说明
图1表示按照本发明的实施例的中间件机器环境100的例示。
图2表示按照本发明的实施例的中间件机器平台或环境的另一个例示。
图3表示按照本发明的各个实施例的支持简单复用的例示。
图4表示按照本发明的各个实施例的支持并行复用的例示。
图5表示按照本发明的各个实施例的支持工作共享复用的例示。
图6表示按照本发明的各个实施例的支持工作共享复用的示例性伪码的例示。
图7表示按照本发明的各个实施例的支持工作共享复用的其它示例性伪码的例示。
图8图解说明按照本发明的实施例的支持工作共享复用的示例性流程图。
具体实施方式
下面说明能够支持集群中的工作共享复用的系统和方法。
图1表示按照本发明的实施例的中间件机器环境100的例示。如图1所示,每个中间件机器系统102包括几个中间件机器机架组件104,每个机架组件104包括高性能中间件机器硬件节点106(例如,64位处理器,高性能大容量存储器,和冗余无限带宽和以太网网络体系),和中间件机器软件环境108的组合。其结果是在数分钟内而非数天或数月内就能够被提供并且可应请求进行缩放的完整的应用服务器环境。按照实施例,每个中间件机器系统可被部署成全机架、半机架或四分之一机架或者机架组件的其它结构,同样利用无限带宽,可将几个中间件机器系统耦接在一起,以创建更大的环境。每个中间件机器软件环境可以备有几个应用服务器或其它软件实例,例如如图1中所示,应用服务器实例109可包含虚拟机116、操作系统120、虚拟化层124和应用服务器层128(例如,WebLogic,包括小服务程序132、EJB 134和Gridlink 136容器);而另一个应用服务器实例110可包含虚拟机118、操作系统122、虚拟化层126和数据网格层140(例如,Coherence,包括活动高速缓存142)。通过利用中间件机器集成组件150,比如ExaLogic集成包,每个实例可以相互通信,以及与其中间件机器硬件节点和其它节点通信,中间件机器集成组件150本身提供几种优化特征,比如对无限带宽和其他特征的支持,如下进一步详细说明。
图2表示按照本发明的实施例的中间件机器平台或环境的另一个例示。如图2中所示,每个应用服务器实例可充当中间件机器环境内的发送器和/或接收器160。每个应用服务器实例还与允许应用服务器通过无限带宽网络164相互通信的复用器162、163关联。在图2中所示的例子中,应用服务器实例可包括内核空间165、用户空间167和应用服务器(例如,WebLogic空间)166,所述应用服务器166又可与套接字直接协议168、JVM(例如,JRockit/Hotspot层)170、WLS核心172、小服务程序容器174和JSP编译器176关联。按照其它例子,可以包括中间件类型的软件的其它组合。按照各个实施例,机器集成组件可以提供诸如零缓存拷贝、分散/集中IO、T3连接、惰性反序列化和GridLink数据源之类的特征,以便为共享基础结构提供基础,以及改善共享基础结构内的性能。
简单复用
图3表示支持中间件机器环境中的简单复用的例示。如图3中所示,由中间件机器环境300中的操作系统(OS)保持的文件描述符高速缓存或者说FD高速缓存301可包含一个或多个读取就绪文件描述符,比如套接字(用×标记)。这里,在OS中,扫描大型高速缓存和/或维持对大型高速缓存的并发存取效率低下。
轮询设备,比如可通过选择器接口而暴露出来的选择器302,可包括诸如套接字(列表中表示为圆点)的读取就绪文件描述符的队列。一个或多个复用器线程305a-305c可利用选择器302来轮询FD高速缓存301。线程305a-305c可能例如在发出Selector.select()函数调用的时候被阻塞在选择器302处,等待对于FD高速缓存301的扫描结束。随后,线程305a-305c可将读取就绪文件描述符拷贝到选择器列表302中。
每个复用器线程305a-305c可保持线程本地列表303a-303c。线程本地列表303a-303c包括可被线程305a-305c处理的读取就绪套接字(列表中表示为圆点)的列表。由于列表303a-303c是本地线程,因此即使当其它线程空闲时,其它线程也不能帮助处理该列表。
如图3中所示,线程本地列表303a-303c具有数目不同的圆点,这表示不同量的工作被移交给各个复用器线程。例如,复用器线程305b可能需要处理较长的读取就绪套接字的列表,而复用器线程305c却空闲。
请求管理器304可用于处理来自中间件机器环境300中的不同服务器的一个或多个请求。请求管理器304是具有多个队列的组件,复用器线程305a-305c准备的请求可被加入所述队列中。这些队列可以是先入先出(FIFO)队列,或者优先队列。另外,可以对请求管理器304中的各个队列实施对于线程计数的限制。
如图3中所示,对于多个复用器线程305a-305c,仅仅提供了一个选择器302。例如,当复用器线程305b获得读取就绪套接字时,它进行的工作都在它自己的线程本地列表303b中。同时,其它复用器线程305a和305b可等待进入Selector.select()。因此,复用器的性能受损,因为读取就绪套接字是按照单线程模型来处理的。
此外,一旦复用器线程305b从Selector.select()返回,另一个线程,例如305c可再次进入Selector.select()。在这种情况下,由于选择器302刚被腾空,因此它可能阻塞复用器线程305c。因此,存在多数复用器线程在等待,而一个复用器线程繁忙的情形。
因此,在该例子中,如图3中所示,不同的复用器线程305a-305c在访问共享选择器302和FD高速缓存301方面存在竞争。此外,不共享读取就绪套接字会导致其中空闲线程可用却不能开始处理读取就绪套接字的线程饥饿。
在2011年5月17日提交的名称为“SYSTEM AND METHOD FOR PARALLEL MUXINGBETWEEN SERVERS IN A CLUSTER”的美国专利申请No.13/109,871(代理人卷号No.ORACL-05121US0)中,公开了关于简单复用的附加信息,该专利申请通过引用包含于此。
并行复用
图4表示支持中间件机器环境中的并行复用的例示。如图4中所示,中间件机器环境400可包括多个选择器402a-c,每个选择器可用于轮询一个或多个文件描述符高速缓存或者说FD高速缓存401a-c。另外,在中间件机器环境400中,可存在完全相同数目的工人线程或者复用器线程405a-c,每个复用器线程405a-c维持线程本地列表403a-c。
通过利用并行复用,每个选择器可仅被一个复用器线程访问。例如,复用器线程405a利用选择器402a,而复用器线程405b利用选择器402b,以及复用器线程405c利用选择器402c。工人线程405a-c单线程地轮询选择器402a-c,并单线程地处理读取就绪套接字。单个选择器402a-c的使用允许每个选择器的到达率降低,并从而降低对系统资源的竞争。
通过利用并行复用,可以解决由单一选择器引起的负荷的不均性。此外,可能仍然存在在不同的选择器和复用器线程之间实现工作的均匀分布的需求。
从而,在图4中所示的例子中,能够降低复用器线程405a-c访问选择器402a-c和FD高速缓存401a-c的竞争。此外,对于相似的多组FD来说,通过利用几个较小的高速缓存401a-c来代替如图3中所示的一个较大的高速缓存301,能够改善FD高速缓存扫描效率。另外,由于复用器线程405a-c未共享读取就绪套接字,如图4中所示的设计仍然遭受线程饥饿。
在2011年5月17日提交的名称为“SYSTEM AND METHOD FOR PARALLEL MUXINGBETWEEN SERVERS IN A CLUSTER”的美国专利申请No.13/109,871(代理人卷号No.ORACL-05121US0)中,公开了关于并行复用的附加信息,该专利申请通过引用包含于此。
工作共享复用
图5表示按照本发明的各个实施例的支持工作共享复用的例示。如图5中所示,中间件机器环境500包括被配置在缓冲器中的共享队列,例如比如一个或多个选择器502a-c可被注入其中的工作的并发队列506。共享队列506可包含读取就绪套接字和/或相关选择器502a-c。
通过将选择器502a-c的阻塞队列接合成一个共享队列506,队列处理模型避免需要各个工人线程505a-e顺序处理所有的读取就绪套接字。工人线程505a-e可被启动,以允许来自各个选择器502a-c的读取就绪套接字的并发处理。因此,共享队列506能够改善由OS保持的FD高速缓存501a-c的并发性,并且队列处理模型提供减小的端到端延迟。
利用这种队列处理模型,可在多个工人线程或者复用器线程505a-c之间共享从各个选择器502a-c返回的一个或多个读取就绪套接字和选择器502a-c本身。如图5中所示,系统可包括一个或多个复用器线程505a-c,每个复用器线程505a-c可从工作的共享队列506获得一个读取就绪套接字。因此,每个线程本地列表503a-503c长度可仅为1。另外,一个或多个复用器线程505d-e可利用选择器502a-b来轮询FD高速缓存501a-b。
只要共享队列506不为空,复用器线程505a-e就不会被暂停,以便对复用器实现高吞吐量,因为队列处理模型能够在其它线程可能具有多于一个要处理的套接字的时候避免使一些线程阻塞在Selector.select中。因此,这种队列处理模型能够减小不然会被浪费在线程本地列表中的请求的队列等待时间。
按照本发明的各个实施例,复用器线程的数目(MUXERS)可以小于或等于选择器的数目(SELECTORS),或者1<=SELECTORS<=MUXERS。在每个选择器中,复用器线程都有可能被阻塞在Selector.select()中。因此,阻塞在Selector.select()中的复用器线程数目可能多达选择器的数目。一旦复用器线程带着读取就绪套接字的列表从选择器返回,一个或多个线程可以准备从共享队列506接受工作,而一些复用器线程此时可能正忙于读取套接字。准备读入读取就绪套接字的线程的数目最高可以达到(复用器的数目-选择器的数目)(MUXERS-SELECTORS),MUXERS-SELECTORS表示复用器的数目和选择器的数目之差。
当复用器线程505a-e空闲时,工人线程要么在试图从选择器502a-c获得读取就绪套接字时被阻塞,要么在试图从共享阻塞队列506获得读取就绪套接字时被阻塞。当一个或多个读取就绪套接字变得可用时,读取就绪套接字及其选择器502a-c可按照保证整个系统的进展的顺序结束于共享阻塞队列506。
按照本发明的各个实施例,从选择器返回的每个工人线程505d-e可保留一个最后的读取就绪套接字。从共享队列506解除阻塞的每个工人线程505a-c可具有读取就绪套接字。工人线程505a-c可连续处理这些套接字(例如,读取请求),并随后返回以从共享队列506获得更多的读取就绪套接字。最终,可从共享队列506中移除某个选择器502a-c,这种情况下,工人线程505a-c可继续进行以从该选择器502a-c获得更多的读取就绪套接字。
由于处理读取就绪套接字的顺序基于选择器502a-c,因此利用这种队列处理模型来让共享队列506中具有更多读取就绪套接字的机会更大。结果,可以无阻塞地从选择器502a-c获得读取就绪套接字,从而对于网络密集型工作负荷,能够实现显著的响应时间缩减。
此外,共享方案使工人线程505a-e能够连续地从选择器502a-c获得读取就绪套接字,并处理它们,而不需要被暂停或者进行上下文切换。从而,这种队列处理模型能够实现很大程度的并发性。
图6表示按照本发明的各个实施例的支持工作共享复用的示例性伪码的例示。如图6中所示,可以定义Muxer类(行1-31)。可以建立工作队列,并填充以多个Selectors(行4)。此外,当Muxer运行时,无限循环(行13-30)可用于处理套接字。对于无限循环中的每次迭代,Muxer类可确定从ArrayList获得的条目是Selector还是SelectionKey(行18)。在所述条目是Selector的情况下,Muxer可尝试将Selector中的内容推送到工作队列(行18-25)。否则,Muxer可利用SelectionKey来建立readReadyChannel(行26-29)。
图7表示按照本发明的各个实施例的支持工作共享复用的另一示例性伪码的例示。如图7中所示,可以定义不同Muxer类为更渴望共享未完成的工作(行1-31),例如,如果ArrayList不为空,那么Muxer类可利用jobs.offerAll函数调用来将其内容推送到作业队列(行17-21)。因此,在无限循环中,Muxer类设法在每次迭代倒空非空的工作列表。另外,Muxer类可按照与线程本地列表类似的方式来避免对队列的并发访问。
此外,为了使尽可能多的复用器线程忙于读取套接字而不是在Selector中等待,Muxer类设法尽可能晚地将选择器加入队列中。原因在于如果从最后一次轮询起的时间越长,那么工人线程能够立即返回的可能性更大,从而阻塞更少。否则,如果工人线程过快地进入Selector.select,那么调用会更可能使该工人线程被阻塞,因为选择器列表仅仅在片刻之前才被清空,而文件描述符高速缓存可能没有足够的时间来再次被填充。
图8图解说明按照本发明的实施例的支持工作共享复用的示例性流程图。如图8中所示,在步骤801,系统可提供一个或多个选择器,其中每个所述选择器包含读取就绪文件描述符的队列。随后,在步骤802,系统可提供共享队列,其中每个所述选择器被注入共享队列中。此外,在步骤803,系统允许在一个或多个微处理器上运行的多个复用器线程从所述共享队列接受工作。
按照本发明的各个实施例,基于许多选择器之中的一个选择器的高效并发选择,能够实现系统的高效率,这允许从多个小的FD高速缓存而不是一个大的高速缓存中进行并发选择。此外,使用读取就绪套接字的非阻塞共享能够消除线程饥饿。有利的是将非阻塞批量增加操作用于具有固定存储器覆盖区的并发队列(例如,如在图7的行20中所示的jobs.offerAll(...))。另外,通过确保在选择套接字之后再共享选择器的顺序(例如,结合选择器,增加读取就绪套接字的顺序),系统能够保证读取就绪套接字的即时处理,并且能够改善整个系统的其它进展性质。
因此,通过利用工作共享复用,系统能够保证高效的队列处理,允许各种易变状态的共享,并且能够消除读取就绪套接字的并发处理期间的线程饥饿。
按照一些实施例,提供实现上述方法之一的计算机程序。按照本发明的实施例,所述计算机程序使系统进行以下步骤,包括:提供一个或多个选择器,其中每个所述选择器包含读取就绪文件描述符的队列;提供共享队列,其中每个所述选择器被注入共享队列中;和允许多个复用器线程从所述共享队列接受工作。
按照本发明的一个方面,提供一种支持集群中的工作共享复用的系统,所述系统包括一个或多个选择器、配置成共享队列的缓冲器和一个或多个微处理器。每个选择器包含读取就绪文件描述符的队列。所述缓冲器被配置成共享队列。每个选择器被注入所述共享队列中。所述一个或多个微处理器运行操作为从所述共享队列接受工作的多个复用器线程。
按照本发明的另一个方面,提供一种支持集群中的工作共享复用的系统,所述系统包括:提供一个或多个选择器的装置,提供共享队列的装置,和允许多个复用器线程从所述共享队列接受工作的装置。每个选择器包含读取就绪文件描述符的队列。每个选择器被注入共享队列中。
通过利用按照本公开的教导编程的一个或多个常规的通用或专用数字计算机、计算装置、机器、或微处理器,包括一个或多个处理器、存储器和/或计算机可读存储介质,可以便利地实现本发明。根据本公开的教导,有经验的程序员能够容易地准备适当的软件编码,这对软件领域的技术人员来说将是显而易见的。
在一些实施例中,本发明包括计算机程序产品,所述计算机程序产品是其中存储有可用于对计算机编程以执行本发明的任意处理的指令的存储介质或者计算机可读介质。所述存储介质可包括(但不限于)任意种类的盘(包括软盘、光盘、DVD、CD-ROM、微驱动器和磁光盘)、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存装置、磁卡或光卡、纳米系统(包括分子存储器IC)、或者适合于存储指令和/或数据的任何种类的介质或装置。
出于描述和说明的目的,提供了本发明的上述说明。上述说明并不意在是详尽的,也不意在将本发明局限于公开的具体形式。对本领域的技术人员来说,许多修改和变化是明显的。所述修改和变化包括公开特征的任何有关组合。选择和说明实施例是为了更好地说明本发明的原理及其实际应用,从而使本领域的其他技术人员能够理解本发明的各个实施例和适合于预期的特定应用的各种修改。本发明的范围由以下权利要求及其等同物限定。
Claims (29)
1.一种用于支持集群中的工作共享复用的系统,所述系统包括:
一个或多个微处理器;
多个文件描述符高速缓存,所述多个文件描述符高速缓存各自包含一个或多个读取就绪文件描述符;
多个选择器以及多个选择器队列,其中,所述多个选择器中的每个选择器与所述多个选择器队列中的不同选择器队列相关联,并且其中,所述多个选择器中的每个选择器轮询所述多个文件描述符高速缓存中的相关联的文件描述符高速缓存,并且将读取就绪文件描述符从所述相关联的文件描述符高速缓存写到所述多个选择器队列中的相关联的选择器队列;
耦接到所述多个选择器的单个共享队列,其中,所述多个选择器队列中的每个选择器队列将来自所述多个选择器队列中的相关联的选择器队列的文件描述符注入所述单个共享队列中,使得由所述多个选择器从所述多个文件描述符高速缓存轮询得到的全部读取就绪文件描述符被提供给所述单个共享队列;和
在所述一个或多个微处理器上运行的多个工人线程,所述多个工人线程操作以处理被提供给所述单个共享队列的所述读取就绪文件描述符。
2.按照权利要求1所述的系统,其中,所述单个共享队列包括读取就绪文件描述符和所述多个选择器中的相关选择器。
3.按照权利要求2所述的系统,其中:
与所述选择器相关联的线程在它等待对相关联的文件描述符高速缓存的扫描结束时被阻塞。
4.按照权利要求2或3所述的系统,其中:
与所述选择器相关联的线程操作为将所述一个或多个读取就绪文件描述符拷贝到所述一个或多个选择器中。
5.按照权利要求2或3所述的系统,其中:
每个所述工人线程保持它正在处理的读取就绪套接字的线程本地列表。
6.按照权利要求2或3所述的系统,还包括:
能够处理来自集群中的不同服务器的一个或多个请求的请求管理器。
7.按照权利要求6所述的系统,其中:
所述请求管理器包含多个队列,由所述多个工人线程准备的所述一个或多个请求被加入所述多个队列中。
8.按照权利要求2或3所述的系统,其中:
存在比所述选择器多的所述工人线程。
9.按照权利要求2或3所述的系统,其中:
所述工人线程操作为连续地从所述共享队列获得读取就绪套接字,并处理获得的读取就绪套接字,而不需要被暂停或者执行上下文切换。
10.按照权利要求2或3所述的系统,其中:
从所述选择器返回的工人线程可保留一个最后的读取就绪套接字。
11.一种用于支持集群中的工作共享复用的方法,包括:
提供多个文件描述符高速缓存,所述多个文件描述符高速缓存各自包含一个或多个读取就绪文件描述符;
提供多个选择器以及多个选择器队列,其中,所述多个选择器中的每个选择器与所述多个文件描述符高速缓存中的相关联的文件描述符高速缓存相关联,并且与所述多个选择器队列中的不同选择器队列相关联;
提供单个共享队列,所述单个共享队列耦接到所述多个选择器;
使用所述多个选择器来轮询所述多个文件描述符高速缓存,其中,每个选择器轮询相关联的文件描述符高速缓存;
将读取就绪文件描述符从所述多个选择器中的每个选择器写到与所述每个选择器相关联的选择器队列;
将来自所述多个选择器队列中的全部选择器队列的读取就绪文件描述符注入到所述单个共享队列中,使得由所述多个选择器从所述多个文件描述符高速缓存轮询得到的全部读取就绪文件描述符被提供给所述单个共享队列;和
使用多个工人线程来处理被提供给所述单个共享队列的所述读取就绪文件描述符。
12.按照权利要求11所述的方法,其中,所述单个共享队列包括读取就绪文件描述符和所述多个选择器中的相关选择器。
13.按照权利要求12所述的方法,还包括:
将与每个选择器相关联的线程配置成在它等待对相关联的文件描述符高速缓存的扫描结束时被阻塞。
14.按照权利要求12或13所述的方法,还包括:
将与每个选择器相关联的线程配置成将所述一个或多个读取就绪文件描述符拷贝到所述一个或多个选择器中。
15.按照权利要求12或13所述的方法,还包括:
将每个所述工人线程配置成保持它正在处理的读取就绪套接字的线程本地列表。
16.按照权利要求12或13所述的方法,还包括:
提供能够处理来自集群中的不同服务器的一个或多个请求的请求管理器。
17.按照权利要求16所述的方法,还包括:
将所述请求管理器配置成包含多个队列,由所述多个工人线程准备的所述一个或多个请求被加入所述多个队列中。
18.按照权利要求12或13所述的方法,还包括:
提供多于所述选择器的所述工人线程。
19.按照权利要求12或13所述的方法,还包括:
将所述工人线程中的一个或多个配置成连续地从所述选择器获得读取就绪套接字,并处理获得的读取就绪套接字,而不需要被暂停或者执行上下文切换。
20.一种用于支持集群中的工作共享复用的系统,所述系统包括:
多个文件描述符高速缓存,所述多个文件描述符高速缓存各自包含一个或多个读取就绪文件描述符;
多个选择器以及多个选择器队列,其中,所述多个选择器中的每个选择器与所述多个选择器队列中的不同选择器队列相关联,并且其中,所述多个选择器中的每个选择器轮询所述多个文件描述符高速缓存中的相关联的文件描述符高速缓存,并且将读取就绪文件描述符从所述相关联的文件描述符高速缓存写到所述多个选择器队列中的相关联的选择器队列;
配置成单个共享队列的缓冲器,所述单个共享队列耦接到所述多个选择器,其中,所述多个选择器队列中的每个选择器队列将来自所述多个选择器队列中的相关联的选择器队列的文件描述符注入所述单个共享队列中,使得由所述多个选择器从所述多个文件描述符高速缓存轮询得到的全部读取就绪文件描述符被提供给所述单个共享队列;和
一个或多个微处理器,所述一个或多个微处理器运行多个工人线程,所述多个工人线程操作以处理被提供给所述单个共享队列的所述读取就绪文件描述符。
21.一种用于支持集群中的工作共享复用的系统,所述系统包括:
用于提供多个文件描述符高速缓存的装置,所述多个文件描述符高速缓存各自包含一个或多个读取就绪文件描述符;
用于提供多个选择器以及多个选择器队列的装置,其中,所述多个选择器中的每个选择器与所述多个文件描述符高速缓存中的相关联的文件描述符高速缓存相关联,并且与所述多个选择器队列中的不同选择器队列相关联;
用于提供单个共享队列的装置,所述单个共享队列耦接到所述多个选择器;
用于使用所述多个选择器来轮询所述多个文件描述符高速缓存的装置,其中,每个选择器轮询相关联的文件描述符高速缓存;
用于将读取就绪文件描述符从所述多个选择器中的每个选择器写到与所述每个选择器相关联的选择器队列的装置;
用于将来自所述多个选择器队列中的全部选择器队列的读取就绪文件描述符注入到所述单个共享队列中的装置,使得由所述多个选择器从所述多个文件描述符高速缓存轮询得到的全部读取就绪文件描述符被提供给所述单个共享队列;和
用于使用多个工人线程来处理被提供给所述单个共享队列的所述读取就绪文件描述符的装置。
22.按照权利要求21所述的系统,其中,所述单个共享队列包括读取就绪文件描述符和所述多个选择器中的相关选择器。
23.按照权利要求22所述的系统,还包括:
用于将与每个选择器相关联的线程配置成在它等待对相关联的文件描述符高速缓存的扫描结束时被阻塞的装置。
24.按照权利要求22或23所述的系统,还包括:
用于将与每个选择器相关联的线程配置成将所述一个或多个读取就绪文件描述符拷贝到所述一个或多个选择器中的装置。
25.按照权利要求22或23所述的系统,还包括:
用于将每个所述工人线程配置成保持它正在处理的读取就绪套接字的线程本地列表的装置。
26.按照权利要求22或23所述的系统,还包括:
用于提供能够处理来自集群中的不同服务器的一个或多个请求的请求管理器的装置。
27.按照权利要求26所述的系统,还包括:
用于将所述请求管理器配置成包含多个队列的装置,由所述多个工人线程准备的所述一个或多个请求被加入所述多个队列中。
28.按照权利要求22或23所述的系统,还包括:
用于提供多于所述选择器的所述工人线程的装置。
29.按照权利要求22或23所述的系统,还包括:
用于将所述工人线程中的一个或多个配置成连续地从所述选择器获得读取就绪套接字,并处理获得的读取就绪套接字,而不需要被暂停或者执行上下文切换的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/756,207 US9086909B2 (en) | 2011-05-17 | 2013-01-31 | System and method for supporting work sharing muxing in a cluster |
US13/756,207 | 2013-01-31 | ||
PCT/US2013/067286 WO2014120304A1 (en) | 2013-01-31 | 2013-10-29 | System and method for supporting work sharing muxing in a cluster |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104769553A CN104769553A (zh) | 2015-07-08 |
CN104769553B true CN104769553B (zh) | 2018-06-12 |
Family
ID=49582809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380049818.6A Active CN104769553B (zh) | 2013-01-31 | 2013-10-29 | 用于支持集群中的工作共享复用的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9086909B2 (zh) |
EP (1) | EP2951691B1 (zh) |
JP (1) | JP6283376B2 (zh) |
CN (1) | CN104769553B (zh) |
WO (1) | WO2014120304A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681321A (zh) * | 2016-02-24 | 2016-06-15 | 公安部第一研究所 | 一种数据处理方法及装置 |
CN108011909B (zh) * | 2016-10-28 | 2020-09-01 | 北京市商汤科技开发有限公司 | 通信方法和系统、电子设备和计算机集群 |
CN107741883B (zh) * | 2017-09-29 | 2018-10-23 | 武汉斗鱼网络科技有限公司 | 一种避免线程阻塞的方法、装置及计算机设备 |
CN109361572A (zh) * | 2018-12-10 | 2019-02-19 | 浪潮(北京)电子信息产业有限公司 | 一种主机集群管理方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192389B1 (en) * | 1997-03-28 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for transferring file descriptors in a multiprocess, multithreaded client/server system |
CN101681303A (zh) * | 2007-06-19 | 2010-03-24 | 富士通株式会社 | 高速缓存控制装置以及控制方法 |
CN102255794A (zh) * | 2010-05-17 | 2011-11-23 | 塔塔咨询服务有限公司 | 远程消息收发吞吐量优化和等待时间缩短用系统和方法 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333274A (en) | 1991-10-15 | 1994-07-26 | International Business Machines Corp. | Error detection and recovery in a DMA controller |
US6427161B1 (en) * | 1998-06-12 | 2002-07-30 | International Business Machines Corporation | Thread scheduling techniques for multithreaded servers |
US6571274B1 (en) | 1998-11-05 | 2003-05-27 | Beas Systems, Inc. | Clustered enterprise Java™ in a secure distributed processing system |
SE9902373D0 (sv) * | 1998-11-16 | 1999-06-22 | Ericsson Telefon Ab L M | A processing system and method |
US20020004856A1 (en) | 2000-03-29 | 2002-01-10 | Krishna Sudarshan | System and method of generating and using proxy beans |
US20030120822A1 (en) | 2001-04-19 | 2003-06-26 | Langrind Nicholas A. | Isolated control plane addressing |
US6886041B2 (en) * | 2001-10-05 | 2005-04-26 | Bea Systems, Inc. | System for application server messaging with multiple dispatch pools |
US20030110232A1 (en) | 2001-12-11 | 2003-06-12 | International Business Machines Corporation | Distributing messages between local queues representative of a common shared queue |
CA2415043A1 (en) * | 2002-12-23 | 2004-06-23 | Ibm Canada Limited - Ibm Canada Limitee | A communication multiplexor for use with a database system implemented on a data processing system |
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 |
US7043518B2 (en) | 2003-07-31 | 2006-05-09 | Cradle Technologies, Inc. | Method and system for performing parallel integer multiply accumulate operations on packed data |
US20050223109A1 (en) | 2003-08-27 | 2005-10-06 | Ascential Software Corporation | Data integration through a services oriented architecture |
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 |
WO2007014186A2 (en) | 2005-07-22 | 2007-02-01 | The Thomson Corporation | Systems, methods, and software for online courses |
US7394288B1 (en) | 2004-12-13 | 2008-07-01 | Massachusetts Institute Of Technology | Transferring data in a parallel processing environment |
US7562138B2 (en) | 2004-12-28 | 2009-07-14 | Sap | Shared memory based monitoring for application servers |
ATE373399T1 (de) | 2005-03-04 | 2007-09-15 | Alcatel Lucent | Vermittlung für integrierte telekommunikationssnetzwerke |
US8762547B2 (en) | 2005-04-29 | 2014-06-24 | Sap Ag | Shared memory implementations for session data within a multi-tiered enterprise network |
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 | データベース接続管理方法及び計算機システム |
US8131860B1 (en) | 2006-03-30 | 2012-03-06 | Emc Corporation | Serialization and deserialization |
US20070245005A1 (en) * | 2006-04-18 | 2007-10-18 | Banerjee Dwip N | Method and data processing system for managing a plurality of interfaces |
US8112525B2 (en) | 2006-05-16 | 2012-02-07 | Oracle International Corporation | Engine near cache for reducing latency in a telecommunications environment |
US7371014B2 (en) | 2006-08-21 | 2008-05-13 | Intel Corporation | Monolithic active optical cable assembly for data device applications and various connector types |
US9064010B2 (en) | 2006-12-13 | 2015-06-23 | Quickplay Media Inc. | Encoding and transcoding for mobile media |
US8640086B2 (en) | 2006-12-29 | 2014-01-28 | Sap Ag | Graphical user interface system and method for presenting objects |
US20090024764A1 (en) | 2007-07-18 | 2009-01-22 | International Business Machines Corporation | Tracking The Physical Location Of A Server In A Data Center |
US20090182642A1 (en) | 2008-01-14 | 2009-07-16 | Neelakantan Sundaresan | Methods and systems to recommend an item |
US10127059B2 (en) | 2008-05-02 | 2018-11-13 | Skytap | Multitenant hosted virtual machine infrastructure |
US9230002B2 (en) | 2009-01-30 | 2016-01-05 | Oracle International Corporation | High performant information sharing and replication for single-publisher and multiple-subscriber configuration |
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 |
US8811417B2 (en) * | 2009-11-15 | 2014-08-19 | Mellanox Technologies Ltd. | Cross-channel network operation offloading for collective operations |
US8543722B2 (en) | 2010-03-30 | 2013-09-24 | International Business Machines Corporation | Message passing with queues and channels |
US9185054B2 (en) | 2010-09-15 | 2015-11-10 | Oracle International Corporation | System and method for providing zero buffer copying in a middleware machine environment |
US8856460B2 (en) | 2010-09-15 | 2014-10-07 | Oracle International Corporation | System and method for zero buffer copying in a middleware environment |
US8938598B2 (en) | 2011-07-06 | 2015-01-20 | Nvidia Corporation | Facilitating simultaneous submission to a multi-producer queue by multiple threads with inner and outer pointers |
US9563480B2 (en) * | 2012-08-21 | 2017-02-07 | Rackspace Us, Inc. | Multi-level cloud computing system |
-
2013
- 2013-01-31 US US13/756,207 patent/US9086909B2/en active Active
- 2013-10-29 CN CN201380049818.6A patent/CN104769553B/zh active Active
- 2013-10-29 JP JP2015555995A patent/JP6283376B2/ja active Active
- 2013-10-29 EP EP13789928.2A patent/EP2951691B1/en active Active
- 2013-10-29 WO PCT/US2013/067286 patent/WO2014120304A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192389B1 (en) * | 1997-03-28 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for transferring file descriptors in a multiprocess, multithreaded client/server system |
CN101681303A (zh) * | 2007-06-19 | 2010-03-24 | 富士通株式会社 | 高速缓存控制装置以及控制方法 |
CN102255794A (zh) * | 2010-05-17 | 2011-11-23 | 塔塔咨询服务有限公司 | 远程消息收发吞吐量优化和等待时间缩短用系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
JP6283376B2 (ja) | 2018-02-21 |
EP2951691A1 (en) | 2015-12-09 |
EP2951691B1 (en) | 2018-08-08 |
US9086909B2 (en) | 2015-07-21 |
US20140215475A1 (en) | 2014-07-31 |
CN104769553A (zh) | 2015-07-08 |
JP2016509306A (ja) | 2016-03-24 |
WO2014120304A1 (en) | 2014-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dang et al. | Towards millions of communicating threads | |
JP6682668B2 (ja) | コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法 | |
US10095562B2 (en) | System and method for transforming a queue from non-blocking to blocking | |
CN104769553B (zh) | 用于支持集群中的工作共享复用的系统和方法 | |
Petrović et al. | Leveraging hardware message passing for efficient thread synchronization | |
US9672038B2 (en) | System and method for supporting a scalable concurrent queue in a distributed data grid | |
Karsten et al. | User-level threading: Have your cake and eat it too | |
Potluri et al. | Optimizing MPI one sided communication on multi-core infiniband clusters using shared memory backed windows | |
Chakraborty et al. | SHMEMPMI--Shared memory based PMI for improved performance and scalability | |
Turon et al. | Scalable join patterns | |
Karamcheti et al. | Runtime mechanisms for efficient dynamic multithreading | |
Denis | Scalability of the NewMadeleine communication library for large numbers of MPI point-to-point requests | |
Endo et al. | Parallelized software offloading of low-level communication with user-level threads | |
Voellmy et al. | Mio: A high-performance multicore io manager for ghc | |
Prell et al. | Go's Concurrency Constructs on the SCC | |
Klues | Os and runtime support for efficiently managing cores in parallel applications | |
JP2002530737A (ja) | イベントベースシステムの同時処理 | |
Dang et al. | Eliminating contention bottlenecks in multithreaded MPI | |
Christgau et al. | Design of MPI Passive Target Synchronization for a Non-Cache-Coherent Many-Core Processor | |
Expósito et al. | Design of scalable Java message-passing communications over InfiniBand | |
Ramos et al. | Design of scalable Java communication middleware for multi-core systems | |
JP6412888B2 (ja) | ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法 | |
Walulya et al. | Concurrent data structures in architectures with limited shared memory support | |
Dafir | An Empirical Evaluation of Map-Reduce with Remote Direct Memory Access | |
Shi et al. | DFlow: Efficient Dataflow-based Invocation Workflow Execution for Function-as-a-Service |
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 |