IP Library Granted Patent US 8,621,470
Granted Patent B2
US 8,621,470 · App. 12/019,172 · Granted Dec 31, 2013

Wakeup-attribute-based allocation of threads to processors

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,621,470
App. No.
12/019,172
Granted
Dec 31, 2013
Kind
B2
Abstract

A method of co-locating threads and corresponding system are described. The method comprises a first thread executing on a first processor awakening a second thread for execution on a second processor and assigning the second thread to execute on the first processor based on a determination that the first thread awakened the second thread at a prior awakening of the second thread.

Claims (36)

1. A method comprising:

putting a first thread executing on a first processor into a most-recent sleep while a second thread executes on a second processor separate from said first processor;

while said first thread is asleep, said second thread awakening said first thread;

in response to said awakening, causing thread attributes including,

a previous-awakened-thread attribute of said first thread to indicate that said second thread was the thread that was most-recently awakened by said first thread,

a previous-waking-thread attribute of said second thread to indicate that said first thread was the thread that was most recently awakened by said second thread; and

a processor-assignment attribute of said first thread to indicate whether or not said first thread is to be allocated to said second processor based at least in part on said previous-awakened-thread attribute of said first thread and said previous-waking thread attribute of said second thread; and

allocating said first thread to a processor based on its processor-assignment attribute.

2. A method as recited in claim 1 wherein said causing said processor-assignment attribute of said first thread to indicate whether or not said first thread is to be allocated to said second processor is also based on:

a previous-waking-thread attribute of said first thread that indicates whether or not said second thread was the last thread to awaken said first thread; and

a previous-awakened-thread attribute of said second thread that indicates whether or not said first thread was the last thread awakened by said second thread.

3. A method as recited in claim 1 wherein, in the event said processor-assignment attribute of said first thread is caused to change from indicating said first processor to indicating said second processor, said first thread is not allocated to said second processor in response to the change until said first thread is subsequently awakened.

4. A system comprising non-transitory computer-readable media encoded with code configured to, when executed by a processor:

put a first thread executing on a first processor into a most-recent sleep while a second thread executes on a second processor separate from said first processor;

while said first thread is asleep, cause said second thread to awaken said first thread;

in response to the awakening, cause thread attributes including,

a previous-awakened-thread attribute of said first thread to indicate that said second thread was the thread that was most-recently awakened by said first thread,

a previous-waking-thread attribute of said second thread to indicate that said first thread was the thread that was most recently awakened by said second thread; and

a processor-assignment attribute of said first thread to indicate whether or not said first thread is to be allocated to said second processor based at least in part on said previous-awakened-thread attribute of said first thread and said previous-waking thread attribute of said second thread; and

allocate said first thread to a processor based on its processor-assignment attribute.

5. A system as recited in claim 4 further comprising said processor.

6. A system as recited in claim 4 wherein the causing said processor-assignment attribute of said first thread to indicate whether or not said first thread is to be allocated to said second processor is also based on:

a previous-waking-thread attribute of said first thread that indicates whether or not said second thread was the last thread to awaken said first thread; and

a previous-awakened-thread attribute of said second thread that indicates whether or not said first thread was the last thread awakened by said second thread.

7. A system as recited in claim 4 wherein, in the event said processor assignment attribute of said first thread is caused to change from indicating said first processor to indicating said second processor, said code does not allocate said first thread to said second processor in response to the change until said first thread is subsequently awakened.

8. The system as claimed in claim 4 wherein said thread attributes include a previous awakened thread attribute indicating a previous thread awakened by the thread to which the attributes correspond.

9. The system as claimed in claim 4 , wherein said thread attributes include a thread wake state attribute indicating a wake state of the thread to which the attribute corresponds.

10. The system as claimed in claim 4 , wherein said processor is further configured to include a set of instructions which, when executed by said processor, cause said processor to perform the assignment of the first thread based on a determination that a processor usage value of said first processor on which the first thread is executing exceeds a predetermined usage threshold.

11. The system as claimed in claim 10 , wherein the set of instructions includes instructions which, when executed by said processor, cause said processor to assign said first thread to the same processor on which a second thread of said threads is assigned based in part on a determination that said first thread awakened said second thread at a prior awakening of said second thread.

12. The system as claimed in claim 10 , wherein the set of instructions include instructions which, when executed by said processor, cause said processor to perform the assignment of the first thread further based on a determination that the first thread was awakened by the second thread at a prior awakening of the first thread.

13. The system as claimed in claim 12 , wherein the prior awakening of the first thread is a penultimate awakening of the first thread.

14. A non-transitory computer-readable medium storing instructions which, when executed by a processor, cause the processor to perform the method of claim 1 .

15. The method as claimed in claim 1 , wherein a determination that said first thread awakened said second thread at a most-recent awakening of said second thread is performed based on a thread attribute corresponding to the first thread which indicates a previous thread that awakened said first thread.

16. The method as claimed in claim 1 , wherein the allocating of said first thread is further performed based on a determination that the combined processor usage of the first thread and the second thread falls below a predetermined usage threshold.

17. The method as claimed in claim 1 , wherein said awakening of the second thread is a penultimate awakening of the second thread.

18. The method as claimed in claim 16 , wherein the allocating is further performed based on a determination that the first thread was awakened by the second thread at a prior awakening of the first thread.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2021
From: OT PATENT ESCROW, LLC
To: VALTRUS INNOVATIONS LIMITED
Reel/Frame 058897/0262 →
PATENT ASSIGNMENT, SECURITY INTEREST, AND LIEN AGREEMENT Recorded Jan 26, 2021
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP; HEWLETT PACKARD ENTERPRISE COMPANY
To: OT PATENT ESCROW, LLC
Reel/Frame 055269/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 037079/0001 →