Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
First Claim
1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising:
- responsive to a first wake-and-go mechanism associated with a first processing unit within a plurality of processing units detecting a thread running on the first processing unit that is waiting for an event that modifies a data value associated with a target address, placing the thread in a sleep state;
creating a wake-and-go instance for the thread comprising the target address and a thread identifier associated with the thread;
assigning the wake-and-go instance to a second processing unit within the plurality of processing units;
storing, by a second wake-and-go mechanism associated with the second processing unit, the wake-and-go instance in a wake-and-go storage array associated with the second processing unit; and
responsive to the second wake-and-go mechanism detecting the event that modifies the data value associated with the target address, placing the thread in a non-sleep state,wherein placing the thread in a non-sleep state comprises;
identifying a third processing unit within the plurality of processing units that has a lowest processor utilization within the plurality of processing units or a lowest priority thread running within the plurality of processing units; and
placing the thread in a run queue of the third processing unit.
2 Assignments
0 Petitions
Accused Products
Abstract
A wake-and-go mechanism is provided for a data processing system. The wake-and-go mechanism detects a thread running on a first processing unit within a plurality of processing units that is waiting for an event that modifies a data value associated with a target address. The wake-and-go mechanism creates a wake-and-go instance for the thread by populating a wake-and-go storage array with the target address. The operating system places the thread in a sleep state. Responsive to detecting the event that modifies the data value associated with the target address, the wake-and-go mechanism assigns the wake-and-go instance to a second processing unit within the plurality of processing units. The operating system on the second processing unit places the thread in a non-sleep state.
222 Citations
16 Claims
-
1. A method, in a data processing system, for performing a wake-and-go operation, the method comprising:
-
responsive to a first wake-and-go mechanism associated with a first processing unit within a plurality of processing units detecting a thread running on the first processing unit that is waiting for an event that modifies a data value associated with a target address, placing the thread in a sleep state; creating a wake-and-go instance for the thread comprising the target address and a thread identifier associated with the thread; assigning the wake-and-go instance to a second processing unit within the plurality of processing units; storing, by a second wake-and-go mechanism associated with the second processing unit, the wake-and-go instance in a wake-and-go storage array associated with the second processing unit; and responsive to the second wake-and-go mechanism detecting the event that modifies the data value associated with the target address, placing the thread in a non-sleep state, wherein placing the thread in a non-sleep state comprises; identifying a third processing unit within the plurality of processing units that has a lowest processor utilization within the plurality of processing units or a lowest priority thread running within the plurality of processing units; and placing the thread in a run queue of the third processing unit. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A data processing system, comprising:
-
a plurality of processing units; a first wake-and-go mechanism associated with a first processing unit within the plurality of processing units; a second wake-and-go mechanism associated with a second processing unit within the plurality of processing units; and a wake-and-go storage array associated with the second processing unit, wherein the first wake-and-go mechanism is configured to; responsive to detecting a thread running on the first processing unit that is waiting for an event that modifies a data value associated with a target address, place the thread in a sleep state; create a wake-and-go instance for the thread comprising the target address and a thread identifier associated with the thread; and assign the wake-and-go instance to the second processing unit; wherein the second wake-and-go mechanism is configured to; store the wake-and-go instance in the wake-and-go storage array; and responsive to the second wake-and-go mechanism detecting the event that modifies the data value associated with the target address, place the thread in a non-sleep state; wherein placing the thread in a non-sleep state comprises; identifying a third processing unit within the plurality of processing units that has a lowest processor utilization within the plurality of processing units or a lowest priority thread running within the plurality of processing units; and placing the thread in a run queue of the third processing unit. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A computer program product comprising a non-transitory computer readable medium storing a computer readable program, wherein the computer readable program, when executed on a computing device, causes the computing device to:
-
responsive to a first wake-and-go mechanism associated with a first processing unit within a plurality of processing units detecting a thread running on the first processing unit that is waiting for an event that modifies a data value associated with a target address, place the thread in a sleep state; create a wake-and-go instance for the thread comprising the target address and a thread identifier associated with the thread; assign the wake-and-go instance to a second processing unit within the plurality of processing units; store the wake-and-go instance in a wake-and-go storage array associated with the second processing unit; and responsive to a second wake-and-go mechanism associated with the second processing unit detecting the event that modifies the data value associated with the target address, place the thread in a non-sleep state, wherein placing the thread in a non-sleep state comprises; identifying a third processing unit within the plurality of processing units that has a lowest processor utilization within the plurality of processing units or a lowest priority thread running within the plurality of processing units; and placing the thread in a run queue of the third processing unit. - View Dependent Claims (15, 16)
-
Specification