IP Library Granted Patent US 7,870,554
Granted Patent B2
US 7,870,554 · App. 11/371,634 · Granted Jan 11, 2011

Process scheduler employing ordering function to schedule threads running in multiple adaptive partitions

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 7,870,554
App. No.
11/371,634
Granted
Jan 11, 2011
Kind
B2
Abstract

A system includes a processor, one or more memory storage units, and software code stored in the memory storage units. The software code is executable by the processor to generate a plurality of adaptive partitions that are each associated with one or more process threads. Each of adaptive partition has one or more corresponding assigned scheduling attributes. The software code includes a scheduling system for selectively allocating the processor to run process threads based on a comparison between ordering function values for each adaptive partition. Ordering function values are calculated based on scheduling attributes of the corresponding adaptive partition. A critical ordering function value also may be calculated and used to determine the proper manner of billing an associated adaptive partition for the processor allocation used to run its associated critical threads. Methods of implementing various aspects of such a system are also set forth.

Claims (55)

1. A system comprising:

a processor;

one or more memory storage units; and

software code stored in the one or more memory storage units,

where the software code is executable by the processor to generate a plurality of adaptive partitions, where one or more process threads are associated with each adaptive partition and each process thread has a corresponding priority value within the associated adaptive partition, where each of the plurality of adaptive partitions has one or more corresponding scheduling attributes, where the one or more corresponding scheduling attributes of each of the plurality of adaptive partitions comprise a guaranteed budget corresponding to a guaranteed amount of processor allocation that may be used to run the one or more process threads associated with the adaptive partition, and where execution of each process thread of the one or more process threads of the associated adaptive partition is individually attributed and accounted against one or more of the scheduling attributes of the associated adaptive partition,

where the software code further comprises a scheduling system executable by the processor for selectively allocating the processor to run the process threads of the plurality of adaptive partitions based on a comparison between ordering function values of the plurality of adaptive partitions, and

where the ordering function value for each adaptive partition is calculated using variables respectively associated with each adaptive partition, where the variables comprise two or more variables comprising

(a) whether the adaptive partition has available guaranteed budget,

(b) whether the adaptive partition has available critical budget,

(c) the corresponding priority value of the process thread associated with the adaptive partition having a highest corresponding priority value that is ready to run,

(d) a relative fraction of the guaranteed budget used during an averaging window over which the guaranteed budget is assigned, and

(e) a current rate of processor consumption by the adaptive partition,

where the ordering function value generated for the adaptive partition is dependent on an amount of the available guaranteed budget of the adaptive partition.

2. The system of claim 1 , where the processor comprises a symmetric multiprocessor.

3. The system of claim 1 , where an adaptive partition of the plurality of adaptive partitions is assigned a critical budget when the adaptive partition is associated with a critical thread.

4. The system of claim 1 , where the two or more variables include whether the adaptive partition has the available critical budget.

5. The system of claim 1 , where the two or more variables include whether the adaptive partition has the available guaranteed budget.

6. The system of claim 5 , where the scheduling system microbills the guaranteed time budget of an adaptive partition of the plurality of adaptive partitions for a processor allocation used to run the one or more process threads associated with the adaptive partition.

7. The system of claim 1 , where the two or more variables include the current rate of processor consumption used to run the one or more process threads associated with the adaptive partition.

8. The system of claim 1 , where the two or more variables include the relative fraction of guaranteed budget used during the averaging window over which the guaranteed budget is assigned.

9. A method of operating a processing system to execute scheduling system software stored in a memory of the processing system, where the processing system includes a processor that executes the scheduling system software stored in the memory where the processor executes the scheduling system software stored in memory to perform operations comprising:

generating a plurality of adaptive partitions;

associating one or more process threads with each adaptive partition, where each of the one or more process threads has a corresponding priority value within the adaptive partition;

executing the process scheduler software to assign scheduling attributes to each adaptive partition, where the scheduling attributes of each adaptive partition comprise a guaranteed budget corresponding to a guaranteed amount of processor allocation that may be used to run the one or more process threads associated with the adaptive partition, and where execution of each process thread of the one or more process threads of the adaptive partition is individually attributed to and accounted against one or more of the scheduling attributes of the adaptive partition;

generating an ordering function value for each adaptive partition based on the scheduling attributes of the adaptive partition, where the ordering function value for each adaptive partition is determined using variables respectively associated with each adaptive partition, where the variables include two or more variables comprising

(a) whether the adaptive partition has available guaranteed budget,

(b) whether the adaptive partition has available critical budget,

(c) the corresponding priority value of the process thread associated with the adaptive partition having a highest corresponding priority value that is ready to run,

(d) a relative fraction of the guaranteed budget used during an averaging window over which the guaranteed budget is assigned, and

(e) a current rate of processor consumption by the adaptive partition; and

selectively allocating the processor to run the process threads of the plurality of adaptive partitions based on a comparison between the ordering function values of the plurality of adaptive partitions,

where the ordering function value generated for the adaptive partition is dependent on an amount of the available guaranteed budget of the adaptive partition.

10. The method of claim 9 , where the ordering function value that is generated for an adaptive partition of the plurality of adaptive partitions is dependent on whether the adaptive partition has the available critical budget.

11. The method of claim 10 , where generation of the ordering function value for an adaptive partition of the plurality of adaptive partitions associated with a critical thread is dependent on the scheduling attributes for the adaptive partition comprising:

a run priority level for the critical thread; and

a ready state of the critical thread.

12. The method of claim 11 , where the ordering function value that is generated for the adaptive partition associated with the critical thread is dependent on whether the run priority level of the critical thread is a highest run priority level of any ready process thread associated with the adaptive partition.

13. The method of claim 9 , where the scheduling system microbills the guaranteed time budget of an adaptive partition of the plurality of adaptive partitions for a processor allocation used to run the one or more process threads associated with the adaptive partition.

14. The method of claim 9 , where the ordering function value generated for an adaptive partition of the plurality of adaptive partitions is dependent on a rate of processor time consumption used to run the one or more process threads associated with the adaptive partition.

15. The method of claim 9 , where the ordering function value generated for an adaptive partition of the plurality of adaptive partitions is dependent on the relative fraction of the guaranteed budget used during the averaging window over which the guaranteed budget is assigned.

16. One or more memory storage units comprising:

software code executable by a processor to generate a plurality of adaptive partitions, where one or more process threads are associated with each adaptive partition and each process thread has a corresponding priority value within the associated adaptive partition, where each of the plurality of adaptive partitions has one or more corresponding scheduling attributes, where the one or more corresponding scheduling attributes of each the plurality of adaptive partitions comprise a guaranteed budget corresponding to a guaranteed amount of processor allocation that may be used to run the one or more process threads associated with the adaptive partition, and where execution of each process thread of the one or more process threads of each adaptive partition is individually attributed and accounted against one or more of the scheduling attributes of the associated adaptive partition; and

a scheduling system in the software code, where the scheduling system is executable by the processor for selectively allocating the processor to run the process threads based on a comparison between ordering function values calculated for the plurality of adaptive partition, and where the ordering function value for each adaptive partition is calculated using variables respectively associated with each adaptive partition, where the variables include two or more variables comprising

(a) whether the adaptive partition has available guaranteed budget,

(b) whether the adaptive partition has available critical budget, the corresponding priority value of the process thread associated with the adaptive partition having a highest corresponding priority value that is ready to run,

(c) a relative fraction of the guaranteed budget used during an averaging window over which the guaranteed budget is assigned, and

(d) a current rate of processor consumption by the adaptive partition,

where the ordering function value generated for the adaptive partition is dependent on an amount of the available guaranteed budget of the adaptive partition.

17. The one or more memory storage units of claim 16 , where the ordering function value for an adaptive partition of the plurality of adaptive partitions is dependent on whether the adaptive partition has the available critical budget.

18. The one or more memory storage units of claim 16 , where the ordering function value for an adaptive partition of the plurality of adaptive partitions is further dependent on whether the adaptive partition is associated with a critical thread, whether the critical thread is in a ready state, and whether the critical thread has a priority level that is a highest run priority level of any ready process thread associated with the adaptive partition.

19. The one or more memory storage units of claim 16 , where the scheduling attributes of each adaptive partition comprise a guaranteed time budget corresponding to a guaranteed amount of processor allocation that may be used to run the process threads associated with the adaptive partition, and where the ordering function value of an adaptive partition is dependent on an available amount of the guaranteed time budget of the adaptive partition.

20. The one or more memory storage units of claim 19 , where the scheduling system microbills the guaranteed time budget of an adaptive partition of the plurality of adaptive partitions for a processor allocation used to run one or more process threads associated with the adaptive partition.

21. The one or more memory storage units of claim 16 , where the ordering function value of a given adaptive partition of the plurality of adaptive partitions is dependent on the current rate of processor consumption used to run the one or more process threads associated with the given adaptive partition.

22. The one or more memory storage units of claim 16 , where the ordering function value of a given adaptive partition of the plurality of adaptive partitions is dependent on the current rate of processor time consumption used to run the one or more process threads associated with the given adaptive partition.

23. The one or more memory storage units of claim 16 , where the ordering function value of a given adaptive partition of the plurality of adaptive partitions is dependent on the relative fraction of the guaranteed budget used during the averaging window over which the guaranteed budget is assigned.

Assignments (13)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: QNX SOFTWARE SYSTEMS LIMITED
To: 8758271 CANADA INC.
Reel/Frame 032607/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: 8758271 CANADA INC.
To: 2236008 ONTARIO INC.
Reel/Frame 032607/0674 →
CHANGE OF ADDRESS Recorded Feb 27, 2012
From: QNX SOFTWARE SYSTEMS LIMITED
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 027768/0961 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: 7801769 CANADA INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 026883/0553 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: 7801769 CANADA INC.
Reel/Frame 026883/0544 →
CHANGE OF SEAT Recorded Dec 1, 2010
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 025434/0304 →
REGISTRATION Recorded Dec 1, 2010
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 025434/0307 →
PARTIAL RELEASE OF SECURITY INTEREST Recorded Jun 3, 2010
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024483/0045 →
SECURITY AGREEMENT Recorded May 8, 2009
From: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; BECKER SERVICE-UND VERWALTUNG GMBH; CROWN AUDIO, INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS (MICHIGAN), INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS HOLDING GMBH; HARMAN BECKER AUTOMOTIVE SYSTEMS, INC.; HARMAN CONSUMER GROUP, INC.; HARMAN DEUTSCHLAND GMBH; HARMAN FINANCIAL GROUP LLC; HARMAN HOLDING GMBH & CO. KG; HARMAN MUSIC GROUP, INCORPORATED; HARMAN SOFTWARE TECHNOLOGY INTERNATIONAL BETEILIGUNGS GMBH; HARMAN SOFTWARE TECHNOLOGY MANAGEMENT GMBH; HBAS INTERNATIONAL GMBH; HBAS MANUFACTURING, INC.; INNOVATIVE SYSTEMS GMBH NAVIGATION-MULTIMEDIA; JBL INCORPORATED; LEXICON, INCORPORATED; MARGI SYSTEMS, INC.; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS CANADA CORPORATION; QNX SOFTWARE SYSTEMS CO.; QNX SOFTWARE SYSTEMS GMBH; QNX SOFTWARE SYSTEMS GMBH & CO. KG; QNX SOFTWARE SYSTEMS INTERNATIONAL CORPORATION; QNX SOFTWARE SYSTEMS, INC.; XS EMBEDDED GMBH (F/K/A HARMAN BECKER MEDIA DRIVE TECHNOLOGY GMBH)
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 022659/0743 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2008
From: DODGE, DAN; DANKO, ATTILLA; MARINEAU-MES, SEBASTIEN; VAN DER VEEN, PETER; BURGESS, COLIN; FLETCHER, THOMAS; STECHER, BRIAN
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 020803/0694 →