IP Library › Granted Patent US 10,558,501
Granted Patent B2
US 10,558,501 · App. 15/395,225 · Granted Feb 11, 2020

Resource allocation for computer processing

Inventors: Robert Bradshaw (Seattle, WA); Rafael de Jesús Fernández Moctezuma (Kirkland, WA); Daniel Mills (Mountain View, CA); Samuel Green McVeety (Seattle, WA); Samuel Carl Whittle (Seattle, WA); Andrei Maksimenka (Sammamish, WA); Cosmin Ionel Arad (Mountain View, CA); Mark Brian Shields (Seattle, WA); Harris Samuel Nover (Mountain View, CA); Manuel Alfred Fahndrich (Seattle, WA); Jeffrey Paul Gardner (Seattle, WA); Mikhail Shmulyan (Seattle, WA); Reuven Lax (Seattle, WA); Ahmet Altay (Mountain View, CA); Craig D. Chambers (Seattle, WA)
Assignee: Google LLC
G06F9/505G06F9/5016G06F2209/508H04L67/10H04L67/1097
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 10,558,501
App. No.
15/395,225
Filed
Dec 30, 2016
Granted
Feb 11, 2020
Kind
B2
Examiner
LU, KEVIN X
Art Unit
2199
USPC
718/104
Abstract

A job that receives as input a data stream is executed. For the job, it is iteratively determined a backlog growth over a first period of time; a backlog volume; and whether to adjust a quantity of processing resources. For each iteration for which the quantity of processing resources allocated to the job are determined to be adjusted, adjusting the quantity of processing resources allocated to the job. For each iteration for which the quantity of processing resources allocated to the job are determined not to be adjusted, maintaining the quantity of processing resources allocated to the job.

Claims (88)

1. A method implemented in a computer system, the method comprising:

executing, in a computer system that comprises multiple processing resources, a job that receives as input a data stream, wherein the amount of data in the data stream is unbounded;

iteratively determining, for the job:

a backlog growth over a first period of time, wherein the backlog growth is a measure of a growth of unprocessed data in the received data stream that is to be input into the job, and wherein the backlog growth is measured in terms of a change to a data size;

a backlog volume that is a measure of unprocessed data in the received data stream that is to be input into the job, and wherein the backlog volume is measured in terms of a data size;

determining, based on the backlog growth and the backlog volume, whether to adjust a quantity of processing resources allocated to the job, wherein, for an iteration of the determination the backlog growth is determined to be zero or negative and the backlog volume is determined to be at a target;

determining that the quantity of processing resources allocated to the job are determined not to be adjusted in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be at a target;

for each iteration for which the quantity of processing resources allocated to the job are determined to be adjusted, adjusting the quantity of processing resources allocated to the job, wherein adjusting the quantity of processing resources further comprises determining whether to reduce the processing resources and if it is determined to reduce said processing resources determining how far to reduce the allocation of processing resources, wherein processor utilization is used as a proxy of whether the system can handle a next lower level of allocated processing resources; and

for each iteration for which the quantity of processing resources allocated to the job are determined not to be adjusted, maintaining the quantity of processing resources allocated to the job.

2. The method of claim 1 , wherein, for an iteration of the determination:

the backlog growth is determined to be zero or negative;

the backlog volume is determined to be below a target;

determining that the quantity of processing resources allocated to the job are determined to be adjusted in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be below a target; and

wherein adjusting the quantity of processing resources allocated to the job comprises reducing the quantity of processing resources allocated to the job in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be below a target.

3. The method of claim 1 , wherein, for an iteration of the determination:

the backlog growth is determined to be zero or negative;

the backlog volume is determined to be above a target;

determining that the quantity of processing resources allocated to the job are determined to be adjusted in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be above a target; and

wherein adjusting the quantity of processing resources allocated to the job comprises increasing the quantity of processing resources allocated to the job in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be above a target.

4. The method of claim 1 , wherein, for an iteration of the determination:

the backlog growth is determined to be positive;

the backlog volume is determined to be below a target

determining that the quantity of processing resources allocated to the job are determined not to be adjusted in response to the backlog growth being determined to be positive and the backlog volume determined to be below a target.

5. The method of claim 1 , wherein, for an iteration of the determination:

the backlog growth is determined to be positive;

the backlog volume is determined to be not below a target

determining that the quantity of processing resources allocated to the job are determined to be adjusted in response to the backlog growth being determined to be positive and the backlog volume determined to be not below a target; and

wherein adjusting the quantity of processing resources allocated to the job comprises increasing the quantity of processing resources allocated to the job in response to the backlog growth being determined to be positive and the backlog volume determined to be not below a target.

6. The method of claim 1 , wherein units of the data size are at least one of the group consisting of bits, bytes, megabytes, gigabytes, records, and cardinality.

7. The method of claim 1 , wherein units of the data size are at least one of the group consisting of bits, bytes, megabytes, gigabytes, records, and cardinality.

8. The method of claim 1 , the method further comprising:

iteratively determining, for the job, a processor utilization;

wherein iteratively determining whether to adjust a quantity of processing resources allocated to the job is further based on the processor utilization.

9. The method of claim 8 , wherein:

wherein, for an iteration of the determination:

the processor utilization is below a value;

determining that the quantity of processing resources allocated to the job are determined to be adjusted in response to the processor utilization being determined to be below a value; and

wherein adjusting the quantity of processing resources allocated to the job comprises reducing the quantity of processing resources allocated to the job in response to the processor utilization being determined to be below a value.

10. The method of claim 9 , where in reducing the quantity of processing resources allocated to the job in response to the processor utilization being determined to be below a value comprises reducing a discrete number of resources allocated to the job, the discrete number being based on the processor utilization.

11. The method of claim 10 , wherein the discrete number is a number of computer memory disks.

12. The method of claim 1 , wherein determining, based on the backlog growth and the backlog volume, whether to adjust a quantity of processing resources allocated to the job comprises smoothing the determining that results in oscillation of quantity of processing resources allocated to the job.

13. The method of claim 12 , wherein smoothing the determining comprises waiting for a second period of time.

14. The method of claim 12 , wherein smoothing the determining comprises averaging a plurality of determinations whether to adjust a quantity of processing resources allocated to the job.

15. A system comprising:

one or more processors configured to execute computer program instructions; and

one or more computer storage media encoded with computer program instructions that, when executed by one or more processors, cause a computer device to perform operations comprising:

executing, in a computer system that comprises multiple processing resources, a job that receives as input a data stream, wherein the amount of data in the data stream is unbounded;

iteratively determining, for the job:

a backlog growth over a first period of time, wherein the backlog growth is a measure of a growth of unprocessed data in the received data stream that is to be input into the job, and wherein the backlog growth is measured in terms of a change to a data size;

a backlog volume that is a measure of unprocessed data in the received data stream that is to be input into the job, and wherein the backlog volume is measured in terms of a data size;

determining, based on the backlog growth and the backlog volume, whether to adjust a quantity of processing resources allocated to the job, wherein, for an iteration of the determination the backlog growth is determined to be zero or negative and the backlog volume is determined to be at a target;

determining that the quantity of processing resources allocated to the job are determined not to be adjusted in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be at a target;

for each iteration for which the quantity of processing resources allocated to the job are determined to be adjusted, adjusting the quantity of processing resources allocated to the job, wherein adjusting the quantity of processing resources further comprises determining whether to reduce the processing resources and if it is determined to reduce said processing resources determining how far to reduce the allocation of processing resources, wherein a processor utilization is used as a proxy of whether the system can handle a next lower level of allocated processing resources; and

for each iteration for which the quantity of processing resources allocated to the job are determined not to be adjusted, maintaining the quantity of processing resources allocated to the job.

16. The system of claim 15 , wherein, for an iteration of the determination:

the backlog growth is determined to be zero or negative;

the backlog volume is determined to be below a target;

determining that the quantity of processing resources allocated to the job are determined to be adjusted in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be below a target; and

wherein adjusting the quantity of processing resources allocated to the job comprises reducing the quantity of processing resources allocated to the job in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be below a target.

17. The system of claim 15 , wherein, for an iteration of the determination:

the backlog growth is determined to be zero or negative;

the backlog volume is determined to be above a target;

determining that the quantity of processing resources allocated to the job are determined to be adjusted in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be above a target; and

wherein adjusting the quantity of processing resources allocated to the job comprises increasing the quantity of processing resources allocated to the job in response to the backlog growth being determined to be zero or negative and the backlog volume determined to be above a target.

18. The system of claim 15 , wherein, for an iteration of the determination:

the backlog growth is determined to be positive;

the backlog volume is determined to be below a target

determining that the quantity of processing resources allocated to the job are determined not to be adjusted in response to the backlog growth being determined to be positive and the backlog volume determined to be below a target.

19. The system of claim 15 , wherein, for an iteration of the determination:

the backlog growth is determined to be positive;

the backlog volume is determined to be not below a target

determining that the quantity of processing resources allocated to the job are determined to be adjusted in response to the backlog growth being determined to be positive and the backlog volume determined to be not below a target; and

wherein adjusting the quantity of processing resources allocated to the job comprises increasing the quantity of processing resources allocated to the job in response to the backlog growth being determined to be positive and the backlog volume determined to be not below a target.

20. The system of claim 15 , wherein units of the data size are at least one of the group consisting of bits, bytes, megabytes, gigabytes, records, and cardinality.

21. The system of claim 15 , wherein units of the data size are at least one of the group consisting of bits, bytes, megabytes, gigabytes, records, and cardinality.

22. The system of claim 15 , the operations further comprising:

iteratively determining, for the job, a processor utilization;

wherein iteratively determining whether to adjust a quantity of processing resources allocated to the job is further based on the processor utilization.

23. The system of claim 22 , wherein:

wherein, for an iteration of the determination:

the processor utilization is below a value;

determining that the quantity of processing resources allocated to the job are determined to be adjusted in response to the processor utilization being determined to be below a value; and

wherein adjusting the quantity of processing resources allocated to the job comprises reducing the quantity of processing resources allocated to the job in response to the processor utilization being determined to be below a value.

24. The system of claim 23 , where in reducing the quantity of processing resources allocated to the job in response to the processor utilization being determined to be below a value comprises reducing a discrete number of resources allocated to the job, the discrete number being based on the processor utilization.

25. The system of claim 24 , wherein the discrete number is a number of computer memory disks.

26. The system of claim 15 , wherein determining, based on the backlog growth and the backlog volume, whether to adjust a quantity of processing resources allocated to the job comprises smoothing the determining that results in oscillation of quantity of processing resources allocated to the job.

27. The system of claim 26 , wherein smoothing the determining comprises waiting for a second period of time.

28. The system of claim 26 , wherein smoothing the determining comprises averaging a plurality of determinations whether to adjust a quantity of processing resources allocated to the job.

Assignments (2)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2017
From: BRADSHAW, ROBERT; MOCTEZUMA, RAFAEL DE JESÚS FERNÁNDEZ; MILLS, DANIEL; MCVEETY, SAMUEL GREEN; WHITTLE, SAMUEL CARL; MAKSIMENKA, ANDREI; ARAD, COSMIN IONEL; SHIELDS, MARK BRIAN; NOVER, HARRIS SAMUEL; FAHNDRICH, MANUEL ALFRED; GARDNER, JEFFREY PAUL; SHMULYAN, MIKHAIL; LAX, REUVEN; ALTAY, AHMET; CHAMBERS, CRAIG D.
To: GOOGLE INC.
Reel/Frame 041080/0864 →
Continuity (2)
Provisional Application 62303827 · Mar 4, 2016
Related Publication 20170255491A1 · Sep 7, 2017