IP Library Granted Patent US 8,108,871
Granted Patent B2
US 8,108,871 · App. 11/034,685 · Granted Jan 31, 2012

Controlling computer resource utilization

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,108,871
App. No.
11/034,685
Granted
Jan 31, 2012
Kind
B2
Abstract

In one embodiment, a method comprises (i) identifying a group associated with an executable that is using a resource of a computer system, (ii) decrementing a group utilization limit for the resource when the group utilization limit is greater than zero, (iii) decrementing a utilization reserve for the group when the group utilization limit for the resource equals zero, wherein operations (i)-(iii) are performed by a software routine responsive to system interrupts, and (iv) scheduling another executable to use the resource, wherein the scheduling verifies that (a) the another executable belongs to a group that has a non-zero group utilization limit for the resource or (b) the another executable belongs to a group that has a non-zero utilization reserve.

Claims (63)

1. A method comprising:

determining a number of resource-utilization units of resources of a computer system to be allocated among plural groups for an allocation period, each of said groups containing one or more jobs to be executed using said resources;

assigning group allocations of said resource-utilization units to each of said groups so that each of said groups is assigned a respective group number of said resource-allocation units, said allocations including,

for each of said groups, a respective group-reserve allocation of a respective positive integer group-reserve number less than the respective group number of said resource-utilization units, and

for each combination of one of said groups and one of said resources, a respective group-resource allocation of a respective non-negative integer group-resource number of said resource-utilization units, at least one of said group-resource allocations consisting of a positive integer group-resource number of said resource-utilization units; and

switching off a job from one of said resources at a time during said allocation period determined in part by said allocations, wherein

the respective group number is equal to the sum of the respective group-reserve number and the respective group-resource numbers;

the respective group number represents a total number of resource-utilization units allocated to that group;

for each of said resources, the respective group-resource number represents that portion of the respective group number associated with that resource and allocated to that group; and

the respective group-reserve number represents that portion of the respective group number allocated to that group but not associated with any of said resources.

2. A method as recited in claim 1 further comprising, for each of said one or more jobs executing on a respective one of said resources during said allocation period, after each consumption of one of said resource-utilization units by the job:

determining whether a respective group-resource count is greater than zero, the group-resource count being set so that, at the beginning of said allocation period, it equals the number of said resource-utilization units in the group-resource allocation;

if so, decrementing the group-resource count; and

if not, determining whether a group-reserve count is greater than zero, the group-reserve count having been set so that, at the beginning of said allocation period, it equals the number of resource-utilization units of the respective group-resource allocation;

if so, decrementing a group-reserve count for the group; and

if not, switch the job off the resource.

3. A method as recited in claim 2 further comprising, after said switching off, executing another job on the resource only if either:

the group-resource count for the combination of the group to which said another job belongs and the resource is non-zero; or

the group-reserve count for the group to which said another job belongs is non-zero.

4. A method as recited in claim 1 wherein said resources are processors, said jobs are executables, and said resource-utilization units are processor ticks.

5. A computer system comprising:

plural hardware resources for executing jobs, said resources being divisible into temporal resource-utilization units;

an allocator module configured to

determine a number of said temporal resource-utilization units to be allocated among plural groups for an allocation period, each of said groups containing one or more jobs to be executed using said resources, each of said jobs belonging to exactly one of said groups;

assign group allocations of said resource-utilization units to each of said groups so that each of said groups is assigned a respective group number of said resource-allocation units, said allocations including,

for each of said groups, a respective group-reserve allocation of a respective positive integer group-reserve number less than the respective group number of said temporal resource-utilization units, and

for each combination of one of said groups and one of said resources, a respective group-resource allocation of a respective non-negative integer group-resource number of said temporal resource-utilization units, at least one of said group-resource allocations consisting of a positive integer group-res0urce number of said temporal resource-utilization units;

an accountant module configured to switch off a job from one of said resources at a time during said allocation determined in part by said allocations, wherein, for each of said groups:

the respective group number is equal to the sum of the respective group-reserve number and the respective group-resource numbers;

the respective group number represents a total number of resource-utilization units allocated to that group;

for each of said resources, the respective group-resource number represents that portion of the respective group number associated with that resource and allocated to that group; and

the respective group-reserve number represents that portion of the respective group number allocated to that group but not associated with any of said resources.

6. A computer system as recited in claim 5 wherein said accountant module is further configured to, during said allocation period, for each of said one or more jobs executing on a respective one of said resources, after each consumption of one of said temporal resource-utilization units by the job:

determine whether a respective group-resource count is greater than zero, said group-resource count being set so that, at the beginning of said allocation period, it is equal to the number of said temporal resource-utilization units of the respective group-resource allocation;

if so, decrement said group-resource count; and

if not, determine whether a respective group-reserve count is greater than zero, the group-reserve count having been set so that, at the beginning of said allocation period, it is equal to the number of temporal resource-utilization units of the respective group-resource allocation for the group;

if so, decrement the group-reserve count; and

if not, switch the job off the resource.

7. A computer system as recited in claim 6 further comprising a scheduler module configured to, after said switching off, execute another job on the resource only if either:

the group-resource count for the combination of the group to which said another job belongs and the resource is non-zero; or

the group-reserve count for the group to which said another job belongs is non-zero.

8. A computer system as recited in claim 5 wherein said resources are processors, said jobs are executables, and said temporal resource-utilization units are processor ticks.

9. A computer product comprising non-transitory computer-readable storage media encoded with:

an allocator software module configured to, when executed by a processor,

determine a number of resource-utilization units of resources of a computer system to be allocated among plural groups for an allocation period, each of said groups containing one or more jobs to be executed using said resources;

assign group allocations of said resource-utilization units to each of said groups so that each of said groups is assigned a respective group number of said resource-allocation units, said allocations including,

for each of said groups, a respective group-reserve allocation of a respective positive integer group-reserve number less than the respective group number of said resource-utilization units, and

for each combination of one of said groups and one of said resources, a respective group-resource allocation of a respective non-negative integer group-resource number of said resource-utilization units, at least one of said group-resource allocations consisting of a positive integer resource number of said resource-utilization units;

an accountant software module configured to, when executed by said processor switch off a job from one of said resources at a time during said allocation period determined in part by said allocations, wherein for each of said groups:

the respective group number is equal to the sum of the respective group-reserve number and the respective group-resource numbers;

the respective group number represents a total number of resource-utilization units allocated to that group;

for each of said resources, the respective group-resource number represents that portion of the respective group number associated with that resource and allocated to that group; and

the respective group-reserve number represents that portion of the respective group number allocated to that group but not associated with any of said resources.

10. A computer product as recited in claim 9 wherein said resource-utilization units are temporal resource-utilization units and said accountant software module is further configured to, for each of said one or more jobs executing on a respective one of said resources, after the consumption of each said resource-utilization units by the job:

determine whether a group-resource count is greater than zero, the group-resource count being set so that it equals the number of resource-utilization units of the respective group-resource allocation at the beginning of said allocation period;

if so, decrement the group-resource count; and

if not, determine whether a group-reserve count is greater than zero, the group-reserve count being set so that it equals the number of resource-utilization units of the respective group-reserve allocation at the beginning of said allocation period;

if so, decrement the group-reserve count; and

if not, switch the job off the resource.

11. A computer product as recited in claim 10 wherein said media is further encoded with a scheduler module configured to, when executed by a processor, after said switching off, execute another job on the resource during said allocation period only if either:

the group-resource count for the combination of the group to which said another job belongs and the resource is non-zero; or

the group-reserve count for the group to which said another job belongs is non-zero.

12. A computer system product as recited in claim 9 wherein said resources are processors, said jobs are executables, and said resource-utilization units are processor ticks.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2021
From: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP; HEWLETT PACKARD ENTERPRISE COMPANY
To: VALTRUS INNOVATIONS LIMITED
Reel/Frame 055360/0424 →
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 →