CN100383765C - 管理计算环境线程池方法及系统 - Google Patents
管理计算环境线程池方法及系统 Download PDFInfo
- Publication number
- CN100383765C CN100383765C CNB001309390A CN00130939A CN100383765C CN 100383765 C CN100383765 C CN 100383765C CN B001309390 A CNB001309390 A CN B001309390A CN 00130939 A CN00130939 A CN 00130939A CN 100383765 C CN100383765 C CN 100383765C
- Authority
- CN
- China
- Prior art keywords
- thread pool
- thread
- request
- client
- pond
- 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.)
- Expired - Fee Related
Links
Images
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/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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5013—Request control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Abstract
通过正确管理用于服务计算环境的请求的线程池能避免出现计算环境中的死锁情况。当计算环境的某个服务器接收了一个要处理的请求且该请求在等待计算环境的客户作出响应时,就动态更改该响应的那组合格的线程池。这种动态更改可让该响应由一个不同于服务该请求的线程池的某个线程池来服务,从而避免了死锁情况。
Description
技术领域
本发明一般论及计算环境的处理请求,特别是,论及保证线程池可用于处理这些请求以避免出现死锁情况。
背景技术
在各种计算环境中,请求者(例如,客户)请求将前一个请求者的资源控制权交出后才能满足它对该资源的请求。这样一种计算环境就是国际商业机器公司(IBM公司)提供的分布文件系统(DFS)。
DFS产品支持服务器信息块(SMB)客户,该产品例如由IBM的OS/390操作系统用来提供文件服务协议。DFS和特别是SMB(又叫因特网通用文件系统(CIFS)),可以让客户通过叫作机会锁(oplock)的一种锁定方式高速缓存数据。在文件打开SMB请求中请求机会锁,服务器根据其他客户是否同时让该文件打开而授与机会锁。如果某客户有机会锁,那么该客户可以高速缓存文件数据和/或该文件的字节范围锁请求,并能执行先读后写优化。
当另一个客户企图打开该文件时或当另一个客户请求执行可能更改该文件的操作,诸如重新命名或删除时,上述服务器就破坏机会锁。在这些情况下,服务器向上述客户发送一个回叫(callback)(叫作机会锁破坏)告诉上述客户:它丢失了其机会锁。上述客户通过锁定X的SMB(locking X SMB)用文件关闭SMB或机会锁破坏通知来响应之。然而,如果该客户有脏的数据或高速缓存的字节范围锁,则可以刷新上述数据并获得字节范围锁然后才关闭上述文件或通过锁定X的SMB送出破坏通知。让强迫上述服务器破坏其他客户的机会锁的客户请求等待来自保有机会锁的原客户的机会锁通知或文件关闭。
由于任何客户请求都可能等待来自一个或多个客户的回叫和响应,因此必须有适于处理保有该机会锁的客户的回叫响应的处理线程,否则会发生死锁。一个线程池(不管其大小如何)不能解决此问题。例如,假定客户A当前有对资源X(例如,文件)一种保有权(例如,机会锁或令牌)且正在更新资源X。然后,客户B请求该资源。即便客户A还没有更新资源X,服务器也破坏资源X的机会锁。最终,客户A对回叫发送响应;可是,线程池中可能没有能处理该响应的线程,因为所有的线程已经都在对正等待客户A的回叫响应的客户请求进行处理。
为了试图避免出现上面的死锁情况,至少采用过两种办法。一种叫单一池办法。单一池办法是,当某线程要等待机会锁响应时,不是锁定该线程而是使该线程可用于处理其他的请求。然后,将正在进行的操作状态存起来并使该线程适于处理另一个请求,包括机会锁破坏响应。因此,利用这种方法,必须维护好每个操作的状态。再者,要使该线程再次可用于处理,请求在发现需要机会锁破坏的位置被调用的每个程序,必须准备接受来自其调用者的一个特殊的返回码,看看是否该操作已完成或由于出现机会锁破坏响应而只是处于保有中,而每个程序都必须返回到它的调用者那里以便瓦解线程上的程序堆栈以作它用。
这种办法增加了处理各个SMBs代码的复杂性,也增加了已升高的通路的长度,因为该通路中的许多程序都得更新状态块,还要在被调用程序返回时进行检查,以确定该请求被处理了还是在排队等候机会锁破坏响应。因此认为此法是昂贵的且使系统性能下降。
另一种是双重池办法。此法用主要线程池处置客户的任何请求。而次要线程池只处置不可能阻碍等待获得保有某个资源的请求。因此,次要池处置保证不等待资源的请求,诸如存储返回数据或释放资源等的请求。对这种办法,客户在请求上指出它是否符合次要池的条件。因此,客户软件的责任是提供一个指示,表示该服务器要用什么样的线程池并在该请求本身中提供该指示。
双重线程池方案避免了死锁情况,执行起来又不贵或不会出现单一池方案的性能下降现象。可是,双重线程池办法的问题是请求客户软件对各个请求都要示出哪些线程池符合该服务器的使用条件。因此,需要特殊的客户软件,而这又会导致客户额外的管理费用。
基于前述,还需要一种防死锁的办法,它要比以前的办法更有效、更简单、更便宜,且不需要客户的额外或特殊软件。还需要一种能动态分配线程池的办法。
发明内容
通过提供管理计算环境线程池的方法克服了以前技术的缺点并提供了额外的优点。在一个实施方案中,该方法包括从计算环境的第一请求者接收待处理的请求,其中该请求等待着来自计算环境的第二请求者的响应,且其中该响应要由选自由一个或多个合格的线程池组成的线程池组中的一个线程池来服务;该方法还包括动态地更改由一个或多个合格的线程池构成的这组线程池以提供更改过的、由一个或多个合格的线程池构成的一组线程池,其中更改过的线程池组的一个线程池要服务该响应,以避免该请求等待该响应而发生死锁;其中,所述动态更改包含设置一个池掩码,该池掩码用以指示要服务所述响应的所述更改过的线程池组的所述合格的线程池的池掩码。
在一个举例中,当确定该请求正在等待响应时,就开始动态更改
在另一个举例中,第一请求者和第二请求者是同一个请求者。而在再一个举例中,第一请求者和第二请求者是不同的请求者。
本发明的进一步情况是,该响应向该线程池的某个线程发出。此外,该方法包括确定该线程池是否适合于该发出的响应,而当该线程池不适合时,将该响应重发到另一个线程池上。
在再一个实施方案中,此方法包括动态重新更改已更改过的线程池组以服务一个或多个其他的响应或一个或多个其他的请求。
本发明的再一个情况是,提供了一种管理计算环境中线程池的方法。该方法包括,例如,动态确定要用多个线程池的哪个线程池来处理请求;并用该线程池的某个线程来处理该请求。
相应于上面概述方法的系统和计算机程序产品在这里也作了描述并作了申明。
本发明顺便还提供一种线程池管理功能,以保证避免当客户等待一个或多个其他客户或同一客户发出响应时出现死锁情况。这种功能不会使开发费用上涨或遭受单一池解决方案的性能下降,也不请求以前的双重池解决办法的特殊客户软件。
通过本发明的技术还实现了额外的特性和优点。这里还详细描述了该发明的其他实施方案和情况,它们被视为是该发明权利要求的组成部分。
附图说明
在本说明书结尾的权利要求中特别指出并明确申明了该发明的主题。从下面的详细说明以及附图中可以明显地看到该发明的前述和其他目的、特性和优点,其中:
图1描绘了包含并使用本发明的功能的计算环境的一个例子;
图2描绘了按照本发明的原理的图1的一个计算部件的各种元件的更详细实施方案;
图3a描绘了按照本发明的原理所用的一个主要池的一个举例;
图3b描绘了按照本发明的原理所用的次要池的一个实施方案;
图4a描绘了按照本发明的原理与建立客户会话有关的逻辑的一个实施方案;
图4b描绘了按照本发明的原理与接收请求有关的逻辑的一个实施方案;
图4c-4d描绘了按照本发明的原理与处理请求有关的逻辑的一个实施方案;
图5描绘了按照本发明的原理与客户相关的会话数据结构的一个实施方案;
图6描绘了按照本发明的原理所用的请求队列的一个实施方案;
图7描绘了按照本发明的原理与调度一个服务请求块有关的逻辑的一个实施方案;和
图8描绘了按照本发明的原理与动态更改用于处理请求的合格池集合有关的逻辑的一种实施方案。
具体实施方式
依照本发明的一个方面,动态确定和/或更改适合于服务未解决的请求的那组线程池。可以确定和/或更改这组线程池而不取消未解决的请求且不需要额外发送请求。举例说,该功能用来避免当,例如,一个客户的请求要到收到了一个或多个其他客户(或同一客户)的响应(例如,回答响应)才能处理时,出现死锁现象。这里所用的客户一词例如至少包括,本地客户、远地客户和/或本地用户。
参照图1,描述包含并使用本发明功能的计算环境的一个实施方案。计算环境100包括,例如,至少一个连接到一个或多个其他的计算部件104的计算部件102。在一个例子里,计算部件102是服务器而计算部件104是客户。每个部件包括,例如,一个或多个中央计算部件、存储器和一个或多个入/出设备,这是本领域的人众所周知的。
计算部件102基于,例如,IBM公司提供的企业系统体系结构(ESA)/390。ESA/390在IBM的出版物题为“企业系统体系结构/390的操作原理”中有描述(IBM出版物号为SA22-7201-04,1997.6),这里全文引用以作参考。基于ESA/390的计算部件一个例子是IBM公司提供的9672并行企业服务器。
一个或多个计算部件104是个人计算机。作为一个例子,计算部件104是一台执行Microsoft Windows的个人计算机,它在Intel PC体系结构上运行。
计算部件102通过标准连接,诸如任何种类的导线连接、令牌环或网络连接(仅举几例),与一个或多个计算部件104联接。通过一种或多种这些连接方式使用的一个通信协议是TCP/IP。
仅作为举例提供上述计算环境和/或计算部件。本发明可纳入并用于许多种计算部件、计算机、处理机、节点、系统、工作站和/或环境而不离开本发明的精神。例如,可将一个或多个部件基于Unix系统结构或可包括Intel PC结构。另外,这里描述的有些实施方案是就服务器和客户,尤其是就文件服务器和客户进行讨论的,这些实施方案仅是举例。其他类型的信息接收者和请求者、其他类型的服务器和其他类型的计算环境可从本发明获得益处,因此被认为是本发明的组成部分。
另外,客户不一定离服务器很远。该发明同样适用于在同一物理计算机、不同的物理计算机或相同物理计算机和不同物理计算机的任意组合上运行的客户和服务器。
参照图2描述计算部件102的进一步细节。如一个例子那样,计算部件102包括操作系统202,诸如IBM公司提供的OS/390或MVS操作系统。在该操作系统上运行的是,例如,文件服务器204。文件服务器204包括多层,诸如,举例,SMB分析程序(SMB parser)层206、网络基本输入输出系统(Net bios)层208和异步套接I/O层210。
SMB分析程序层206是主SMB处理层,它知道与客户有关的环境状态(例如,什么文件是打开的、什么回叫在进行中等等)。当调用该层时,客户会话处在停止状态。因此处在该状态时不再从该客户那里接收请求。执行了某些初步的处理后,最低的各SMB层调用网络基本输入输出系统以重新允许该会话。
网络基本输入输出系统层208负责维持服务器和客户间的通信。它是SMB分析程序层和异步套接层间的一个管道。网络基本输入输出系统以SMB分析程序的名义调度异步接收请求(下面描述)。例如,将SMB包装在网络基本输入输出系统包中,网络基本输入输出系统代表SMB分析程序层进行异步套接调用,执行该工作。
异步套接I/O层210提供低级的套接通信,这些通信维护用于处理客户请求的线程池。在一个例子里,异步套接层用POSIX(计算机环境的便携式操作系统接口)异步IO接口来处理通讯。
每一层都知道有多个线程池要管理。如一个例子那样,多个线程池包括一个主要线程池300(图3a)和一个次要线程池302(图3b)。每个线程池包括零个或多个可用的线程304,可由服务器用于处理一个进入的客户请求。在一个例子里,可用的线程按后入/先出(LIFO)顺序存储。(在另一种实施方案里,可以有多个主要池和/或多个次要池)。
当客户向服务器发出一个要作处理的请求时,该服务器从选定的线程池那里获取可用的线程以便处理该请求。该选定的池是从一组合格的线程池选出的;依照本发明的一种情况,这组线程池要动态地管理,以免出现死锁情况,如下面所述。
用于处理客户请求的逻辑的一种实施方案参照图4a-4d描述。具体地说,图4a描绘了用于建立客户会话的逻辑的一个实施方案;图4b则描绘了用于安排该请求的逻辑的一个实施方案;图4c-4d描绘了用于处理该请求的逻辑的一个实施方案。
客户与服务器通信之前要建立客户会话,如参照图4a所描述的那样。开初,操作系统通知文件服务器,说已经在一个线程池上,诸如主要线程池上(分派了一个新的客户机会话,此为步骤400)(图4a)。
此后,建立新的客户会话(步骤402)。详细地说,每个客户会话都由一个会话数据结构表示,用以存储与该特定客户会话有关的信息。在一个例子中,会话结构500(图5)包括一个机会锁数(OPCOUNT),该机会锁数表示客户的未解决的机会锁的数目。该信息例如被用来确定要用来处理请求的那组合格的池。例如,如果机会锁数是零,那末这组池只包括主要的池。可是,该数大于零时,表示至少还要用一个其他的池(例如,次要的池)来处理客户的请求。该会话结构还包括用于串行化的锁,如下面的描述。
回到图4a,建立了客户会话后,就发出一个异步接收(a-sync-recv)功能,以便可以通知何时客户的请求到达该服务器,(步骤404)。在一个例子中,是网络基本输入输出系统异步安排该请求接收该数据的。‘异步接收调用’包括池掩码,它指示允许用来在其上分派工作的池。在一个例子里,该池掩码是用设置池掩码(set pool mask)功能动态设定的(即没有人工干预和/或没有使用客户代码),下面将作更详细描述。由于该池掩码是在客户会话的开始时设置的,所以开始池掩码置成一个池(例如,主要池)。因此,当相关的客户送入下一个数据请求时,能用异步接收功能有效地指定允许使用的线程池
在一个实施方案里,异步请求由一个请求数据结构表示,它包括与该请求有关的信息。在一个例子里,请求数据结构600(图6)包括有资格服务该请求的线程池的掩码。例如,该掩码包括对应每个可能的池的位。如果该池有资格进行处理,则确定该位。而如果该池无资格进行处理,则撤消该位。
在请求队列602中可以有一个或多个请求排队,队列中包括到达该服务器未能连接到服务线程中的任何客户请求,(这里描述的请求的结构及其他数据结构由主锁保护)。
现在请参照图4b,当该服务器收到了客户的请求(又叫作SMB请求或数据)时(步骤406),操作系统调度服务请求块(SRB),它运行SRB代码以便将该请求分派给合格池中的可用线程(由请求中的池掩码确定)(步骤408)。此时该SRB代码不作许多的处理,因为只到达了头部部分。例如,它不检查它是什么的SMB。然而,它完全知道这组合格的池。因此,它检查合格的池(顺序地,如一个例子那样),将该请求发送给合格池的可用服务线程,如果所有线程都忙的话,则将该请求放到一个总的队列(例如,请求队列)上。
关于SRB逻辑的一个实施方案的进一步详细情况,参照图7作描述。SRB逻辑接收请求块的地址作为输入,它含有关于该请求的相关信息,包括池掩码。
开初,获得该请求队列的主锁(步骤700)。该锁允许查询池掩码中的信息而不用担心该信息会同时被更改(步骤700)。然后,选取池掩码的合格池并查找可用的服务线程(步骤702)。在一个例子中,基于池顺序选择要检查的池。例如,首先检查主要池,然后,必要时检查次要池(或其他池)。这样就降低了请求在次要池上处理的可能性因而就降低了需要重新分派(下面描述)的可能性。
如果确定了一个可用的服务线程(询问704),那末该服务线程就从该池卸下(步骤706),并将该请求的状态置成“已分派”,步骤708。该状态表示:该请求已给了一个服务线程。与请求有关的其他状态包括“新的”,表示在某个未确定的时间将该请求送给了系统(当数据可用时将调度SRB);“排队的”,表示该请求在请求队列上;“完成的”,表示该请求已成功地完成,“失败的”,表示该请求失败了;“取消的”,表示该请求已被取消。
如果没有可用的服务线程(询问704),则将该请求加到请求队列上,步骤710并将该请求的状态置成“排队的”,(步骤712)。
分派或排队该请求后,释放该请求队列的主锁(步骤714)。随后,确定是否在步骤706中从该池取出服务线程(步骤716)。如果是,则执行投寄(POST)处理以便向可用的服务线程分派处理机上的该请求,步骤718。然后或者如果没有选取服务线程,就结束SRB的处理。
假定该请求的状态被SRB代码置成“已分派的”,则调度该服务请求块之后,处理该请求。该处理的一个例子参照图4c-4d描述。
此时,该请求在服务线程上运行而该服务线程知道其池号。因此,SMB分析程序通过例如网络基本输入输出系统被调用,后者将池号传送给SMB分析程序,步骤410(图4c)。SMB分析程序执行某种初步的SMB处理,步骤412,并发出另一个异步接收功能以便可以通知下一个请求,步骤414。
另外,对在服务线程上运行的该请求的处理继续进行。开始时,锁住与发出该请求的客户有关的会话,步骤416,并确定是否该请求是一个回叫响应,询问418。若该请求是一个回叫响应,则将机会锁数(OPCOUNT)减1,步骤420,并进一步确定该机会锁数(OPCOUNT)是否等于零,询问422。如果该机会锁数(OPCOUNT)是零,表示不需要进一步的回叫响应,那末调用设置池掩码(set pool mask)将合格的线程池置成主要池,如一个例子,步骤424。此后,释放该会话,步骤426。
返回到询问418,如果该请求不是一个回叫响应或者如果该机会锁数不等于零(询问422),那末,这时,不调用设置池掩码且解锁该会话,步骤426。
会话解锁后,要确定与服务该请求的线程有关的池是否合法,询问428(图4d)。尤其,在一个例子中,每当进来一个新的SMB时,该处理线程的池号都要从异步套接处传到SMB分析程序,并例如由SMB分析程序的低层检验确定该运行线程的池是否合法。在一个例子中,SMB分析程序检查SMB是不是一个对持有机会锁的文件的请求(即,它是不是一个回答响应)。如果SMB是要进行针对有机会锁的文件的操作,那末它除了可在主池上运行外还可在次要池上运行(它不会堵因为它已经有了机会锁)。在一个例子里,任何其他的SMB请求或对没有机会锁的文件的请求都只能在主池上运行。
因此,如果该池合法,询问428,那末SMB就在该线程上处理,步骤430。此后,例如由SMB分析程序层确定是否需要对一个或多个客户(或同一客户)作出回叫以获得该处理请求希望的或需要的信息。换句话说,该请求是否将等待一个或多个回叫响应,询问432。
如果不需要回叫,那末该请求就直接处理以便在以前选取的线程上结束(即,成功结束、失败、取消)并向提出请求的客户送去一个回答,步骤434。随后,检查该请求队列看看其他的请求是否适于处理,步骤436。
然而,如果需要对一个或多个其他的客户(或同一客户)回叫,那末锁住与接收该回答的一个客户有关的会话,步骤438,并增加机会锁数(OPCOUNT),表示一个未回答的响应,步骤440。此外,还要确定是否当前的池掩码(在请求块中表示)正确,询问442。即,还要确定该池掩码是否反映了主要的和次要的线程池两者都符合使用条件。
如果池掩码已经表示,主要的和次要的线程池两者都符合使用条件,那末不需要调用设置池掩码的功能。然而,如果该池掩码不正确,那末执行设置池掩码的功能以便能动态更改符合条件的线程池组以使该客户收到该回叫并送出该回叫响应,步骤444。尤其,要发出设置池掩码的功能,以便让多个池中的一个,处理后面的请求(例如,回叫响应)。
该设置池掩码的功能可动态更改未回答的请求的合格池而不取消该请求或不额外发送该请求。然而,如下所述,在处理中有固有的竞争条件。即,在将设置池掩码表示给异步套接(在一个例子里,异步套接码包括设置池掩码)时,可能更改合格池组太晚了,要不然正在调用设置池掩码时数据可能进来。因此,要采取进一步的措施,如下所述。
参照图8描述与设置池掩码功能有关的逻辑的一个实施方案。如上面所述,当,例如,确定了该请求在等待的响应时,尤其是,在一例子中,向客户发出回答之前,由SMB分析程序或网络基本输入输出系统调用设置池掩码代码。输入给该设置池掩码代码的是一个请求块地址及相关信息和要用的新池掩码(例如,主要池和次要池),正如该服务器确定的那样。
开始,对从相应于该请求的请求块获得的请求句柄进行检验以保证其有效性,步骤800。如果无效,询问802,那末设置池掩码功能的处理结束,步骤803。然而,如果有效,那末就获得该请求队列的主锁,步骤804。
随后,将适当的请求块中的池掩码置成输入池掩码,步骤806。下一步,确定是否异步请求状态是“排队的”,并确定是否这组合格的池在扩充,询问808。即是说,确定是否该合格的池表已更改了。如果该请求已排队且这组合格的池已更改了,那末就从队列中取下该请求,步骤810,并运行分派代码,确定是否该请求可由任何新增加的池处理(以免出现死锁),步骤812。如果可以,那末就选取一个新池;如果不可以,则将它放回到队列中。
返回到询问808,如果该异步请求排了队,但这组池没有在扩充,那末就不采取措施,要在对等待响应的同一池发出回叫响应前更改组合格的池(因此造成死锁)的竞争条件可能已丢失了。即是说,设置池掩码设法兑付该请求,但在有些情况下可能太晚了(可能已经发出了响应)。
运行了分派代码后或者如果这组池没有在扩充,则释放请求队列的主锁,步骤814,且结束设置池掩码的处理,步骤803。
由于设置池掩码不能保证为每个发出的SMB兑现更改这组合格池的设置池掩码请求,因此异步套接层将相应于运行线程(即,SMB的线程)的池号传给上层(例如,网络基本输入输出系统和SMB分析程序层)。这些层用此信息(例如,池号)来确定是否要重新发出该请求以免出现死锁。尤其是,这些层确定该池是否合法,如上所述。
返回到图4d,设定池掩码后,向有希望的信息的客户发出一个回叫,步骤446。此后,对该客户的目标会话解锁,步骤448,并确定是否有任何其他的客户要回叫,询问450。该确定工作例如通过检查其他客户的机会锁进行。
当有多个客户要回叫时,用步骤438继续处理,如上面所述。可是,当没有未完成的回叫时,该服务线程被放入等待状态(即,它处于空闲且不符合发出条件)直至所有响应都回来了,步骤452。此后,处理SMB并向请求的客户送去回答,步骤434。另外,检查该请求队列以确定是否该请求队列中有另一个合格的请求要处理,步骤436。
返回到询问428,如果确定为该池不合法,则不能在当前服务该请求的线程上对该请求进行请求。因此,最低的SMB分析程序层,如一个例子那样,将特殊的返回码返回给网络基本输入输出系统。网络基本输入输出系统然后调用异步套接将该请求重发给某个合格池,在本例中合格池就是主要池,步骤456。网络基本输入输出系统返回异步套接,使该运行的线程适用于该池。因此,由于竞争条件,可能有与回答无关的请求进来,请求从次要的池重发给主要的池。
应注意,虽然从CPU的角度讲重发的代价是昂贵的,但一般不会发生这种情况。一般由设置池掩码赢得这次竞争,它直接设置该掩码而将来的请求在合适的池上进入。客户一般立即响应机会锁,因此除非当发出了机会锁破坏且没有可用的主池线程同时又进入了客户请求,否则没有必要重发。而且,一般,主线程池设置得比次要池大(在一个例子里,有次要池只是为了避免出现死锁现象)。因此,绝大多数的请求,甚至是机会锁破坏响应,仅是在主要池上作处理,而不需要重发。因此,在机会锁破坏的大多数情况下,更改池的选择会导致设置位掩码(例如,机器字)和不必重发,产生非常高效益的方案。只有最低层的SMB分析程序部件需要应付重发。SMB分析程序中的高层以及在那之上的层次(例如,文件系统接口和机会锁处理码)不需要担心该请求在什么池上运行、重发或任何别的与本方案相关的东西。
上面详细描述的是池管理功能的一个实施方案,它允许动态设置处理请求所用的合格池。这组池动态更改以避免出现死锁情况,特别是当一个客户请求在等待一个或多个其他客户的回叫响应时,更是如此。
在本发明的一个情况中,提供了动态处理线程池分配的双重池解决方案,客户请求中不表示可以用哪个池。动态池分配机制是高效的并可用于各种计算环境,包括但不限于任何客户/服务器环境,这些环境中,客户的请求可能需要堵住其他客户的响应。
本发明可包含在有,例如,计算机可用媒体的制造物里(例如,一个或多个计算机程序产品)。该媒体中包含例如,计算机可读的程序代码装置,以提供并便于发挥本发明的功能。可将制造品包括作为计算机系统的组成部分或单独出售。
另外,至少能提供一个计算机可读的程序存储设备,它明确包含至少一个计算机可执行的指令程序以执行本发明的功能。
这里描绘的流程图仅是示范性的。这些流程图可能有许多变种或这里描述的步骤(或操作)而没离开本发明的精神。例如,可以不同的顺序执行这些步骤或者增加步骤、删除或修改步骤。所有这些变种被认为是本发明的权利要求组成部分。
虽然这里已描绘了并详细描述了最佳的实施方案,但显然对本领域的技术人员来说,可以作出各种修改、增加、取代等等但没有离开该发明的精神,因此,这些被认为是该发明范围内的,正如下面的权利要求所定义的那样。
Claims (38)
1.管理计算环境的线程池的方法,所述方法包括:
从所述计算环境的第一个请求者那里接收一个要处理的请求,所述请求等待所述计算环境的第二个请求者发出响应,而其中所述响应要由选自由一个或多个合格的线程池组成的线程池组的一个线程池服务;和
动态更改所述由一个或多个合格的线程池组成的线程池组以提供更改过的由一个或多个合格的线程池组成的线程池组,其中更改过的线程池组的一个线程池要服务所述响应,以避免所述请求等待所述响应而发生死锁;
其中,所述动态更改包含设置一个池掩码,该池掩码用以指示要服务所述响应的所述更改过的线程池组的所述合格的线程池的池掩码
2.权利要求1的方法,其中所说的池掩码包括在与所说的响应相关的数据结构里。
3.权利要求1的方法,其中当确定所说的请求在等待所说的响应时,就开始所说的动态更改。
4.权利要求1的方法,进一步包含从所说的更改过的线程池组选取所说的线程池来服务所说的响应。
5.权利要求4的方法,其中所说的选取包含:
当存在所说的更改过的线程池组的线程池不包括在所说的由一个或多个合格的线程池组成的线程池组中时,确定哪些所说的更改过的线程池组的线程池不包括在所说的由一个或多个合格的线程池组成的线程池组中,从而提供一个或多个新的线程池;和
从所说的一个或多个新线程池选取所说的线程池。
6.权利要求1的方法,进一步包含动态重新更改所说的更改过的线程池组以服务一个或多个其他的响应或一个或多个其他的请求。
7.权利要求6的方法,其中当没有未解决的要由所说的第二个请求者响应的回叫时,执行所说的动态重新更改。
8.权利要求7的方法,进一步包含确定是否有任何未决的回叫,所说的确定引用一个与所说的第二个请求者有关的数据结构。
9.权利要求1的方法,进一步包含从请求的由一个或多个合格的线程池组成的线程池组那里选取一个线程池去服务所说的请求,其中所说的选择是根据所说的一个或多个合格的线程池顺序进行的。
10.权利要求9的方法,其中所说的顺序包含在任何次要的线程池之前可以选取一个主要的线程池。
11.权利要求1的方法,其中所说的接收包含由所说的计算环境的服务器接收所说的请求且其中所说的第一个请求者是第一个客户而所说的第二个请求者是第二个客户。
12.权利要求11的方法,其中所说的服务器是一个文件服务器。
13.权利要求11的方法,其中所说的第一个客户和所说的第二个客户至少一个与所说的服务器在所说的计算环境的同一个物理计算机上运行。
14.权利要求11的方法,其中所说的第一客户和所说的第二客户至少一个与所说的服务器在所说的计算环境的不同物理计算机上运行
15.权利要求1的方法,其中所说的动态更改由所说的计算环境的服务器执行。
16.权利要求1的方法,其中所说的动态更改包括不从所说的第二个请求者那里接收表示哪些线程池要包含在所说的更改过的线程池组中。
17.权利要求1的方法,其中所说的第一个请求者和所说的第二个请求者是同一个请求者。
18.权利要求1的方法,其中所说的第一个请求者和所说的第二个请求者是不同的请求者。
19.管理计算环境的线程池的系统,所述系统包含:
用于从所述计算环境的第一个请求者那里接收一个要处理的请求的装置,所说请求等待所述计算环境的第二个请求者作出响应,其中所述响应要由选自一个或多个合格的线程池组成的线程组中的一个线程池服务;和
用于动态更改所述由一个或多个合格的线程池组成的线程池组以提供更改过的由一个或多个合格的线程池组成的线程池组的装置,其中更改过的线程池组的一个线程池要服务所述响应,以避免所述请求等待所述响应而发生死锁;
其中,所述用于动态更改的装置包含用于设置一个池掩码的装置,该池掩码用以指示要服务所述响应的所述更改过的线程池组的所述合格的线程池的池掩码。
20.权利要求19的系统,其中所说的池掩码包括在与所说的响应有关的数据结构中。
21.权利要求19的系统,其中当确定了所说的请求在等待所说的响应时开始动态地更改。
22.权利要求19的系统,进一步包含从所说的更改过的线程池组那里选取所说的线程池以服务所说的响应的装置。
23.权利要求22的系统,其中所说的选取装置包含:
当存在所说的更改过的线程池组的线程池不包括在所说的由一个或多个合格的线程池组成的线程池组中时确定所说的更改过的线程池组的哪些线程池不包括在所说的由一个或多个合格的线程池组成的线程池组、因而提供一个或多个新的线程池的装置;和
从所说的一个或多个新的线程池那里选取所说的线程池的装置。
24.权利要求19的系统,进一步包含动态重新更改所说已更改的线程池组以服务一个或多个其他响应或一个或多个其他的请求的装置
25.权利要求24的系统,其中当没有未解决的要由所说的第二个请求者响应的回叫时执行所说的动态重新更改的装置。
26.权利要求25的系统,进一步包含确定是否有任何未决的回叫的装置,所说的确定引用与所说的第二个请求者有关的数据结构。
27.权利要求19的系统,进一步包含从所请求的一个或多个合格的线程池选择组成的线程池组中某线程池以服务所说请求的装置,其中选择是根据所说的一个或多个合格的线程池顺序进行的。
28.权利要求27的系统,其中该顺序包含一个在选择任何次要的线程池之前可选择的主要的线程池。
29.权利要求19的系统,其中所说的接收装置包含由所说的计算环境的服务器接收所说的请求的装置,其中所说的第一个请求者是第一个客户,所说的第二个请求者是第二个客户。
30.权利要求29的系统,其中所说的服务器是一个文件服务器。
31.权利要求29的系统,其中所说的第一客户和所说的第二客户至少有一个与所说的服务器在所说的计算环境的相同物理计算机上运行。
32.权利要求29的系统,其中所说的第一客户和所说的第二客户至少有一个与所说的服务器在所说的计算环境中不同的物理计算机上运行。
33.权利要求19的系统,其中所说的第一请求者和所说的第二请求者是同一个请求者。
34.权利要求19的系统,其中所说的第一请求者和所说的第二请求者是不同的请求者。
35.管理计算环境的线程池的系统,所说的系统包含:
用于从所说的计算环境中的第一客户那里接收要处理的请求的处理机、所说请求等待所说计算环境的第二客户的响应,而其中所说的响应要由从一个或多个合格的线程池组成的线程池组中选择的一个线程池服务;和
所说的处理机被改造成动态更改所说的由一个或多个合格的线程池组成的线程池组以提供一个更改过的由一个或多个合格的线程池组成的线程池组,其中更改过的线程池组的一个线程池要服务所说的响应,以避免所述请求等待所述响应而发生死锁;
其中,所述动态更改包含设置一个池掩码,该池掩码用以指示要服务所述响应的所述更改过的线程池组的所述合格的线程池的池掩码
36.权利要求35的系统,其中所说的处理机包含所说的计算环境的一个服务器。
37.权利要求35的系统,其中所说的第一客户和所说的第二客户是同一客户。
38.权利要求35的系统,其中所说的第一客户和所说的第二客户是不同的客户。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/443202 | 1999-11-18 | ||
US09/443,202 | 1999-11-18 | ||
US09/443,202 US6898617B2 (en) | 1999-11-18 | 1999-11-18 | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1297198A CN1297198A (zh) | 2001-05-30 |
CN100383765C true CN100383765C (zh) | 2008-04-23 |
Family
ID=23759807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001309390A Expired - Fee Related CN100383765C (zh) | 1999-11-18 | 2000-11-14 | 管理计算环境线程池方法及系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US6898617B2 (zh) |
CN (1) | CN100383765C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469018A (zh) * | 2015-08-17 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 分布式存储系统的负载监控方法及设备 |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9361243B2 (en) | 1998-07-31 | 2016-06-07 | Kom Networks Inc. | Method and system for providing restricted access to a storage medium |
US6898617B2 (en) * | 1999-11-18 | 2005-05-24 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools |
US7137115B2 (en) * | 2000-01-25 | 2006-11-14 | Fujitsu Limited | Method for controlling multithreading |
US7140018B1 (en) * | 2000-06-20 | 2006-11-21 | International Business Machines Corporation | Method of using a distinct flow of computational control as a reusable abstract data object |
AU2001283134A1 (en) * | 2000-08-03 | 2002-02-18 | Prelude Systems, Inc. | System and method for client-server communication |
US7496668B2 (en) * | 2002-06-28 | 2009-02-24 | Honeywell International Inc. | OPC server redirection manager |
US7237242B2 (en) * | 2002-12-31 | 2007-06-26 | International Business Machines Corporation | Dynamic thread pool tuning techniques |
US7207043B2 (en) * | 2002-12-31 | 2007-04-17 | International Business Machines Corporation | Programmatic response-time based workload distribution techniques |
US7640535B2 (en) * | 2003-01-24 | 2009-12-29 | Bea Systems, Inc. | Method for transaction processing with parallel execution |
US7257633B2 (en) * | 2003-03-03 | 2007-08-14 | Sun Microsystems, Inc. | Dynamic allocation of a pool of threads |
US8539089B2 (en) * | 2003-04-23 | 2013-09-17 | Oracle America, Inc. | System and method for vertical perimeter protection |
US7278057B2 (en) * | 2003-07-31 | 2007-10-02 | International Business Machines Corporation | Automated hang detection in Java thread dumps |
JP4143501B2 (ja) * | 2003-08-22 | 2008-09-03 | キヤノン株式会社 | 画像供給装置と、当該画像供給装置と記録装置とを含む記録システムとその通信制御方法 |
CN1324478C (zh) * | 2003-12-19 | 2007-07-04 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
US7921062B2 (en) * | 2004-01-29 | 2011-04-05 | Neopost Technologies Sa | Dynamic allocation of postal security devices |
US7703101B2 (en) * | 2004-02-13 | 2010-04-20 | International Business Machines Corporation | Autonomic workload classification using predictive assertion for wait queue and thread pool selection |
US7574439B2 (en) * | 2004-05-20 | 2009-08-11 | International Business Machines Corporation | Managing a nested request |
US7748001B2 (en) * | 2004-09-23 | 2010-06-29 | Intel Corporation | Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time |
WO2006037211A1 (en) * | 2004-10-04 | 2006-04-13 | Research In Motion Limited | System and method for adaptive allocation of threads to user objects in a computer system |
CA2577230C (en) * | 2004-10-04 | 2014-12-30 | Research In Motion Limited | Allocation of threads to user objects in a computer system |
US20060212450A1 (en) * | 2005-03-18 | 2006-09-21 | Microsoft Corporation | Temporary master thread |
US8429655B2 (en) * | 2005-04-29 | 2013-04-23 | Microsoft Corporation | System and method for asynchronous processing in page lifecycle |
US7823158B2 (en) * | 2005-08-18 | 2010-10-26 | International Business Machines Corporation | Adaptive scheduling and management of work processing in a target context in resource contention |
US9053072B2 (en) * | 2007-01-25 | 2015-06-09 | Hewlett-Packard Development Company, L.P. | End node transactions at threshold-partial fullness of storage space |
US8611378B2 (en) | 2007-05-29 | 2013-12-17 | Red Hat, Inc. | Message handling multiplexer |
US8505028B2 (en) * | 2007-05-30 | 2013-08-06 | Red Hat, Inc. | Flow control protocol |
US7992153B2 (en) * | 2007-05-30 | 2011-08-02 | Red Hat, Inc. | Queuing for thread pools using number of bytes |
US20090006520A1 (en) * | 2007-06-28 | 2009-01-01 | Microsoft Corporation | Multiple Thread Pools for Processing Requests |
US8087022B2 (en) * | 2007-11-27 | 2011-12-27 | International Business Machines Corporation | Prevention of deadlock in a distributed computing environment |
US8060878B2 (en) | 2007-11-27 | 2011-11-15 | International Business Machines Corporation | Prevention of deadlock in a distributed computing environment |
US8645965B2 (en) * | 2007-12-31 | 2014-02-04 | Intel Corporation | Supporting metered clients with manycore through time-limited partitioning |
US8239872B2 (en) * | 2008-12-11 | 2012-08-07 | Hewlett-Packard Development Company, L.P. | Method and system for controlling distribution of work items to threads in a server |
CN101599027B (zh) * | 2009-06-30 | 2013-02-13 | 中兴通讯股份有限公司 | 一种线程池管理方法及其系统 |
US9219774B2 (en) * | 2009-11-16 | 2015-12-22 | Sap Se | Exchange of callback information |
US8364794B2 (en) * | 2010-03-11 | 2013-01-29 | International Business Machines Corporation | Admission control framework method and system |
US9880860B2 (en) * | 2010-05-05 | 2018-01-30 | Microsoft Technology Licensing, Llc | Automatic return to synchronization context for asynchronous computations |
US9769292B2 (en) | 2012-01-19 | 2017-09-19 | Miosoft Corporation | Concurrent process execution |
US20140053157A1 (en) * | 2012-08-16 | 2014-02-20 | Microsoft Corporation | Asynchronous execution flow |
CN102929823A (zh) * | 2012-09-08 | 2013-02-13 | 佳都新太科技股份有限公司 | 一种基于线程池的多串口通讯系统及方法 |
US9104502B2 (en) | 2012-12-15 | 2015-08-11 | International Business Machines Corporation | Managing resource pools for deadlock avoidance |
US10885023B1 (en) * | 2014-09-08 | 2021-01-05 | Amazon Technologies, Inc. | Asynchronous processing for synchronous requests in a database |
CN106155803B (zh) * | 2015-04-07 | 2019-08-30 | 北大方正集团有限公司 | 一种基于信号量的线程池共享方法及系统 |
US10176014B2 (en) | 2015-07-27 | 2019-01-08 | Futurewei Technologies, Inc. | System and method for multithreaded processing |
CN110231981B (zh) * | 2018-03-06 | 2022-12-13 | 华为技术有限公司 | 服务调用方法及装置 |
US11288105B2 (en) | 2020-07-27 | 2022-03-29 | International Business Machines Corporation | Preventing deadlocks in runtime |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590335A (en) * | 1993-08-03 | 1996-12-31 | Bull S.A. | Process for analysis of deadlocks in an operating system |
JPH0944366A (ja) * | 1995-07-28 | 1997-02-14 | Oki Electric Ind Co Ltd | マルチスレッド・スケジューリング装置 |
EP0794490A2 (en) * | 1996-03-08 | 1997-09-10 | International Business Machines Corporation | Dynamic execution unit management for high performance server system |
JPH10283243A (ja) * | 1997-02-05 | 1998-10-23 | Fuji Xerox Co Ltd | データベース管理システム |
US5835763A (en) * | 1994-06-20 | 1998-11-10 | Candle Distributed Solutions, Inc. | Threaded environment for computer systems without native threading support |
US5978857A (en) * | 1997-07-22 | 1999-11-02 | Winnov, Inc. | Multimedia driver having reduced system dependence using polling process to signal helper thread for input/output |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202971A (en) * | 1987-02-13 | 1993-04-13 | International Business Machines Corporation | System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock |
US5175852A (en) * | 1987-02-13 | 1992-12-29 | International Business Machines Corporation | Distributed file access structure lock |
US5689706A (en) * | 1993-06-18 | 1997-11-18 | Lucent Technologies Inc. | Distributed systems with replicated files |
US5442758A (en) * | 1993-07-19 | 1995-08-15 | Sequent Computer Systems, Inc. | Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring |
US5692193A (en) * | 1994-03-31 | 1997-11-25 | Nec Research Institute, Inc. | Software architecture for control of highly parallel computer systems |
US5634122A (en) * | 1994-12-30 | 1997-05-27 | International Business Machines Corporation | System and method for multi-level token management for distributed file systems |
US5758184A (en) * | 1995-04-24 | 1998-05-26 | Microsoft Corporation | System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads |
US5740448A (en) * | 1995-07-07 | 1998-04-14 | Sun Microsystems, Inc. | Method and apparatus for exclusive access to shared data structures through index referenced buffers |
US5892954A (en) * | 1995-07-07 | 1999-04-06 | Sun Microsystems, Inc. | Method and apparatus for refreshing file locks to minimize conflicting accesses to data files |
US6117181A (en) * | 1996-03-22 | 2000-09-12 | Sun Microsystems, Inc. | Synchronization mechanism for distributed hardware simulation |
GB2311882B (en) * | 1996-04-04 | 2000-08-09 | Videologic Ltd | A data processing management system |
US5991790A (en) * | 1996-07-01 | 1999-11-23 | Sun Microsystems, Inc. | Generation and delivery of signals in a two-level, multithreaded system |
JPH1049381A (ja) * | 1996-07-04 | 1998-02-20 | Internatl Business Mach Corp <Ibm> | 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム |
US5941970A (en) * | 1996-09-26 | 1999-08-24 | Vlsi Technology, Inc. | Address/data queuing arrangement and method for providing high data through-put across bus bridge |
US5951653A (en) * | 1997-01-29 | 1999-09-14 | Microsoft Corporation | Method and system for coordinating access to objects of different thread types in a shared memory space |
US6167423A (en) * | 1997-04-03 | 2000-12-26 | Microsoft Corporation | Concurrency control of state machines in a computer system using cliques |
US6535878B1 (en) * | 1997-05-02 | 2003-03-18 | Roxio, Inc. | Method and system for providing on-line interactivity over a server-client network |
US5893086A (en) * | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
US6125382A (en) * | 1997-07-25 | 2000-09-26 | International Business Machines Corporation | Distributed thread mechanism and method |
US6134594A (en) * | 1997-10-28 | 2000-10-17 | Microsoft Corporation | Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects |
US6092163A (en) * | 1998-12-04 | 2000-07-18 | W. Quinn Associates, Inc. | Pageable filter driver for prospective implementation of disk space quotas |
US5995998A (en) * | 1998-01-23 | 1999-11-30 | Sun Microsystems, Inc. | Method, apparatus and computer program product for locking interrelated data structures in a multi-threaded computing environment |
US6453356B1 (en) * | 1998-04-15 | 2002-09-17 | Adc Telecommunications, Inc. | Data exchange system and method |
US6477561B1 (en) * | 1998-06-11 | 2002-11-05 | Microsoft Corporation | Thread optimization |
US6205465B1 (en) * | 1998-07-22 | 2001-03-20 | Cisco Technology, Inc. | Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information |
US6493749B2 (en) * | 1998-08-17 | 2002-12-10 | International Business Machines Corporation | System and method for an administration server |
US6272518B1 (en) * | 1998-08-17 | 2001-08-07 | International Business Machines Corporation | System and method for porting a multithreaded program to a job model |
US6447561B1 (en) * | 1998-09-14 | 2002-09-10 | Winter Cvd Technik Gmbh | Abrasive body |
US6418458B1 (en) * | 1998-10-02 | 2002-07-09 | Ncr Corporation | Object-oriented prioritized work thread pool |
US6393458B1 (en) * | 1999-01-28 | 2002-05-21 | Genrad, Inc. | Method and apparatus for load balancing in a distributed object architecture |
US6173442B1 (en) * | 1999-02-05 | 2001-01-09 | Sun Microsystems, Inc. | Busy-wait-free synchronization |
US6671259B1 (en) * | 1999-03-30 | 2003-12-30 | Fujitsu Limited | Method and system for wide area network load balancing |
US6631009B1 (en) * | 1999-09-24 | 2003-10-07 | Xerox Corporation | Avoiding deadlock situations in a printing system using a locking time-out mechanism |
US6542920B1 (en) * | 1999-09-24 | 2003-04-01 | Sun Microsystems, Inc. | Mechanism for implementing multiple thread pools in a computer system to optimize system performance |
US6898617B2 (en) * | 1999-11-18 | 2005-05-24 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools |
US6385701B1 (en) * | 1999-11-19 | 2002-05-07 | International Business Machines Corporation | Method, system and program products for sharing data between varied clients using token management |
US6684262B1 (en) * | 2000-10-25 | 2004-01-27 | International Business Machines Corporation | Method and system for controlling peripheral device interface behavior using thread registration |
-
1999
- 1999-11-18 US US09/443,202 patent/US6898617B2/en not_active Expired - Fee Related
-
2000
- 2000-11-14 CN CNB001309390A patent/CN100383765C/zh not_active Expired - Fee Related
-
2005
- 2005-03-03 US US11/071,487 patent/US8181183B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590335A (en) * | 1993-08-03 | 1996-12-31 | Bull S.A. | Process for analysis of deadlocks in an operating system |
US5835763A (en) * | 1994-06-20 | 1998-11-10 | Candle Distributed Solutions, Inc. | Threaded environment for computer systems without native threading support |
JPH0944366A (ja) * | 1995-07-28 | 1997-02-14 | Oki Electric Ind Co Ltd | マルチスレッド・スケジューリング装置 |
EP0794490A2 (en) * | 1996-03-08 | 1997-09-10 | International Business Machines Corporation | Dynamic execution unit management for high performance server system |
JPH10283243A (ja) * | 1997-02-05 | 1998-10-23 | Fuji Xerox Co Ltd | データベース管理システム |
US5978857A (en) * | 1997-07-22 | 1999-11-02 | Winnov, Inc. | Multimedia driver having reduced system dependence using polling process to signal helper thread for input/output |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469018A (zh) * | 2015-08-17 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 分布式存储系统的负载监控方法及设备 |
CN106469018B (zh) * | 2015-08-17 | 2019-12-27 | 阿里巴巴集团控股有限公司 | 分布式存储系统的负载监控方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1297198A (zh) | 2001-05-30 |
US20050149934A1 (en) | 2005-07-07 |
US20020194377A1 (en) | 2002-12-19 |
US8181183B2 (en) | 2012-05-15 |
US6898617B2 (en) | 2005-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100383765C (zh) | 管理计算环境线程池方法及系统 | |
US20060248283A1 (en) | System and method for monitoring threads in a clustered server architecture | |
US9940346B2 (en) | Two-level management of locks on shared resources | |
US9923975B2 (en) | Session handling based on shared session information | |
US7246167B2 (en) | Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections | |
US5341499A (en) | Method and apparatus for processing multiple file system server requests in a data processing network | |
US5797005A (en) | Shared queue structure for data integrity | |
US8209701B1 (en) | Task management using multiple processing threads | |
US6167423A (en) | Concurrency control of state machines in a computer system using cliques | |
US6996614B2 (en) | Resource allocation in data processing systems | |
US6219692B1 (en) | Method and system for efficiently disbursing requests among a tiered hierarchy of service providers | |
EP0817445B1 (en) | Apparatus and method for indentifying server computer aggregation topologies | |
US8484659B2 (en) | Distributed processing of binary objects via message queues including a failover safeguard | |
JP3478538B2 (ja) | 共通ルーチンを用いた移植性の資源共用ファイルサーバ | |
US7401112B1 (en) | Methods and apparatus for executing a transaction task within a transaction processing system employing symmetric multiprocessors | |
US8190743B2 (en) | Most eligible server in a common work queue environment | |
US5819083A (en) | Minimal sufficient buffer space for data redistribution in a parallel database system | |
US7100161B2 (en) | Method and apparatus for resource access synchronization | |
EP0747832A2 (en) | Customer information control system and method in a loosely coupled parallel processing environment | |
US9189303B2 (en) | Shadow queues for recovery of messages | |
JPH02122363A (ja) | 分散アプリケーション・プログラム実行方法 | |
US20030110232A1 (en) | Distributing messages between local queues representative of a common shared queue | |
JPH10124470A (ja) | ロー・コンテクスト・スイッチングのオーバーヘッドが小さいマルチプレックス化メッセージの呼出し処理のメカニズム | |
US7644197B1 (en) | Queue management by multiple processors | |
US6108689A (en) | Method and system for processing messages in a distributed computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080423 Termination date: 20091214 |