IP Library Granted Patent US 11,243,819
Granted Patent B1
US 11,243,819 · App. 16/906,553 · Granted Feb 8, 2022

Acquisition and maintenance of compute capacity

Inventor: Timothy Allen Wagner (Seattle, WA)
Assignee: AMAZON TECHNOLOGIES, INC.
G06F9/5055G06F9/45558G06F2009/45562G06F2009/45575G06F2209/5011G06F2209/5013
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 11,243,819
App. No.
16/906,553
Granted
Feb 8, 2022
Kind
B1
Abstract

A system for providing low-latency computational capacity from a virtual compute fleet is provided. The system may be configured to maintain a plurality of virtual machine instances on one or more physical computing devices, wherein the plurality of virtual machine instances comprises a first pool comprising a first sub-pool of virtual machine instances and a second sub-pool of virtual machine instances, and a second pool comprising virtual machine instances used for executing one or more program codes thereon. The first sub-pool and/or the second sub-pool may be associated with one or more users of the system. The system may be further configured to process code execution requests and execute program codes on the virtual machine instances of the first or second sub-pool.

Claims (53)

1. A system, comprising:

one or more processors; and

one or more memories having stored thereon instructions that, when executed, configure the one or more processors to at least:

receive a first request to execute a first program code on behalf of a first user, the request including execution information usable to execute the first program code on compute capacity associated with the first user;

determine, based at least in part on the execution information included in the request, that the compute capacity associated with the first user has an insufficient amount of available compute capacity usable to execute the first program code; and

access permission information associated with the first user, wherein the permission information indicates whether additional compute capacity can be added to the compute capacity associated with the first user;

determine, based at least in part on the permission information associated with the first user, that additional compute capacity can be added to the compute capacity associated with the first user;

cause additional compute capacity to be added to the compute capacity associated with the first user; and

cause the first program code to be executed using the additional compute capacity using the execution information included in the first request.

2. The system of claim 1 , wherein the instructions, when executed, further configure the one or more processors to provide (i) a general pool of virtual machine instances usable to handle code executions on behalf of any of a plurality of users including at least one user other than the first user, and (ii) a dedicated pool of virtual machine instances usable to handle code executions on behalf of only the first user.

3. The system of claim 2 , wherein the virtual machine instances in the general pool does not have the first program code associated with the first user loaded thereon at the time the first request is received, whereas at least one of the virtual machine instances in the dedicated pool has the first program code associated with the first user loaded thereon at the time the first request is received.

4. The system of claim 1 , wherein the instructions, when executed, further configure the one or more processors to:

receive a second request to execute a second program code on behalf of a second user, the second request including information usable to execute the second program code on compute capacity associated with the second user;

determine, based at least in part on the information included in the second request, that the compute capacity associated with the second user has an insufficient amount of available compute capacity usable to execute the second program code; and

determine, based at least in part on permission information associated with the second user, that additional compute capacity cannot be added to the compute capacity associated with the second user; and

cause the second request to be rejected based on there being an insufficient amount of available compute capacity usable to execute the second program code.

5. The system of claim 1 , wherein the instructions, when executed, further configure the one or more processors to acquire the additional compute capacity in the form of one or more virtual machine instances from an instance provisioning service.

6. The system of claim 1 , wherein the instructions, when executed, further configure the one or more processors to receive, via a user interface or a command line interface provided by the system, a request to specify the permission information that indicates that additional compute capacity can be added to the compute capacity associated with the first user.

7. The system of claim 1 , wherein the instructions, when executed, further configure the one or more processors to receive, via a user interface or a command line interface provided by the system, a request to specify a capacity adjustment policy indicating how the compute capacity associated with the first user should be adjusted.

8. A computer-implemented method, comprising:

as implemented by one or more computing devices configured with specific executable instructions,

receiving a first request to execute a first program code on behalf of a first user, the request including execution information usable to execute the first program code on compute capacity associated with the first user;

determining, based at least in part on the execution information included in the request, that the compute capacity associated with the first user has an insufficient amount of available compute capacity usable to execute the first program code; and

accessing permission information associated with the first user, wherein the permission information indicates whether additional compute capacity can be added to the compute capacity associated with the first user;

determining, based at least in part on the permission information associated with the first user, that additional compute capacity can be added to the compute capacity associated with the first user;

adding additional compute capacity to the compute capacity associated with the first user; and

executing the first program code using the additional compute capacity using the execution information included in the first request.

9. The method of claim 8 , further comprising providing (i) a general pool of virtual machine instances usable to handle code executions on behalf of any of a plurality of users including at least one user other than the first user, and (ii) a dedicated pool of virtual machine instances usable to handle code executions on behalf of only the first user.

10. The method of claim 9 , wherein the virtual machine instances in the general pool does not have the first program code associated with the first user loaded thereon at the time the first request is received, whereas at least one of the virtual machine instances in the dedicated pool has the first program code associated with the first user loaded thereon at the time the first request is received.

11. The method of claim 8 , further comprising:

receiving a second request to execute a second program code on behalf of a second user, the second request including information usable to execute the second program code on compute capacity associated with the second user;

determining, based at least in part on the information included in the second request, that the compute capacity associated with the second user has an insufficient amount of available compute capacity usable to execute the second program code; and

determining, based at least in part on permission information associated with the second user, that additional compute capacity cannot be added to the compute capacity associated with the second user; and

rejecting the second request based on there being an insufficient amount of available compute capacity usable to execute the second program code.

12. The method of claim 8 , further comprising acquiring the additional compute capacity in the form of one or more virtual machine instances from an instance provisioning service.

13. The method of claim 8 , further comprising receiving, via a user interface or a command line interface, a request to specify the permission information that indicates that additional compute capacity can be added to the compute capacity associated with the first user.

14. The method of claim 8 , further comprising receiving, via a user interface or a command line interface, a request to specify a capacity adjustment policy indicating how the compute capacity associated with the first user should be adjusted.

15. Non-transitory physical computer storage including computer-executable instructions that, when executed, cause a computing system to at least:

receive a first request to execute a first program code on behalf of a first user, the request including execution information usable to execute the first program code on compute capacity associated with the first user;

determine, based at least in part on the execution information included in the request, that the compute capacity associated with the first user has an insufficient amount of available compute capacity usable to execute the first program code; and

access permission information associated with the first user, wherein the permission information indicates whether additional compute capacity can be added to the compute capacity associated with the first user;

determine, based at least in part on the permission information associated with the first user, that additional compute capacity can be added to the compute capacity associated with the first user;

add additional compute capacity to the compute capacity associated with the first user; and

execute the first program code using the additional compute capacity using the execution information included in the first request.

16. The non-transitory physical computer storage of claim 15 , wherein the instructions, when executed, further cause the computing system to provide (i) a general pool of virtual machine instances usable to handle code executions on behalf of any of a plurality of users including at least one user other than the first user, and (ii) a dedicated pool of virtual machine instances usable to handle code executions on behalf of only the first user.

17. The non-transitory physical computer storage of claim 16 , wherein the virtual machine instances in the general pool does not have the first program code associated with the first user loaded thereon at the time the first request is received, whereas at least one of the virtual machine instances in the dedicated pool has the first program code associated with the first user loaded thereon at the time the first request is received.

18. The non-transitory physical computer storage of claim 15 , wherein the instructions, when executed, further cause the computing system to:

receive a second request to execute a second program code on behalf of a second user, the second request including information usable to execute the second program code on compute capacity associated with the second user;

determine, based at least in part on the information included in the second request, that the compute capacity associated with the second user has an insufficient amount of available compute capacity usable to execute the second program code; and

determine, based at least in part on permission information associated with the second user, that additional compute capacity cannot be added to the compute capacity associated with the second user; and

cause the second request to be rejected based on there being an insufficient amount of available compute capacity usable to execute the second program code.

19. The non-transitory physical computer storage of claim 15 , wherein the instructions, when executed, further cause the computing system to acquire the additional compute capacity in the form of one or more virtual machine instances from an instance provisioning service.

20. The non-transitory physical computer storage of claim 15 , wherein the instructions, when executed, further cause the computing system to receive, via a user interface or a command line interface, a request to specify the permission information that indicates that additional compute capacity can be added to the compute capacity associated with the first user.

Continuity (2)
Continuation 16118234 · Aug 30, 2018
Continuation 14977524 · Dec 21, 2015
Cited By (9)
US 12,229,147 US 12,314,752 US 12,321,766 US 12,327,133 US 12,381,878 US 12,476,978 US 12,671,671 US 12,724,647 US 12,726,444