IP Library Granted Patent US 9,946,574
Granted Patent B2
US 9,946,574 · App. 14/987,444 · Granted Apr 17, 2018

System for adaptive determination of computing resources and method therefor

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,946,574
App. No.
14/987,444
Granted
Apr 17, 2018
Kind
B2
Abstract

A system and method for adaptive determination of computing resources is presented. Sometimes, computing jobs are to be allocated among a set of computers. Historical information regarding input data size and output data size is retrieved. Capacity information about each machine is retrieved. A weighted function is used to calculate a desired allocation of computing resources based on historical input data size and output data size. Computing resources are allocated based on the calculated allocation. The computing job can be performed on the allocated computing resources. Other embodiments also are disclosed.

Claims (104)

1. A system comprising:

one or more processors; and

one or more non-transitory computer-readable media storing computing instructions configured to run on the one or more processors and perform acts of:

receiving first data regarding historical data of input size for a particular computing task;

receiving second data regarding historical data of output size for the particular computing task;

receiving capacity data indicating a capacity of each computing machine of a set of computing machines;

determining a desired number of computing machines of the set of computing machines to assign to a computing job in view of the first data, the second data, and the capacity data; and

allocating the desired number of computing machines of the set of computing machines to the computing job;

wherein:

determining the desired number of computing machines of the set of computing machines to assign to the computing job comprises:

using a function to determine the desired number of computing machines of the set of computing machines based on the historical data of input size and the historical data of output size;

the function is further based on the capacity of each computing machine of the set of computing machines; and

the function has a form:

n

vm

=

N

o

N

i

R

t

×

N

,

where N o is data regarding the historical data of input size for the particular computing task, N i is data regarding the historical data of output size for the particular computing task, R t is a capacity of a single computing machine of the set of computing machines, and N is a size of current input data of the computing job.

2. The system of claim 1 , wherein:

a weighting is applied to the function to give greater weight to at least a portion of at least one of (1) the historical data of input size for the particular computing task or (2) the historical data of output size for the particular computing task, whichever is more recent in time.

3. The system of claim 2 , wherein:

the weighting is an exponential factor.

4. The system of claim 1 , wherein:

each computing machine of the set of computing machines is a virtual machine.

5. The system of claim 1 , wherein:

a weighting is applied to the function to give greater weight to at least a portion of at least one of (1) the historical data of input size for the particular computing task or (2) the historical data of output size for the particular computing task, whichever is more recent in time;

the weighting is an exponential factor; and

each computing machine of the set of computing machines is a virtual machine.

6. A method comprising:

receiving first data regarding historical data of input size for a particular computing task;

receiving second data regarding historical data of output size for the particular computing task;

receiving capacity data indicating a capacity of each computing machine of a set of computing machines;

determining a desired number of computing machines of the set of computing machines to assign to a computing job in view of the first data, the second data, and the capacity data; and

allocating the desired number of computing machines of the set of computing machines to the computing job;

wherein:

determining the desired number of computing machines of the set of computing machines to assign to the computing job comprises:

using a function to determine the desired number of computing machines of the set of computing machines based on the historical data of input size and the historical data of output size;

the function is further based on the capacity of each computing machine of the set of computing machines; and

the function has a form:

n

vm

=

N

o

N

i

R

t

×

N

,

where N o is data regarding the historical data of input size for the particular computing task, N i is data regarding the historical data of output size for the particular computing task, R t is a capacity of a single computing machine of the set of computing machines, and N is a size of current input data of the computing job.

7. The method of claim 6 , wherein:

a weighting is applied to the function to give greater weight to at least a portion of at least one of (1) the historical data of input size for the particular computing task or (2) the historical data of output size for the particular computing task, whichever is more recent in time.

8. The method of claim 7 , wherein:

the weighting is an exponential factor.

9. The method of claim 6 , wherein:

each computing machine of the set of computing machines is a virtual machine.

10. The method of claim 6 , wherein:

a weighting is applied to the function to give greater weight to at least a portion of at least one of (1) the historical data of input size for the particular computing task or (2) the historical data of output size for the particular computing task, whichever is more recent in time;

the weighting is an exponential factor; and

each computing machine of the set of computing machines is a virtual machine.

11. A non-transitory computer-readable storage medium having data stored therein representing software executable by a computer, the non-transitory computer-readable storage medium comprising:

instructions for receiving first data regarding historical data of input size for a particular computing task;

instructions for receiving second data regarding historical data of output size for the particular computing task;

instructions for receiving capacity data indicating a capacity of each computing machine of a set of computing machines;

instructions for determining a desired number of computing machines of the set of computing machines to assign to a computing job in view of the first data, the second data, and the capacity data; and

instructions for allocating the desired number of computing machines of the set of computing machines to the computing job;

wherein:

determining the desired number of computing machines of the set of computing machines to assign to the computing job comprises:

using a function to determine the desired number of computing machines of the set of computing machines based on the historical data of input size and the historical data of output size;

the function is further based on the capacity of each computing machine of the set of computing machines; and

the function has a form:

n

vm

=

N

o

N

i

R

t

×

N

,

where N o is data regarding the historical data of input size for the particular computing task, N i is data regarding the historical data of output size for the particular computing task, R t is a capacity of a single computing machine of the set of computing machines, and N is a size of current input data of the computing job.

12. The non-transitory computer-readable storage medium of claim 11 , wherein:

a weighting is applied to the function to give greater weight to at least a portion of at least one of (1) the historical data of input size for the particular computing task or (2) the historical data of output size for the particular computing task, whichever is more recent in time;

the weighting is an exponential factor; and

each computing machine of the set of computing machines is a virtual machine.

13. The non-transitory computer-readable storage medium of claim 11 , wherein a weighting is applied to the function to give greater weight to at least a portion of at least one of (1) the historical data of input size for the particular computing task or (2) the historical data of output size for the particular computing task, whichever is more recent in time.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the weighting is an exponential factor.

15. The non-transitory computer-readable storage medium of claim 11 , wherein each computing machine of the set of computing machines is a virtual machine.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2018
From: WAL-MART STORES, INC.
To: WALMART APOLLO, LLC
Reel/Frame 045817/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2017
From: WAN, SHENGHUA; CHANDRAN, PRIJITH; SRIVASTAVA, VARUN
To: WAL-MART STORES, INC.
Reel/Frame 044388/0741 →