IP Library Granted Patent US 7,437,728
Granted Patent B2
US 7,437,728 · App. 10/460,527 · Granted Oct 14, 2008

System and method for CPU bandwidth allocation

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,437,728
App. No.
10/460,527
Granted
Oct 14, 2008
Kind
B2
Abstract

An automatic resource management service implements a policy to automatically control resource usage by processes running on a computer. A policy expresses criteria for identifying process sets, and imposes allocations and sub-allocations or resource amounts to be used by given process sets and subsets. Exclusion lists are used in an embodiment of the invention to exclude processes from management by the management service. In an embodiment of the invention the resources whose use is managed are CPU resources, although in further embodiments the managed resources include memory resources as well.

Claims (32)

1. A method of automatically managing resource usage for a plurality of processes running on a computing device, each process being associated with a respective system priority that defines the process's priority of access to resources, the method comprising:

retrieving a resource usage policy defining a plurality of desired resource allocations for a respective plurality of process sets;

determining the current resource usage of processes in a particular process set;

determining the past resource usage of processes in the particular process set during a predetermined past period;

if the current resource usage is less than the resource allocation for the particular process set, and if the past resource usage is less than the resource allocation for the particular process set, raising priorities associated with all processes of the particular process set by a first increment;

if the current resource usage is less than the resource allocation for the particular process set, and if the past resource usage is not less than the resource allocation for the particular process set, raising the priorities associated with all processes of the particular process set by a second increment, wherein the second increment is less than the first increment; and

automatically lowering the resource allocation for the particular process set by a decrement amount and raising the resource allocation for at least one other process set by the decrement amount, by:

identifying a plurality of sibling process sets that share a common parent set with the particular process set, each of the plurality of sibling process sets having a desired resource allocation defined by the policy; and

assigning a portion of the resource allocation of the particular set to each sibling process set to create respective resource reallocations for the sibling process sets, such that the mutual proportions of the resource reallocations of the sibling process sets are substantially the same as the resource allocations of the sibling process sets.

2. The method according to claim 1 further comprising:

waiting for expiration of a predefined period;

upon expiration of the predefined period, determining the current resource usage of the sibling processes;

identifying an underutilizing sibling process set that is using fewer resources than permitted by its resource reallocation; and

distributing a portion of the resource reallocation of the underutilizing sibling process to the other sibling processes.

3. The method according to claim 1 wherein the resource usage policy comprises:

one or more criteria sets, each criteria set defining criteria for process membership in one or more respective process sets; and

one or more allocations, each allocation defining a desired resource usage for at least one of the one or more process sets.

4. The method according to claim 3 wherein the criteria for process membership in one or more respective process sets include at least one criterion selected from the group consisting of a path used to initiate the process, a name of a program creating the process, a command line option used to run the process, a command line parameter used to run the process, a user name of an account associated with the process, and a group name associated with a group to which a user associated with the process belongs.

5. The method according to claim 3 wherein the one or more allocations define a portion of CPU resources to be used by the at least one of the one or more process sets.

6. The method according to claim 3 wherein the one or more allocations define a type and portion of memory resources to be used by the at least one of the one or more process sets.

7. The method according to claim 1 further comprising obtaining one or more exclusion lists, the one or more exclusion lists defining one or more processes whose resource usage is not managed.

8. The method according to claim 7 wherein the one or more exclusion lists comprise a user exclusion list and a system exclusion list, the user exclusion list being specified by a user and the system exclusion list being unmodifiable by the user.

9. The method according to claim 1 wherein the policy obtained via the data interface is specified by a user.

10. A computer-readable medium having stored thereon computer-executable instructions for executing the steps of:

retrieving a resource usage policy defining a plurality of desired resource allocations for a respective plurality of process sets;

determining the current resource usage of processes in a particular process set;

determining the past resource usage of processes in the particular process set during a predetermined past period;

if the current resource usage is less than the resource allocation for the particular process set, and if the past resource usage is less than the resource allocation for the particular process set, raising priorities associated with all processes of the particular process set by a first increment;

if the current resource usage is less than the resource allocation for the particular process set, and if the past resource usage is not less than the resource allocation for the particular process set, raising the priorities associated with all processes of the particular process set by a second increment, wherein the second increment is less than the first increment; and

automatically lowering the resource allocation for the particular process set by a decrement amount and raising the resource allocation for at least one other process set by the decrement amount, by:

identifying a plurality of sibling process sets that share a common parent set with the particular process set, each of the plurality of sibling process sets having a desired resource allocation defined by the policy; and

assigning a portion of the resource allocation of the particular set to each sibling process set to create respective resource reallocations for the sibling process sets, such that the mutual proportions of the resource reallocations of the sibling process sets are substantially the same as the resource allocations of the sibling process sets.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 12, 2003
From: STACKHOUSE, CHRISTIAN PAUL; AGARWAL, ABHISHEK; BABU T.V., NARENDRA; GUPTA, SUJOY; PRIYA A.B., PADMA; VAIDYANATHAN, PARAMESH; VALIYAPARAMBIL, MANOJ K.
To: MICROSOFT CORPORATION
Reel/Frame 014182/0376 →