CN111722933B - 分布式进程之间的死锁解决 - Google Patents
分布式进程之间的死锁解决 Download PDFInfo
- Publication number
- CN111722933B CN111722933B CN202010190234.2A CN202010190234A CN111722933B CN 111722933 B CN111722933 B CN 111722933B CN 202010190234 A CN202010190234 A CN 202010190234A CN 111722933 B CN111722933 B CN 111722933B
- Authority
- CN
- China
- Prior art keywords
- state
- data structure
- shared data
- processes
- record
- 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
- 238000000034 method Methods 0.000 title claims abstract description 531
- 230000008569 process Effects 0.000 title claims abstract description 499
- 238000003860 storage Methods 0.000 claims description 33
- 238000013468 resource allocation Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000004422 calculation algorithm Methods 0.000 description 52
- 230000006870 function Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 20
- 230000007246 mechanism Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 16
- 238000001514 detection method Methods 0.000 description 9
- 230000006855 networking Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 239000000523 sample Substances 0.000 description 5
- 238000005457 optimization Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 235000003642 hunger Nutrition 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000037351 starvation Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/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/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]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
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)
Abstract
一种用于解决进程之间的资源死锁的系统。维护共享数据结构,该共享数据结构包括进程的进程记录。为进程中的每一个定义了进程状态和进程优先级。基于在共享数据结构中维护的进程记录的进程状态和进程优先级,为每个进程确定进程的相应状态。该相应状态用于向进程分配和解除分配资源,以缓解和解决进程之间的资源死锁。
Description
技术领域
本发明总体上涉及计算系统,并且更具体地,涉及用于解决分布式计算环境中的进程之间的资源死锁(deadlock)的各种实施例。
背景技术
在分布式计算体系结构中,当一个进程无法保护该进程完成或启动所需要的资源时,就会发生资源死锁。因此,例如,当第一进程要求由第二进程持有的资源,而第二进程正在等待由第一进程持有的资源时,可能发生资源死锁。这种情况会阻止任一进程的完成。在另一种情况下,可以从资源调度器向多个进程分配共享资源,然而,该资源可能以低于多个进程中的一个开始工作负载执行所要求的资源的最少数量的数量来分配。以这种方式,在进程的工作负载启动之前,进程可能经历不期望的等待时间。从本质上说,死锁浪费了满足其他请求所需要的资源,从而极大地阻碍了系统性能。
发明内容
提供了用于解决进程之间的资源死锁的各种实施例。在一个实施例中,一种方法包括:维护包括进程的进程记录的共享数据结构;为进程中的每一个定义进程状态和进程优先级;以及基于在共享数据结构中维护的进程记录的进程状态和进程优先级,为进程中的每一个确定进程的相应状态;其中该相应状态被用于向进程分配和解除分配(deallocate)资源,以缓解和解决进程之间的资源死锁。
除了前述示例性实施例,还提供了各种其他系统和计算机程序产品实施例,并提供了相关的优点。提供前述的发明内容来以简化的形式介绍一些构思的选择,这些构思将在下面的具体实施方式中进一步描述。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。所要求保护的主题不限于解决背景技术中提到的任何或所有缺点的实现。
附图说明
为了容易理解本发明的优点,将通过参考附图中示出的具体实施例来呈现上面简要描述的本发明的更具体的描述。应当理解,这些附图仅描述了本发明的典型实施例,因此不应被认为是对其范围的限制,将通过使用附图以附加的特征和细节来描述和解释本发明,其中:
图1是描述根据本发明实施例的示例性计算节点的框图;
图2是描述根据本发明实施例的示例性云计算环境的框图;
图3是描述根据本发明实施例的抽象模型层的框图;
图4是描述根据本发明实施例的用于向进程分配资源的调度体系结构的框图;
图5是描述根据本发明实施例的用于解决进程之间的资源死锁的方法的流程图;
图6是描述根据本发明实施例的用于向进程分配资源的基于状态的算法的流程图;
图7是描述根据本发明实施例的用于向进程分配资源的基于进程优先级的算法的框图;
图8是描述根据本发明实施例的用于向进程分配资源的基于聚合状态的算法的框图;和
图9是描述根据本发明实施例的用于向进程分配资源的基于进程组的算法的流程图。
具体实施方式
如前面所提到的,在分布式计算体系结构中,当进程无法保护该进程完成或启动所需要的资源时,就会发生资源死锁。因此,例如,当第一进程要求由第二进程持有的资源,而第二进程正在等待由第一进程持有的资源时,可能发生资源死锁。这种情况会阻止任一进程的完成。在另一种情况下,可以从资源调度器向每个要求独占资源的多个进程分配共享资源,然而,由于资源耗尽(即,没有附加的空闲资源可分配),该资源可能以低于多个进程中的一个开始工作负载执行所要求的资源的最少数量的数量来分配。以这种方式,在进程的工作负载的启动之前,进程可能经历不期望的等待时间。
先前的实现被认为是试图检测资源死锁,然而一旦死锁发生,这些实现通常不能实际解决死锁。例如,在路径推进算法(path pushing algorithm)中,分布式死锁是通过维护显式全局等待图(Wait-For-Graph,WFG)来检测的。每个站点(site)维护本地WFG,并且当执行死锁计算时,各个站点将其本地WFG发送到所有相邻站点。从另一个站点接收WFG的每个站点将接收到的WFG与其本地的WFG相结合,以构建更新的WFG,并将该更新的WFG传递给其他站点。重复该过程,直到给定站点具有足够完整的全局状态图,以确定死锁存在或确立不存在死锁。
在另一个示例中,即在边缘追踪算法(edge-chasing algorithm)中,通过沿着图的边缘传输和传播称为探测(probe)的消息来检测WFG中循环(cycle)的存在。如果一个站点接收到之前由该站点发送的探测消息,则该站点检测到循环的形成。当正在执行的进程收到探测消息时,它会丢弃该消息并继续执行。因此,只有被阻塞的进程才沿着它们在图中的输出边缘将探测消息传播到它们所依赖的进程。
在另一个示例中,即在全局状态检测算法(global state detection algorithm)中,在不冻结基础计算的情况下获得分布式系统的一致快照(snapshot),并且检查快照的死锁状况,因为死锁是稳定的属性。
在另一个示例中,即在扩散计算算法(diffusion computation algorithm)中,死锁检测计算通过系统的WFG扩散。回声网络消息用于检测死锁。为了检测死锁,进程沿着WFG的所有输出边缘发送出消息。这些信息通过WFG的边缘连续传播(即扩散)。如果活动进程收到回声查询或回复消息,它会将其丢弃。当被阻塞的进程收到对于特定死锁检测启动的第一查询消息时,它不会发送回复消息,直到它接收到该进程发送的每个查询的回复消息。对于该死锁检测启动的所有后续查询,进程会立即发送回回复消息。因此,启动方在收到对它已经发送出的每个查询的回复时检测到死锁。
同样,尽管这些现有机制关注于进程之间的死锁检测,但是它们未能提供最终以有意义的方式解决死锁,从而有效地使死锁的资源能够被分配给相应进程以开始或结束执行的功能。因此,本发明的功能提出了通过选择具有更低优先级的进程来释放当前分配的资源,同时指示具有更高优先级的其他进程声明(claim)资源从而获得所释放的资源,来解决死锁情况的技术。所考虑的系统还包括使用共享数据结构在进程之间共享信息的功能,以实现关于哪些进程释放资源以及哪些进程声明所释放的资源的进程之间的集体和协作决定。共享数据结构可以驻留在任何类型的共享架构上,诸如共享文件系统或另一种形式的共享数据存储,如将要讨论的。
本文描述的功能与现有的方法是不同的,因为这些方法假定有可能构建所描述的WFG,其对于每个进程标识该进程在资源使用方面等待的特定其他进程。利用本发明的机制,进程没有访问关于哪些其他进程正在阻塞对其的资源分配的信息,使得不能在进程级别上构建WFG。此外,在可能被许多或大多数进程使用的稀缺资源的一般情况下,WFG可能提供较少富有有益信息的信息,因为每个被阻塞的进程实际上可能正在等待所有其他被阻塞的进程。
现有的方法也倾向于依赖网络消息传递(network messaging),并且特别是依赖每个进程向其他进程发送网络消息的能力。这要求每个进程都具有能够与其他进程创建网络连接的信息,并且还具有关于哪些其他进程正在阻塞该进程的信息。本发明不假定该信息对于进程的可用性,并且不要求网络消息的传输。此外,许多现有的方法假定关于进程如何在站点内分组的信息是已知的,并且对于进程中的每一个和每个站点都是可用的。相反,本发明的功能并不假定该信息对于进程和站点是可用的,并且不要求该信息的存在或使用。
最后,许多现有的方法假定在除了进程本身之外的其他层(例如,在对进程进行分组的站点的层中,或者包括所有站点和进程的全局层中)中实现死锁检测逻辑。本发明的机制不假定在除了进程本身之外的任何地方实现死锁检测逻辑,进程本身通常彼此独立。
本文公开的所提出的机制可以在各种体系结构、系统等中实现。在一个考虑的体系结构中,仅作为示例,存在多个使用在进程之间共享的资源的进程。共享资源的使用可以是每个进程独占的。在一些实施例中,进程可以在多个主机上运行(即,分布式进程),其中每个进程可以从资源调度器请求资源。因此,每个进程可以向调度器指定它所要求的资源数量,并等待直到调度器将所要求的资源分配给该进程。在一些实施例中,每个进程可以具有开始其操作所要求的每种类型的资源的最少数量。在一些实施例中,当资源变得可用时,并且根据调度器中实现的调度逻辑,调度器逐个向每个进程提供资源。
在一些实施例中,进程彼此之间具有有限的连接。具体来说,进程没有信息以实现彼此之间的网络连接。在一些实施例中,进程具有共享的数据存储,并且彼此独立(即,彼此不知道)。在一些实施例中,可能不存在可用于跟踪进程之间的资源死锁的中央组件。即死锁检测和解决由进程负责。在一些实施例中,进程可选地具有分配给它们的优先级。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境和/或与一个或多个车辆关联的计算系统,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在更高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的联网组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,其中显示了云计算节点的一个示例。云计算节点10仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。
云计算节点10具有计算机系统/服务器12,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器12一起操作的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图1所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28(或存储器子系统28)可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。高速缓存存储器32可以包括例如在处理器16的多个核之间共享的共享高速缓存(例如L2高速缓存)和/或可以包括私有高速缓存(例如L1高速缓存)。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括联网环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器12一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参考图2,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图3,其中显示了云计算环境50(图2)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图所示,提供下列层和对应功能:
设备层55包括物理和/或虚拟设备,其被嵌有和/或是独立的电子设备、传感器、致动器和其他对象,以在云计算环境50中执行各种任务。设备层55中的每个设备将联网能力结合到其他功能抽象层,使得可以向其提供从设备获得的信息,和/或可以向设备提供来自其他抽象层的信息。在一个实施例中,包括设备层55的各种设备可以结合统称为“物联网”(internet of thing,IoT)的实体网络。如本领域普通技术人员将理解的,这种实体网络允许数据的相互通信、收集和传播,以实现各种各样目的。
如图所示,设备层55包括传感器52、致动器53、具有集成的处理、传感器和联网电子设备的“学习”恒温器56、相机57、可控家用插座/插孔58和可控电开关59。其他可能的设备可以包括但不限于各种附加的传感器设备、联网设备、电子设备(诸如远程控制设备)、附加的致动器设备,所谓的“智能”家电,诸如冰箱或洗衣机/烘干机,以及各种其他可能的互连对象。
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和联网组件66。软件组件的示例包括:网络应用服务器软件67以及数据库软件68。
虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的示例:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。
在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个示例中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能85:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;及在本发明所示实施例的上下文中,死锁解决算法功能96。本领域的普通技术人员将理解,死锁解决算法功能96也可以与各种抽象层的其他部分结合工作,诸如硬件和软件层60、虚拟化层70、管理层80和其他工作负载层90(例如,诸如数据分析处理94)中的那些部分,以实现本发明所示实施例的各种目的。
现在转向图4,示出了描述用于向进程分配资源的调度体系结构400的框图。如先前所提到的,资源死锁可能发生在如体系结构400中的一般情况下。体系结构400包括调度器404,其将共享资源406A、406B、406C和406N(统称为资源406A-N)分配给进程402A和402B。当进程402A和402B要求以独占方式(例如,进程独占的)使用共享资源406A-N时,可能发生死锁,然而,调度器404可能仅以低于能够使相应进程402A和402B开始执行所要求的资源的最少数量的数量将共享资源406A-N分配给相应进程402A和402B(例如,进程402A和402B每个可能需要共享资源406A-N中的4个资源来开始工作,然而调度器404只为每个分配了2个资源)。
最佳情况下,死锁应该在最小的时间段内解决;并且相应进程释放其分配的资源406A-N的事件应该被最小化,使得释放分配的资源仅在检测到死锁并且仅被所选择的进程检测到时发生。最佳情况下,使用确定性的死锁情况解决方案,而在获取资源时没有进一步冲突的可能性;并且不具有进程的匮乏(starvation)。
因此,本发明引入了新的技术来解决资源死锁,诸如由上述情况创建的那些死锁。在一个实施方式中,图5中示出了用于解决进程之间的资源死锁的方法500。方法500的功能可以被实现为作为机器上的指令执行的方法,其中指令被体现在有形的、非暂时性的机器可读存储介质上。方法500可以从步骤502开始。维护包括进程的进程记录的共享数据结构(步骤504)。为进程中的每一个定义进程状态和进程优先级(步骤506)。基于在共享数据结构中维护的进程记录的进程状态和进程优先级,为每个进程确定进程的相应状态。相应状态被用于向进程分配和解除分配资源406A-N,以缓解和解决进程之间的资源死锁(步骤508)。方法500结束(步骤510)。
应当注意,如本文所述,资源406A-N可以包括本领域通常理解的任何硬件、软件、物理或逻辑资源。作为非限制性示例,各个资源406A-N可以包括处理器(即,中央处理单元(CPU))、存储器组件、加速器组件、图形处理器单元(GPU)、存储组件和/或网络组件等。
共享数据结构
根据本发明的各方面,共享数据结构包括全局属性和进程记录。全局属性可以包括诸如数据结构的版本、任何形式的校验和(checksum)、记录的数量和记录的各种分组以及聚合状态指示符之类的属性。进程记录可以包括被注册到死锁解决机制的每个进程的记录,其中每个记录的格式如表1所示:
进程ID | 进程组ID | 进程优先级 | 进程状态 | 记录更新时间戳 |
表1
在某些实施例中,进程标识(ID)包括被注册到死锁解决机制的进程的唯一标识符;进程组ID可以包括进程所属的组的标识符列表;进程优先级可以包括该进程相对于其他进程的优先级;并且进程状态可以包括分配有状态值的状态。这些状态值可以包括:声明状态,指示进程应该声明资源406A-N;和释放状态,指示进程应该释放任何当前分配的资源406A-N,并将其资源声明值清零。
该数据结构可以被优化,用于使用进程记录中的任何属性来搜索进程记录。具体来说,可以优化数据结构中的搜索,用于使用进程ID和进程组ID进行搜索。此外,数据结构中的聚合状态指示符可以包括各种指示符,这些指示符提供关于数据结构中的进程的集体状态的信息,这将进一步讨论。表2描述了数据结构中集合的进程记录的示例:
表2
应当注意,数据结构可以支持分布式环境中的锁定,以通过运行在不同主机上的多个进程来同步对数据结构的访问和更新。此外,在使用共享文件系统来存储数据结构的实现中,可以将包含数据结构的文件配置为驻留在文件系统的分布式高速缓存中。
持续时间
如将在算法过程中进一步讨论的,附加地定义了以下持续时间。在一些实施例中,可以利用资源分配持续时间。资源分配持续时间包括进程等待进行资源分配的、从进程提交请求的时间到最终完成分配的时间的持续时间。该持续时间的到期表示资源死锁的可能性。在一些实施例中,也可以利用状态检查持续时间。状态检查持续时间包括等待由死锁解决机制计算的进程的状态的下一次检查的持续时间。
进程优先级
在某些实施例中,为了计算进程的优先级,可以实现几种方法。第一种方法可以包括分配给每个进程的用户指定的优先级。在这种情况下,如果用户指定的优先级不是唯一的,则可以向用户指定的优先级添加唯一的属性,诸如时间戳,以作为两个冲突的优先级值之间的决胜(tiebreak)。用于计算进程优先级的另一种方法包括使用时间戳本身。例如,如果没有用户指定的优先级,则时间戳可以用作进程优先级。可以使用的可能时间戳包括(a)进程首次被注册到死锁解决机制的时间;(b)进程的开始时间;和/或(c)等待持续时间已经过去的时间。通常,与具有更晚时间戳的进程相比,具有更早时间戳的进程可以被认为被分配有更高优先级。
死锁解决算法
在描述了前述定义和体系结构概述的情况下,图6是描述用于解决进程之间的死锁的基于状态的算法600的流程图。算法600的功能可以被实现为作为机器上的指令执行的方法,其中指令被体现在有形的、非暂时性的机器可读存储介质上。算法600可以从步骤602开始。对于给定进程(例如,“进程A”),声明给定进程所要求的资源(即,资源406A-N)以开始其的执行(步骤604)。然后,在步骤606,做出当前分配给即时进程(instant process)的资源是否低于(即,在数量、性能或其他度量上)开始该进程的工作负载所要求的最少资源的确定。如果在步骤606,当前分配给即时进程的资源不低于开始执行该进程的工作负载所要求的资源,则算法600移动到步骤624,在步骤624,做出关于即时进程是否先前被注册到死锁解决机制的另一个确定。如果在步骤624,即时进程先前没有被注册到死锁解决机制,则算法600结束(步骤628)。否则,在步骤624,如果该进程先前被注册到死锁解决机制,则共享数据结构被锁定,从数据结构中移除即时进程的进程记录,数据结构被写入数据存储,并且共享数据结构被解锁(步骤626)。随后,算法600结束(步骤628)。
返回到步骤606,如果当前分配给该进程的资源低于开始执行即时进程的工作负载所要求的资源,则算法600移动到步骤608,在步骤608,做出关于资源分配持续时间是否已经到期的确定。如果在步骤608,资源分配持续时间没有到期,则算法600继续到步骤642,在步骤642,由即时进程等待状态检查持续时间,然后返回到步骤606。否则,在步骤608,如果资源分配持续时间已经到期,则算法600移动到步骤610,在步骤610,共享数据结构被锁定,并且其内容被即时进程读取。算法600然后移动到步骤612,在步骤612,做出关于共享数据结构中是否不存在其他进程,或者共享数据结构中是否不存在相对于即时进程具有更高优先级的其他进程的确定,或者是否存在相对于即时进程具有更低优先级的至少一个进程,其中该更低优先级进程的状态是声明状态(即,该更低优先级进程没有释放其资源)的确定。如果在步骤612中,条件中的至少一个为真,则即时进程的状态被设置为声明状态,使得附加的资源被分配给即时进程(步骤614)。否则,在步骤612,如果条件中都不为真,则即时进程的状态被设置为释放状态,使得该进程的当前分配的资源被解除分配并被释放,以供其他进程声明(步骤616)。
不管进程的状态是被设置为声明状态还是释放状态,该算法随后移动到步骤618,在步骤618,做出关于共享数据结构中是否存在即时进程的进程记录的确定。如果在步骤618,共享数据结构中不存在即时进程的进程记录,则将进程记录添加到即时进程的共享数据结构中(步骤620)。否则,在步骤618,如果共享数据结构中已经存在即时进程的进程记录,则更新共享数据结构中即时进程的进程记录(步骤622)。一旦进程记录已经被添加或更新,算法600然后移动到步骤630,在步骤630,做出关于共享数据结构是否已经被修改的确定。如果共享数据结构在步骤630被修改,则共享数据结构被写入数据存储(步骤632),然后共享数据结构被解锁(步骤634)。否则,在步骤630,如果共享数据结构没有被修改,则共享数据结构仅仅被解锁(步骤634)。
在步骤634解锁共享数据结构之后,做出关于即时进程的状态的确定(步骤636)。如果即时进程处于声明状态,则即时进程的资源声明被恢复(步骤640)。否则,在步骤636,如果进程的状态处于释放状态,则即时进程的资源声明被清零,并且释放当前分配给即时进程的所有资源(步骤638)。算法600然后在步骤642等待状态检查持续时间,并通过返回到步骤606以重新开始算法600来进行迭代。
考虑到前述基于优先级的算法,图7是描述根据进程状态的各种基于优先级的决策的简化分析700的框图。如分析700所示,如果存在空队列,则进入空队列的任何新进程被置于声明状态,如线702所示。如果即时进程存在于其中不存在更高优先级进程的队列中(即,队列中的进程中的每一个具有比即时进程更低的优先级),则即时进程被置于声明状态,如线704所示。如果即时进程存在于其中存在至少一个处于声明状态的更低优先级的进程的队列中,则即时进程被置于声明状态,如线706所示。最后,如果即时进程存在于其中不存在处于声明状态的更低优先级的进程的队列中,则即时进程被置于释放状态。
前述基于优先级的算法在下面的伪代码过程中被进一步指定:
声明进程A开始运行所要求的资源。
基于聚合状态的算法
在一些实施例中,基于聚合状态的优化可以应用于死锁解决机制。通过这种优化,所计算的进程的状态可以根据持有当前卷入死锁情况的进程的队列的聚合状态进行微调。
例如,在可能在声明和释放状态之间进行选择的情况下,算法可以使用聚合状态作为确定进程的状态的考虑因素。换句话说,这个过程聚合地分析队列中的所有进程的状态,以确定将相应进程置于哪个状态。在一些示例中,如果聚合状态指示卷入死锁队列中的进程的数量正增加或没有改变,即死锁仍然不在解决的路径上,则可以选择进程状态为处于释放状态。如果聚合状态指示卷入死锁队列的进程的数量正减少,即死锁处于解决的路径上,则选择进程状态为处于声明状态。
实现聚合状态方面有几种选择,以指示死锁队列的大小是增加还是减少。在一个示例中,可以使用在最后时间间隔内的队列大小的差异,使得如果队列大小在最后时间间隔内增加,则指示是“增加”。类似地,如果队列大小在最后时间间隔内减少,则指示是“减少”。如果队列大小在最后时间间隔内没有改变,则指示是“没有改变”。
在另一个示例中,可以使用在死锁队列上执行的最后更新操作,使得如果最后更新操作包括向队列添加进程,则指示是“增加”。类似地,如果最后更新操作包括从队列中移除进程,则该指示是“减少”。
指示死锁队列是增加还是减少的聚合状态方面可以存储在共享数据结构中,并且根据为其计算所选择的方法来维护,并且再次,该聚合状态方面的值可以包括指示死锁队列的大小是增加的增加状态;指示死锁队列的大小是减少的减少状态;和/或指示死锁队列的大小没有改变的“无改变”状态,。
图8描述了描述根据进程状态的各种基于聚合状态的决策的简化分析800的框图。如分析800所示,并且非常类似于分析700,如果存在空队列,则进入空队列的任何新进程被置于声明状态,如线802所示。如果即时进程存在于其中不存在更高优先级进程的队列中(即,队列中的进程中的每一个具有比即时进程更低的优先级),则即时进程被置于声明状态,如线804所示。如果即时进程存在于其中存在至少一个处于声明状态的更低优先级的进程,则即时进程被置于声明状态,如线806所示。然而,如果即时进程存在于其中可以选择是将即时进程置于声明状态还是释放状态的队列中,则可以采用基于聚合状态的决策。具体来说,如果队列中不存在处于声明状态的更低优先级的进程,根据基于聚合状态的计算,如果队列大小处于增加状态或“无改变”状态,则即时进程被置于释放状态以释放其资源。否则,根据基于聚合状态的计算,如果队列大小处于减少状态,则即时进程被置于声明状态,如线808所示。
为了实现该优化,对上述伪代码过程的修改应用如下:
声明进程A开始运行所要求的资源。
基于进程组的算法
在一些实施例中,对上述算法的优化是使用资源分配持续时间到期之外的附加信息来添加关于进程可能卷入死锁情况的进一步信息。
特别地,在其中进程属于进程组,并且代表进程组分配资源以分配给它们的相应进程的体系结构中,那么如果进程组卷入死锁情况,这就推断该组中的所有进程都卷入死锁情况。也就是说,如果进程组中的一个进程当前卷入死锁情况,则该进程组中的其他进程可以确定它们卷入了死锁情况,而无需等待资源分配持续时间到期。
为了促进该逻辑,将进程组搜索结构添加到共享数据结构,其中进程组搜索结构包括被注册在共享数据结构中的进程的进程组的所有标识符。此外,给定要搜索的组的标识符,进程组搜索结构是可搜索的。在各种实施例中,进程组搜索结构可以根据共享数据结构中的进程记录构建在存储器中,并且可以持久化或不持久化。
图9是描述前述用于解决进程之间的死锁的基于进程组的算法900的流程图。算法900的功能可以被实现为作为机器上的指令执行的方法,其中指令被体现在有形的、非暂时性的机器可读存储介质上。算法900可以从步骤902开始。对于给定进程(例如,“进程A”),声明给定进程所要求的资源(即,资源406A-N)以开始其的执行(步骤904)。然后,在步骤906,做出当前分配给即时进程的资源是否低于(即,在数量、性能或其他度量上)开始该进程的工作负载所要求的最少资源的确定。如果在步骤906,当前分配给即时进程的资源不低于开始执行该进程的工作负载所要求的资源,则算法900移动到步骤926,在步骤926,做出关于即时进程是否先前被注册到死锁解决机制的另一个确定。如果在步骤926,即时进程先前没有被注册到死锁解决机制,则算法900结束(步骤930)。否则,在步骤926,如果进程先前被注册到死锁解决机制,则共享数据结构被锁定,从共享数据结构中移除即时进程的进程记录,共享数据结构被写入数据存储,并且共享数据结构被解锁(步骤928)。随后,算法900结束(步骤930)。
返回到步骤906,如果当前分配给即时进程的资源低于开始执行即时进程的工作负载所要求的资源,则算法900移动到步骤908,在步骤908,共享数据结构被锁定,并且其内容被即时进程读取。随后,在步骤910做出关于即时进程所属的进程组是否包括在进程组搜索结构中的确定;或者资源分配持续时间是否到期的确定;或者即时进程之前是否注册到死锁解决机制的确定。如果步骤910的条件中的所有都不为真,则该进程的状态被设置为未注册(步骤912),并且共享数据结构被解锁(步骤936)。
在步骤936中解锁共享数据结构之后,做出关于即时进程的状态的确定(步骤938)。如果即时进程的状态是未注册,则算法移动到等待状态检查持续时间(步骤944),并且随后返回到步骤906。如果即时进程处于声明状态,则即时进程的资源声明被恢复(步骤942)。否则,在步骤938,如果即时进程处于释放状态,则即时进程的资源声明被清零,并且释放当前分配给即时进程的所有资源(步骤940)。算法900然后在步骤944等待状态检查持续时间,并通过返回到步骤906以重新开始算法900来进行迭代。
返回到步骤910,如果任何条件为真,则算法900移动到在步骤914的另一个确定,关于共享数据结构中是否不存在其他进程的确定,或者共享数据结构中是否不存在相对于即时进程具有更高优先级的其他进程的确定,或者是否存在相对于即时进程具有更低优先级的至少一个进程,其中该更低优先级进程的状态处于声明状态(即,更低优先级进程没有释放其资源)的确定。如果在步骤914处,条件中的至少一个为真,则即时进程的状态被设置为声明状态,使得附加的资源被分配给即时进程(步骤916)。否则,在步骤914,如果条件中都不为真,则即时进程的状态被设置为释放状态,使得该进程的当前分配的资源被解除分配并被释放,用于其他进程声明(步骤918)。
不管进程的状态是被设置为声明状态还是释放状态,该算法随后移动到步骤920,在步骤920,做出关于共享数据结构中是否存在即时进程的进程记录的确定。如果在步骤920,共享数据结构中不存在即时进程的进程记录,则将进程记录添加到即时进程的共享数据结构中(步骤922)。否则,在步骤920,如果共享数据结构中已经存在即时进程的进程记录,则更新共享数据结构中即时进程的进程记录(步骤924)。一旦进程记录已经被添加或更新,算法900然后移动到步骤932,在步骤932,做出关于共享数据结构是否已经被修改的确定。如果共享数据结构在步骤932被修改,则共享数据结构被写入数据存储(步骤934),然后共享数据结构被解锁(步骤936)。否则,在步骤932,如果共享数据结构没有被修改,则共享数据结构仅仅被解锁(步骤936)。
在步骤936解锁共享数据结构之后,做出关于即时进程的状态的确定(步骤938)。如果即时进程处于声明状态,则即时进程的资源声明被恢复(步骤942)。否则,在步骤938,如果进程的状态处于释放状态,则即时进程的资源声明被清零,并且释放当前分配给即时进程的所有资源(步骤940)。算法900然后在步骤944等待状态检查持续时间,并通过返回到步骤906以重新开始算法900来进行迭代。
前述基于进程组的算法在下面的伪代码过程中被进一步指定:
声明进程A开始运行所要求的资源。
删除过时记录
在各种实施例中,可能存在这样的情况,其中进程将其自身注册到共享数据结构中,并且在从共享数据结构中移除其进程记录之前,在稍后的某个点异常终止。这些情况可能会在共享数据结构中创建过时的进程记录。
为了处理过时的进程记录,定义了持续时间来确定进程记录是否过时。具体来说,每个进程记录都包括记录更新时间戳,该记录更新时间戳指示记录被更新的最后时间。对于每个进程记录,自其最后更新以来的持续时间可以被计算为当前时间和记录更新时间戳之间的差值。然后,将进程记录自其最后更新以来的持续时间与定义的持续时间进行比较,以确定进程记录是否过时。如果进程记录自其最后更新以来的持续时间大于定义的持续时间,则该记录被视为过时。
然后,被标识为过时的进程记录可以从共享数据结构中移除。在一些实施例中,每当从存储加载共享数据结构时,可以执行过时进程记录的计算。在进程记录被标识为过时并从共享数据结构中移除,然而与该进程记录相关联的进程仍在运行的情况下,则在进程检查共享数据结构的下一次迭代中,可以将该进程的新记录添加到共享数据结构中。
本发明可以是装置、系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (16)
1.一种用于由处理器解决进程之间的资源死锁的方法,包括:
基于存储在每个进程能够访问的数据存储器内的共享数据结构中维护的进程记录,为进程中的每一个进程确定进程的相应状态;其中进程记录指示每一个注册到共享数据结构的进程的进程状态和进程优先级;
基于所述确定,向进程中的每一个进程分配或解除分配资源,其中进程中的每一个进程与其他进程独立,以使用共享数据结构中的进程记录来缓解和解决资源死锁;
在状态检查持续时间之后重新迭代进程状态的确定;
如果进程已被分配了开始所述进程的工作负载所需的足够资源并且所述进程先前已注册到共享数据结构,则从共享数据结构中移除所述进程的进程记录,其中每次共享数据结构被修改,共享数据结构均被写入数据存储器。
2.根据权利要求1所述的方法,其中:
每个进程记录包括进程标识符、进程优先级和进程状态中的至少一个;
进程标识符包括注册在共享数据结构中的进程的标识符;
进程优先级包括进程相对于其他进程的优先级;并且
进程状态被配置为分配有状态值,所述状态值包括至少:
声明状态,指示进程声明资源;和
释放状态,指示进程将与进程相关联的资源声明值清零,并释放分配给进程的任何资源。
3.根据权利要求2所述的方法,还包括:
如果共享数据结构中不存在进程记录,则将进程的状态确定为声明状态;
如果共享数据结构中不存在与进程相比具有更高优先级的进程记录,则将进程的状态确定为声明状态;和
如果共享数据结构中存在与进程相比具有更低优先级并且处于声明状态的进程记录,则将进程的状态确定为声明状态;否则
将进程的状态确定为释放状态。
4.根据权利要求1所述的方法,还包括执行以下至少一项:
由进程确定当前分配给进程的资源的数量是否低于开始进程的工作负载所要求的资源的数量阈值;
由进程确定资源分配持续时间是否已经到期;
由进程读取共享数据结构的进程记录;
如果不存在进程的进程记录,则将进程的新进程记录添加到共享数据结构中;
如果共享数据结构中存在进程的进程记录,则更新共享数据结构中的进程的进程记录。
5.根据权利要求1所述的方法,其中:
使用资源分配持续时间来等待由进程提交的资源分配请求得到满足;其中资源分配持续时间的到期指示资源死锁;
使用状态检查持续时间来等待进程的相应状态的下一次计算。
6.根据权利要求1所述的方法,还包括使用以下至少一项来计算进程的优先级:
用户指定的优先级,包括如果用户指定的优先级不是唯一的,则向用户指定的优先级添加唯一的属性;和
时间戳,指示包括从包括以下各项的列表中选择的至少一个的进程优先级:进程首次注册到共享数据结构中的时间、进程的开始时间、等待持续时间已经过去的时间;其中与另一个进程相比,具有更早时间戳的进程被分配更高优先级。
7.一种用于解决进程之间的资源死锁的系统,包括:
处理器,执行存储在存储器中的指令;其中,当执行指令时,所述处理器:
基于存储在每个进程能够访问的数据存储器内的共享数据结构中维护的进程记录,为进程中的每一个进程确定进程的相应状态;其中进程记录指示每一个注册到共享数据结构的进程的进程状态和进程优先级;
基于所述确定,向进程中的每一个进程分配或解除分配资源,其中进程中的每一个进程与其他进程独立,以使用共享数据结构中的进程记录来缓解和解决资源死锁;
在状态检查持续时间之后重新迭代进程状态的确定;
如果进程已被分配了开始所述进程的工作负载所需的足够资源并且所述进程先前已注册到共享数据结构,则从共享数据结构中移除所述进程的进程记录,其中每次共享数据结构被修改,共享数据结构均被写入数据存储器。
8.根据权利要求7所述的系统,其中:
每个进程记录包括进程标识符、进程优先级和进程状态中的至少一个;
进程标识符包括注册在共享数据结构中的进程的标识符;
进程优先级包括进程相对于其他进程的优先级;并且
进程状态被配置为分配有状态值,所述状态值包括至少:
声明状态,指示进程声明资源;和
释放状态,指示进程将与进程相关联的资源声明值清零,并释放分配给进程的任何资源。
9.根据权利要求8所述的系统,其中所述处理器:
如果共享数据结构中不存在进程记录,则将进程的状态确定为声明状态;
如果共享数据结构中不存在与进程相比具有更高优先级的进程记录,则将进程的状态确定为声明状态;和
如果共享数据结构中存在与进程相比具有更低优先级并且处于声明状态的进程记录,则将进程的状态确定为声明状态;否则
将进程的状态确定为释放状态。
10.根据权利要求7所述的系统,其中所述处理器执行以下至少一项:
由进程确定当前分配给进程的资源的数量是否低于开始进程的工作负载所要求的资源的数量阈值;
由进程确定资源分配持续时间是否已经到期;
由进程读取共享数据结构的进程记录;
如果不存在进程的进程记录,则将进程的新进程记录添加到共享数据结构中;
如果共享数据结构中存在进程的进程记录,则更新共享数据结构中的进程的进程记录。
11.根据权利要求7所述的系统,其中:
使用资源分配持续时间来等待由进程提交的资源分配请求得到满足;其中资源分配持续时间的到期指示资源死锁;
使用状态检查持续时间来等待进程的相应状态的下一次计算。
12.根据权利要求7所述的系统,其中所述处理器使用以下至少一项来计算进程的优先级:
用户指定的优先级,包括如果用户指定的优先级不是唯一的,则向数据结构添加唯一的属性;和
时间戳,指示包括从包括以下各项的列表中选择的至少一个的进程优先级:进程首次注册到共享数据结构中的时间、进程的开始时间、等待持续时间已经过去的时间;其中与另一个进程相比,具有更早时间戳的进程被分配更高优先级。
13.一种用于解决进程之间的资源死锁的计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1-6中任一项所述的方法的步骤。
14.一种用于解决进程之间的资源死锁的系统,包括:
处理器,执行存储在存储器中的指令;其中,当执行所述指令时,所述处理器执行根据权利要求1-6中任一项所述的方法。
15.一种用于解决进程之间的资源死锁的计算机可读存储介质,所述计算机可读存储介质具有存储在其中的计算机可读程序代码部分,所述计算机可读程序代码部分可由处理器执行以使所述处理器执行根据权利要求1-6中任一项所述的方法。
16.一种用于解决进程之间的资源死锁的系统,所述系统包括分别用于执行根据权利要求1-6中任一项所述的方法的步骤的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/358,376 | 2019-03-19 | ||
US16/358,376 US10970132B2 (en) | 2019-03-19 | 2019-03-19 | Deadlock resolution between distributed processes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111722933A CN111722933A (zh) | 2020-09-29 |
CN111722933B true CN111722933B (zh) | 2024-05-24 |
Family
ID=72515974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010190234.2A Active CN111722933B (zh) | 2019-03-19 | 2020-03-18 | 分布式进程之间的死锁解决 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10970132B2 (zh) |
CN (1) | CN111722933B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7198464B2 (ja) * | 2020-03-20 | 2023-01-04 | 株式会社シナプスイノベーション | 資源割当て方法及びシステム |
CN112769640B (zh) * | 2020-12-23 | 2022-09-16 | 中移(杭州)信息技术有限公司 | 进程通信方法、系统、服务器及存储介质 |
CN113111099B (zh) * | 2021-06-15 | 2021-08-24 | 蚂蚁金服(杭州)网络技术有限公司 | 一种环路检测方法、装置、电子设备与存储介质 |
CN114579669B (zh) * | 2022-05-06 | 2022-08-30 | 天津南大通用数据技术股份有限公司 | 基于探测消息传递的分布式数据库事务死锁检测解锁方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046756A (zh) * | 2006-03-31 | 2007-10-03 | 国际商业机器公司 | 用于解决计算资源死锁的设备、系统以及方法 |
CN102334103A (zh) * | 2009-02-25 | 2012-01-25 | 国际商业机器公司 | 具有对于多个虚拟服务器间的共享资源分配的软件控制的微处理器 |
CN103559088A (zh) * | 2012-05-21 | 2014-02-05 | 辉达公司 | 维持公平性和顺序的资源管理子系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6098167A (en) * | 1997-03-31 | 2000-08-01 | International Business Machines Corporation | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution |
US7146627B1 (en) * | 1998-06-12 | 2006-12-05 | Metabyte Networks, Inc. | Method and apparatus for delivery of targeted video programming |
US6098044A (en) * | 1998-06-26 | 2000-08-01 | Lsi Logic Corporation | DVD audio decoder having efficient deadlock handling |
US6292910B1 (en) * | 1998-09-14 | 2001-09-18 | Intel Corporation | Method and apparatus for detecting a bus deadlock in an electronic system |
US6446257B1 (en) * | 1999-02-04 | 2002-09-03 | Hewlett-Packard Company | Method and apparatus for pre-allocation of system resources to facilitate garbage collection |
CN101479704B (zh) * | 2006-03-27 | 2013-09-04 | 相干逻辑公司 | 为多处理器系统设计程序 |
US8595391B1 (en) * | 2008-03-14 | 2013-11-26 | Xilinx, Inc. | Automatic queue sizing for dataflow applications |
US8327336B2 (en) * | 2009-03-18 | 2012-12-04 | International Business Machines Corporation | Enhanced thread stepping |
US7962615B1 (en) * | 2010-01-07 | 2011-06-14 | International Business Machines Corporation | Multi-system deadlock reduction |
US8676756B2 (en) * | 2010-05-17 | 2014-03-18 | Invensys Systems, Inc. | Replicating time-series data values for retrieved supervisory control and manufacturing parameter values in a multi-tiered historian server environment |
US9712374B1 (en) * | 2010-08-18 | 2017-07-18 | Juniper Networks, Inc. | Network services resource management |
US9075621B2 (en) * | 2011-12-23 | 2015-07-07 | Arm Limited | Error recovery upon reaching oldest instruction marked with error or upon timed expiration by flushing instructions in pipeline pending queue and restarting execution |
US20140040218A1 (en) * | 2012-07-31 | 2014-02-06 | Hideaki Kimura | Methods and systems for an intent lock engine |
US9747288B1 (en) * | 2012-12-10 | 2017-08-29 | Amazon Technologies, Inc. | Scalable transaction-based data repository service |
US9384228B2 (en) * | 2013-03-01 | 2016-07-05 | Oracle International Corporation | Implementing a multi-column/multi-row constraint in a relational database table |
US9298507B2 (en) * | 2013-09-26 | 2016-03-29 | International Business Machines Corporation | Data processing resource management |
US9471371B2 (en) * | 2014-02-27 | 2016-10-18 | International Business Machines Corporation | Dynamic prediction of concurrent hardware transactions resource requirements and allocation |
US10296348B2 (en) * | 2015-02-16 | 2019-05-21 | International Business Machines Corproation | Delayed allocation of an out-of-order queue entry and based on determining that the entry is unavailable, enable deadlock avoidance involving reserving one or more entries in the queue, and disabling deadlock avoidance based on expiration of a predetermined amount of time |
US11150950B2 (en) * | 2016-12-01 | 2021-10-19 | Vmware, Inc. | Methods and apparatus to manage workload domains in virtual server racks |
-
2019
- 2019-03-19 US US16/358,376 patent/US10970132B2/en active Active
-
2020
- 2020-03-18 CN CN202010190234.2A patent/CN111722933B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046756A (zh) * | 2006-03-31 | 2007-10-03 | 国际商业机器公司 | 用于解决计算资源死锁的设备、系统以及方法 |
CN102334103A (zh) * | 2009-02-25 | 2012-01-25 | 国际商业机器公司 | 具有对于多个虚拟服务器间的共享资源分配的软件控制的微处理器 |
CN103559088A (zh) * | 2012-05-21 | 2014-02-05 | 辉达公司 | 维持公平性和顺序的资源管理子系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111722933A (zh) | 2020-09-29 |
US20200301755A1 (en) | 2020-09-24 |
US10970132B2 (en) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111722933B (zh) | 分布式进程之间的死锁解决 | |
CN107430528B (zh) | 机会性资源迁移以优化资源放置 | |
US11005933B2 (en) | Providing queueing in a log streaming messaging system | |
US10880228B2 (en) | Proactive channel agent | |
US9846590B2 (en) | Deploying a virtual machine in a computing environment | |
US8825863B2 (en) | Virtual machine placement within a server farm | |
US20180253246A1 (en) | Method and system for memory allocation in a disaggregated memory architecture | |
US8949430B2 (en) | Clustered computer environment partition resolution | |
US10705872B2 (en) | Predictive virtual server scheduling and optimization of dynamic consumable resources to achieve priority-based workload performance objectives | |
CN112005219B (zh) | 计算集群中具有数据访问意识的工作负载管理的方法和系统 | |
US20190205168A1 (en) | Grouping of tasks for distribution among processing entities | |
WO2023273977A1 (en) | Transferring task data between edge devices in edge computing | |
US20190253488A1 (en) | Transaction process management by dynamic transaction aggregation | |
US10812408B1 (en) | Preventing concentrated selection of resource hosts for placing resources | |
CN112860421B (zh) | 用于作业处理的方法、设备和计算机程序产品 | |
US10831563B2 (en) | Deadlock resolution between distributed processes using process and aggregated information | |
WO2023148020A1 (en) | Service update management | |
WO2022148376A1 (en) | Edge time sharing across clusters via dynamic task migration | |
US11263130B2 (en) | Data processing for allocating memory to application containers | |
US11036563B2 (en) | Deadlock resolution between distributed processes using process and group information | |
US10721181B1 (en) | Network locality-based throttling for automated resource migration | |
US11121981B1 (en) | Optimistically granting permission to host computing resources | |
EP3985506B1 (en) | Utilizing models for concurrently discovering network resources of a network | |
US11520769B1 (en) | Block level lock on data table | |
US20230096276A1 (en) | Garbage collection of redundant partitions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |