Methods and apparatus for selecting processes for execution
First Claim
1. In a multiprocessing computer system having a plurality of processing devices, a method for identifying processes to be executed, the method comprising:
- detecting when a first process executing on a first processing device releases access to shared data, wherein the first processing device maintains at least a portion of the shared data accessed and released by the first process in a cache associated with the first processing device;
in response to the first process releasing access to the shared data, attempting to identify a second process that;
i) formerly executed on the first processing device; and
ii) is awaiting access to the shared data; and
providing, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system;
in the kernel responsible for selecting processes to execute amongst the plurality of processing devices;
receiving the identification of the second process as a process that is ready for execution in the multiprocessing computer system;
applying an affinity-based process selection technique to select the second process as a next process to execute on the first processing device;
executing the second process on the first processing device by executing the second process to access the at least a portion of the shared data maintained in the cache associated with the first processing device, such that the first processing device does not have to access that at least a portion of the shared data from a main memory associated with the multiprocessing computer system.
2 Assignments
0 Petitions
Accused Products
Abstract
Mechanisms and techniques operate in a multiprocessing computer system having a plurality of processing devices and provide an affinity-based wakeup locality successor selection process that can identify processes to be executed by a kernel by detecting when a first process executing on a first processing device releases access to shared data. In response to the first process releasing access to the shared data, embodiments attempt to identify a second process that i) formerly executed on the first processing device and that ii) is awaiting access to the shared data. Embodiments provide, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system. Such embodiments can operate in an execution environment such as a Java Virtual Machine.
70 Citations
45 Claims
-
1. In a multiprocessing computer system having a plurality of processing devices, a method for identifying processes to be executed, the method comprising:
-
detecting when a first process executing on a first processing device releases access to shared data, wherein the first processing device maintains at least a portion of the shared data accessed and released by the first process in a cache associated with the first processing device; in response to the first process releasing access to the shared data, attempting to identify a second process that; i) formerly executed on the first processing device; and ii) is awaiting access to the shared data; and providing, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system; in the kernel responsible for selecting processes to execute amongst the plurality of processing devices; receiving the identification of the second process as a process that is ready for execution in the multiprocessing computer system; applying an affinity-based process selection technique to select the second process as a next process to execute on the first processing device; executing the second process on the first processing device by executing the second process to access the at least a portion of the shared data maintained in the cache associated with the first processing device, such that the first processing device does not have to access that at least a portion of the shared data from a main memory associated with the multiprocessing computer system. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. In a multiprocessing computer system having a plurality of processing devices, a method for identifying processes to be executed, the method comprising:
-
detecting an execution behavior pattern for processes that access shared data; determining if the execution behavior pattern statistically meets a threshold associated with patterns of access to the shared data, and if the execution behavior pattern statistically meets the threshold associated with patterns of access to the shared data, causing a synchronization subsystem responsible for controlling access to the shared data to perform an affinity-based wakeup locality successor selection process comprising; detecting when a first process executing on a first processing device releases access to shared data; in response to the first process releasing access to the shared data, attempting to identify a second process that; i) formerly executed on the first processing device; and ii) is awaiting access to the shared data; and providing, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system; and if the execution behavior pattern statistically does not meet the threshold associated with patterns of access to the share data, causing the kernel to perform a normal successor selection process for selection of processes to succeed each other during execution. - View Dependent Claims (19, 20, 21)
-
-
22. A multiprocessing computer system comprising:
-
a plurality of processing devices each having at least one associated cache; a memory system; an interconnection mechanism coupling the memory system and the plurality of processing devices; wherein the memory system is further encoded with a synchronization subsystem that operates to identify processes to be executed by performing the operations of; detecting when a first process executing on a first processing device releases access to shared data, wherein the first processing device maintains at least a portion of the shared data accessed and released by the first process in a cache associated with the first processing device; in response to the first process releasing access to the shared data, attempting to identify a second process that; i) formerly executed on the first processing device; and ii) is awaiting access to the shared data; and providing, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system; in the kernel responsible for selecting processes to execute amongst the plurality of processing devices; receiving the identification of the second process as a process that is ready for execution in the multiprocessing computer system; applying an affinity-based process selection technique to select the second process as a next process to execute on the first processing device; executing the second process on the first processing device by executing the second process to access the at least a portion of the shared data maintained in the cache associated with the first processing device, such that the first processing device does not have to access that at least a portion of the shared data from a main memory associated with the multiprocessing computer system. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)
if the execution behavior pattern statistically does not meet the threshold associated with patterns of access to the share data, the synchronization subsystem causes the kernel to perform a normal successor selection process for selection of processes to succeed each other during execution.
-
-
36. The multiprocessing computer system of claim 35 wherein when the synchronization subsystem performs the operations of detecting an execution behavior pattern for processes that access the shared data and determining if the execution behavior pattern statistically meets a threshold, the synchronization subsystem performs these operations periodically such that the multiprocessing computer system selects processes to succeed execution of other processes according to at least one of:
-
the normal successor selection process performed by the kernel; the affinity based wakeup locality successor selection process performed by a synchronization subsystem that controls access to the share data.
-
-
37. The multiprocessing computer system of claim 35 wherein when the synchronization subsystem performs the operation of detecting an execution behavior pattern for processes that access the shared data, the synchronization subsystem performs the operations of:
-
calculating an amount of blocked acquire operations for access to the shared data that have occurred over a period of time, the blocked acquire operations performed by processes that attempt access to the shared data but that result in the process being blocked for access to the shared data by the synchronization scheduler; and wherein when the synchronization subsystem performs the operation of determining if the execution behavior pattern statistically meets a threshold associated with patterns of access to the shared data, the synchronization subsystem performs the operation of; determining if the amount of blocked acquire operations meets a threshold.
-
-
38. The multiprocessing computer system of claim 35 wherein when the synchronization subsystem performs the operation of detecting an execution behavior pattern for processes that access the shared data the synchronization subsystem performs the operation of:
-
calculating an average hold time for accesses to the shared data that have occurred over a period of time performed by processes that access to the shared data; and wherein when the synchronization subsystem performs the operation of determining if the execution behavior pattern statistically meets a threshold associated with patterns of access to the shared data, the synchronization subsystem performs the operation of; determining if the average hold time for accesses to the shared data meets a threshold.
-
-
39. A multiprocessing computer system comprising:
-
a plurality of processing devices each having at least one associated cache; a memory system; an interconnection mechanism coupling the memory system and the plurality of processing devices; wherein the memory system is encoded with a synchronization subsystem that operates to identify processes to be executed by performing the operations of; detecting an execution behavior pattern for processes that access shared data; determining if the execution behavior pattern statistically meets a threshold associated with patterns of access to the shared data, and if the execution behavior pattern statistically meets the threshold associated with patterns of access to the shared data, the synchronization subsystem responsible for controlling access to the shared data performs an affinity-based wakeup locality successor selection process comprising the operations of; detecting when a first process executing on a first processing device releases access to shared data; in response to the first process releasing access to the shared data, attempting to identify a second process that; i) formerly executed on the first processing device; and ii) is awaiting access to the shared data; and providing, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system; and if the execution behavior pattern statistically does not meet the threshold associated with patterns of access to the share data, the synchronization subsystem causes the kernel to perform a normal successor selection process for selection of processes to succeed each other during execution. - View Dependent Claims (40, 41, 42)
-
-
43. A multiprocessing computer system comprising:
-
a plurality of processing devices each having at least one associated cache; a memory system; an interconnection mechanism coupling the memory system and the plurality of processing devices; wherein the memory system is encoded with a synchronization subsystem that operates to provide a means to identify processes to be executed, such means including; means for detecting an execution behavior pattern for processes that access shared data; means for determining if the execution behavior pattern statistically meets a threshold associated with patterns of access to the shared data, and if the execution behavior pattern statistically meets the threshold associated with patterns of access to the shared data, the synchronization subsystem responsible for controlling access to the shared data performs an affinity-based wakeup locality successor selection process that includes; means for detecting when a first process executing on a first processing device releases access to shared data; means for in response to the first process releasing access to the shared data, attempting to identify a second process that; i) formerly executed on the first processing device; and ii) is awaiting access to the shared data; and means for providing, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system; and if the execution behavior pattern statistically does not meet the threshold associated with patterns of access to the share data, the synchronization subsystem includes a means for causing the kernel to perform a normal successor selection process for selection of processes to succeed each other during execution.
-
-
44. A computer program product having a computer-readable storage medium including computer program logic encoded thereon that, when performed in a multiprocessing computer system identifies processes to be executed via the operations of:
-
detecting when a first process executing on a first processing device releases access to shared data, wherein the first processing device maintains at least a portion of the shared data accessed and released by the first process in a cache associated with the first processing device; in response to the first process releasing access to the shared data, attempting to identify a second process that; i) formerly executed on the first processing device; and ii) is awaiting access to the shared data; and providing, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system; in the kernel responsible for selecting processes to execute amongst the plurality of processing devices; receiving the identification of the second process as a process that is ready for execution in the multiprocessing computer system; applying an affinity-based process selection technique to select the second process as a next process to execute on the first processing device; executing the second process on the first processing device by executing the second process to access the at least a portion of the shared data maintained in the cache associated with the first processing device, such that the first processing device does not have to access that at least a portion of the shared data from a main memory associated with the multiprocessing computer system.
-
-
45. A computer program product having a computer-readable storage medium including computer program logic encoded thereon that, when performed in a multiprocessing computer system identifies processes to be executed via the operations of:
-
detecting an execution behavior pattern for processes that access shared data; determining if the execution behavior pattern statistically meets a threshold associated with patterns of access to the shared data, and if the execution behavior pattern statistically meets the threshold associated with patterns of access to the shared data, causing a synchronization subsystem responsible for controlling access to the shared data to perform an affinity-based wakeup locality successor selection process comprising; detecting when a first process executing on a first processing device releases access to shared data; in response to the first process releasing access to the shared data, attempting to identify a second process that; i) formerly executed on the first processing device; and ii) is awaiting access to the shared data; and providing, to a kernel responsible for selecting processes to execute amongst the plurality of processing devices, an identification of the second process as a process that is ready for execution in the multiprocessing computer system; and if the execution behavior pattern statistically does not meet the threshold associated with patterns of access to the share data, causing the kernel to perform a normal successor selection process for selection of processes to succeed each other during execution.
-
Specification