IP Library Granted Patent US 9,043,801
Granted Patent B2
US 9,043,801 · App. 12/014,208 · Granted May 26, 2015

Two-tiered dynamic load balancing using sets of distributed thread pools

Inventors: Mark Gary Kupferschmidt (Rochester, MN); Paul Emery Schardt (Rochester, MN); Robert Allen Shearer (Rochester, MN)
Assignee: International Business Machines Corporation
G06F9/5027G06F2209/5011
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 9,043,801
App. No.
12/014,208
Granted
May 26, 2015
Kind
B2
Abstract

By employing a two-tier load balancing scheme, embodiments of the present invention may reduce the overhead of shared resource management, while increasing the potential aggregate throughput of a thread pool. As a result, the techniques presented herein may lead to increased performance in many computing environments, such as graphics intensive gaming.

Claims (70)

1. A two-tiered method of load balancing, comprising:

employing a first-tier macro-dynamic load balancing comprising:

dividing a plurality of processing threads into a plurality of distributed thread pool sets, wherein each thread pool set comprises a respective number of threads;

allocating system resources among the plurality of thread pool sets receiving a set of tasks to be executed, wherein the macro-dynamic load balancing allows for a non-uniform allocation of system resources among the plurality of thread pool sets;

identifying a thread type for the set of tasks;

determining if a thread pool set is available corresponding to the identified thread type for the set of tasks; and

reallocating resources as necessary to ensure that an appropriate thread pool set is available for the identified thread type, wherein reallocating resources comprises modifying the respective number of threads in the appropriate thread pool set based a set of processing requirements of the set of tasks; and employing a second-tier micro-dynamic load balancing comprising:

routing the set of tasks to the appropriate thread pool set based on the thread type;

adding the set of tasks to a shared workset of the appropriate thread pool set; and

executing the tasks of the shared workset.

2. The method of claim 1 , wherein allocating system resources among the plurality of thread pool sets is based on one or more parameters of system performance, wherein allocating system resources within the plurality of thread pool sets is based on one or more parameters of system performance.

3. The method of claim 1 , wherein reallocating system resources further comprises:

decreasing a set of resources available to a thread pool set, thereby freeing up the set of system resources;

creating a new thread pool set; and

allocating the set of system resources previously freed up to the new thread pool set.

4. The method of claim 1 , wherein reallocating resources further comprises:

decreasing a set of resources available to a thread pool set, thereby freeing up the set of system resources; and

allocating the set of system resources previously freed up to another, already existing, thread pool set.

5. The method of claim 1 , wherein a first thread pool set of the plurality of thread pool sets comprises one or more threads configured to perform real-time ray tracing, wherein the first thread pool set comprises a first number of threads, wherein the first number of threads is based on a set of processing requirements of threads configured to perform real-time ray tracing.

6. The method of claim 5 , wherein a second thread pool set of the plurality of thread pool sets comprises one or more threads configured to perform physics simulations, wherein the second thread pool set comprises a second number of threads, wherein the second number of threads is different than the first number of threads, wherein the second number of threads is based on a set of processing requirements of threads configured to perform physics simulations.

7. The method of claim 6 , wherein a third thread pool set of the plurality of thread pool sets comprises one or more threads configured to process sound effects, wherein the third thread pool set comprises a third number of threads, wherein the third number of threads is different than the first number of threads and the second number of threads, wherein the third number of threads is based on a set of processing requirements of threads configured to process sound effects.

8. A processor comprising:

a set of processing resources; and

scheduling logic for performing two-tiered load balancing, wherein the scheduling logic is configured to:

employ a first-tier macro-dynamic load balancing comprising:

dividing a plurality of processing threads into a plurality of distributed thread pool sets, wherein each thread pool set comprises a respective number of threads;

allocating system resources among the plurality of thread pool sets receiving a set of tasks to be executed, wherein the macro-dynamic load balancing allows for a non-uniform allocation of system resources among the plurality of thread pool sets;

identifying a thread type for the set of tasks;

determining if a thread pool set is available corresponding to the identified thread type for the set of tasks; and

reallocating resources as necessary to ensure that an appropriate thread pool set is available for the identified thread type, wherein reallocating resources comprises modifying the respective number of threads in the appropriate thread pool set based a set of processing requirements of the set of tasks; and

employ a second-tier micro-dynamic load balancing comprising:

routing the set of tasks to the appropriate thread pool set based on the thread type;

adding the set of tasks to a shared workset of the appropriate thread pool set; and

executing the tasks of the shared workset.

9. The processor of claim 8 , wherein the scheduling logic is configured to allocate processing resources among the plurality of thread pool sets is based on one or more parameters of system performance, wherein allocating system resources within the plurality of thread pool sets is based on one or more parameters of system performance.

10. The processor of claim 8 , wherein the scheduling logic is configured to further reallocate processing resources by:

decreasing a set of processing resources available to a thread pool set, thereby freeing up the set of processing resources;

creating a new thread pool set; and

allocating the set of processing resources previously freed up to the new thread pool set.

11. The processor of claim 8 , wherein the scheduling logic is configured to further reallocate processing resources by:

decreasing a set of resources available to a thread pool set, thereby freeing up the set of system resources; and

allocating the set of system resources previously freed up to another, already existing, thread pool set.

12. The processor of claim 8 , wherein a first thread pool set of the plurality of thread pool sets comprises one or more threads configured to perform real-time ray tracing, wherein the first thread pool set comprises a first number of threads, wherein the first number of threads is based on a set of processing requirements of threads configured to perform real-time ray tracing.

13. The processor of claim 12 , wherein a second thread pool set of the plurality of thread pool sets comprises one or more threads configured to perform physics simulations, wherein the second thread pool set comprises a second number of threads, wherein the second number of threads is different than the first number of threads, wherein the second number of threads is based on a set of processing requirements of threads configured to perform physics simulations.

14. The processor of claim 13 , wherein a third thread pool set of the plurality of thread pool sets comprises one or more threads configured to process sound effects, wherein the third thread pool set comprises a third number of threads, wherein the third number of threads is different than the first number of threads and the second number of threads, wherein the third number of threads is based on a set of processing requirements of threads configured to process sound effects.

15. A graphics processing system for load balancing, comprising:

one or more computer processors; and

a memory containing a program which, when executed by the one or more computer processors, is configured to perform an operation comprising:

processing resources for processing threads for generating graphics; and

scheduling logic for performing two-tiered load balancing, wherein the scheduling logic is configured to:

employ a first-tier macro-dynamic load balancing employ a first-tier macro-dynamic load balancing comprising:

dividing a plurality of processing threads into a plurality of distributed thread pool sets, wherein each thread pool set comprises a respective number of threads;

allocating system resources among the plurality of thread pool sets receiving a set of tasks to be executed, wherein the macro-dynamic load balancing allows for a non-uniform allocation of system resources among the plurality of thread pool sets;

identifying a thread type for the set of tasks;

determining if a thread pool set is available corresponding to the identified thread type for the set of tasks; and

reallocating resources as necessary to ensure that an appropriate thread pool set is available for the identified thread type, wherein reallocating resources comprises modifying the respective number of threads in the appropriate thread pool set based a set of processing requirements of the set of tasks; and

employ a second-tier micro-dynamic load balancing comprising:

routing the set of tasks to the appropriate thread pool set based on the thread type;

adding the set of tasks to a shared workset of the appropriate thread pool set; and

executing the tasks of the shared workset.

16. The system of claim 15 , wherein the scheduling logic is configured to allocate processing resources among the plurality of thread pool sets is based on one or more parameters of system performance, wherein allocating system resources within the plurality of thread pool sets is based on one or more parameters of system performance.

17. The system of claim 15 , wherein the scheduling logic is configured to further reallocate processing resources by:

decreasing a set of processing resources available to a thread pool set, thereby freeing up the set of processing resources;

creating a new thread pool set; and

allocating the set of processing resources previously freed up to the new thread pool set.

18. The system of claim 15 , wherein the scheduling logic is configured to further reallocate processing resources by:

decreasing a set of resources available to a thread pool set, thereby freeing up the set of system resources; and

allocating the set of system resources previously freed up to another, already existing, thread pool set.

19. The system of claim 15 , wherein a first thread pool set of the plurality of thread pool sets comprises one or more threads configured to perform real-time ray tracing, wherein the first thread pool set comprises a first number of threads, wherein the first number of threads is based on a set of processing requirements of threads configured to perform real-time ray tracing.

20. The system of claim 19 , wherein a second thread pool set of the plurality of thread pool sets comprises one or more threads configured to perform physics simulations, wherein the second thread pool set comprises a second number of threads, wherein the second number of threads is different than the first number of threads, wherein the second number of threads is based on a set of processing requirements of threads configured to perform physics simulations, wherein a third thread pool set of the plurality of thread pool sets comprises one or more threads configured to process sound effects, wherein the third thread pool set comprises a third number of threads, wherein the third number of threads is different than the first number of threads and the second number of threads, wherein the third number of threads is based on a set of processing requirements of threads configured to process sound effects.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2008
From: KUPFERSCHMIDT, MARK GARY; SCHARDT, PAUL EMERY; SHEARER, ROBERT ALLEN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 020365/0136 →
Continuity (1)
Related Publication 20090183167A1 · Jul 16, 2009