Global avoidance of hang states via priority inheritance in multi-node computing system
First Claim
1. A computer-implemented method for a clustered computing system, the method comprising:
- determining that a first process is waiting for a resource and that the first process is in a blocked state by accessing process state information from a shared global memory on a remote node, where the process state information identifies processes and a current state of each process, where the shared global memory is shared and remotely accessed by multiple nodes in the clustered computing system;
identifying the resource that the first process is waiting for;
identifying, from the shared global memory, a blocking process that is holding the resource and a processing state of the blocking process;
comparing a priority of the blocking process with a priority of the first process; and
selectively increasing the priority of the blocking process based, at least in part, on the priority and the process state information of the blocking process.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems, methods, and other embodiments associated with avoiding resource blockages and hang states are described. One example computer-implemented method for a clustered computing system includes determining that a first process is waiting for a resource and is in a blocked state. The resource that the first process is waiting for is identified. A blocking process that is holding the resource is then identified. A priority of the blocking process is compared with a priority the first process. If the priority of the blocking process is lower than the priority of the first process, the priority of the blocking process is increase. In this manner the blocking process can be scheduled for execution sooner and thus release the resource.
10 Citations
26 Claims
-
1. A computer-implemented method for a clustered computing system, the method comprising:
-
determining that a first process is waiting for a resource and that the first process is in a blocked state by accessing process state information from a shared global memory on a remote node, where the process state information identifies processes and a current state of each process, where the shared global memory is shared and remotely accessed by multiple nodes in the clustered computing system; identifying the resource that the first process is waiting for; identifying, from the shared global memory, a blocking process that is holding the resource and a processing state of the blocking process; comparing a priority of the blocking process with a priority of the first process; and selectively increasing the priority of the blocking process based, at least in part, on the priority and the process state information of the blocking process. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A clustered computing system, comprising:
-
a plurality of computing nodes for executing processes, each of the computing nodes including a processor, an operating system, and a database instance that is configured as part of a clustered database system; a shared global memory that is shared on a remote node of the computing nodes and accessed by the plurality of computing nodes in the clustered database system; a blocking avoidance logic embodied in one or more of the plurality of nodes and when executed is configured to; determine when a process in a first node of the computing nodes is in a wait state that is waiting for a resource, the process being a waiting process; determine an identity and a processing state of a blocking process from the shared global memory on the remote node, where the blocking process is part of a second node of the computing nodes, to which the resource is allocated; and selectively causing an operating system local to the blocking process to increase an execution priority of the blocking process based, at least in part, on an execution priority of the waiting process and the process state information of the blocking process. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A non-transitory computer-readable medium storing computer-executable instructions that when executed by a computer cause the computer to perform a method, the method comprising:
-
searching process state information of a distributed computing system having a plurality of computing nodes to identify a waiting process from a first computing node, where the waiting process is in a blocked state and waiting for a resource; searching resource state information of the distributed computing system to identify a blocking process from a different computing node in the distributing computing system using an identifier of the resource, where the blocking process is holding the resource, where the process state information and the resource state information are stored in a global memory shared by the plurality of computing nodes, and where the global memory is on a remote node in the plurality of computing nodes and is accessed by the plurality of computing nodes; generating a message that includes instructions and data with at least a priority of the waiting process, an identifier of the blocking process, and the identifier of the resource; and transmitting the message to the second node to cause an execution priority of the blocking process to be increased if the execution priority is lower than the waiting process. - View Dependent Claims (23, 24, 25, 26)
-
Specification