IP Library Granted Patent US 11,614,957
Granted Patent B1
US 11,614,957 · App. 16/869,376 · Granted Mar 28, 2023

Native-hypervisor based on-demand code execution system

Inventors: Vijay Dheeraj Reddy Mandadi (Fremont, CA); Raviprasad V Mummidi (Mountain View, CA)
Assignee: Amazon Technologies, Inc.
G06F9/45558G06F9/5077G06F2009/45591G06F2009/45595
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,614,957
App. No.
16/869,376
Granted
Mar 28, 2023
Kind
B1
Abstract

Systems and methods are provided for on-demand code execution that uses a client's host computing environment with native hypervisors. The client's host computing device receives a configuration application library. An agent process is executed on the host computing device from the configuration application library. The agent process is executed in association with a first user profile that gives the process rights to configure the client host computing device. The agent process receives, from a service external to the client host computing environment/device/native hypervisor, a code-execution request on behalf of a second user profile. The agent process provisions an execution environment on behalf of the second user profile. The execution environment runs on the native hypervisor. The code instructions are executed in the execution environment under the second user profile. The agent process monitors the code execution and receives a status regarding the execution of the code in the execution environment. The agent process further transmits the status back to the service.

Claims (106)

1. A computer implemented method comprising:

under control of a computer hardware processor in a native hypervisor of a host computing device configured with specific computer executable instructions,

receiving a configuration application library;

executing, from the configuration application library, an agent process under a first user profile, wherein executing the agent process further comprises:

receiving, from a service external from the host computing device, a first code execution request for a second user profile; and

initiating an execution environment in the native hypervisor for the second user profile; and

causing, under the second user profile, first code instructions to execute in the execution environment,

wherein the first code instructions in the execution environment comprise a first computation,

wherein causing the first code instructions to execute further comprises:

initiating, in a virtual machine instance on the native hypervisor, the first computation, and

wherein executing the agent process under the first user profile further comprises:

monitoring execution of the first code instructions in the execution environment;

receiving, from the execution environment, metadata regarding execution of the first code instructions;

pausing or cancelling the first computation on the virtual machine instance; and

transmitting a message that causes the service to schedule execution of the first computation based at least in part on the metadata.

2. The computer implemented method of claim 1 , wherein the native hypervisor comprises a resource pool, and wherein executing the agent process under the first user profile further comprises:

allocating a portion of the resource pool for at least the execution of the first code instructions in the execution environment.

3. The computer implemented method of claim 2 , wherein the native hypervisor further comprises a plurality of execution environments, and wherein allocating the portion of the resource pool is further for execution of respective code instructions in each execution environment in the plurality of execution environments.

4. The computer implemented method of claim 2 , wherein the native hypervisor is configured to allocate usage of at least one of the computer hardware processor, memory, storage, or bandwidth according to the resource pool.

5. The computer implemented method of claim 2 , wherein the portion of the resource pool further comprises a quantity of resource shares.

6. The computer implemented method of claim 5 , wherein the native hypervisor is configured to allocate usage of a resource according to the quantity of resource shares and a proportional share-based algorithm.

7. A system comprising:

a data storage medium in a native hypervisor of a host computing device; and

one or more computer hardware processors, in the native hypervisor of the host computing device, in communication with the data storage medium, the one or more computer hardware processors configured to execute computer-executable instructions to at least:

execute, from a configuration application library, an agent process under a first user profile, wherein executing the agent process further comprises:

receiving, from a first service external from the host computing device, a first code execution request for a second user profile; and

initiating an execution environment in the native hypervisor for the second user profile; and

cause, under the second user profile, code instructions to execute in the execution environment,

wherein the code instructions in the execution environment comprise a first computation,

wherein causing the code instructions to execute further comprises:

initiating execution of the first computation, and

wherein executing the agent process under the first user profile further comprises:

monitoring execution of the code instructions in the execution environment;

receiving, from the execution environment, metadata regarding the execution of the code instructions;

pausing or cancelling the first computation; and

transmitting a message that causes the first service to schedule execution of the first computation based at least in part on the metadata.

8. The system of claim 7 , wherein executing the agent process under the first user profile further comprises:

deleting the execution environment.

9. The system of claim 7 , wherein executing the agent process under the first user profile further comprises:

receiving, from the first service, a second code execution request for the second user profile;

determining to reuse the execution environment for the second code execution request; and

resetting state in the execution environment, wherein the one or more computer hardware processors is configured to execute further computer-executable instructions to:

cause, under the second user profile, second code instructions to execute in the execution environment.

10. The system of claim 7 , where the message comprises execution information regarding the execution of the code instructions in the execution environment.

11. The system of claim 7 , where the message comprises a status of the execution of the code instructions in the execution environment.

12. The system of claim 7 , wherein executing the agent process under the first user profile further comprises:

requesting, from a credential service, a role credential for the first service; and

transmitting the role credential to the first service, wherein transmitting the role credential to the first service causes the agent process to be authorized to communicate with the first service.

13. A system comprising:

a data storage medium in a first native hypervisor of a host computing device; and

one or more computer hardware processors, in the first native hypervisor of the host computing device, in communication with the data storage medium, the one or more computer hardware processors configured to execute computer-executable instructions to at least:

execute, from a configuration application library, a first agent process under a first user profile, wherein executing the first agent process further comprises:

receiving, from a first service external from the host computing device, a first code execution request for a second user profile; and

initiating a first execution environment in the first native hypervisor for the second user profile; and

cause, under the second user profile, first code instructions to execute in the first execution environment,

wherein the first code instructions in the first execution environment comprise a first computation,

wherein causing the first code instructions to execute further comprises:

initiating, in a first virtual machine instance on the first native hypervisor, the first computation, and

wherein executing the first agent process under the first user profile further comprises:

receiving, from the first execution environment, metadata regarding execution of the first code instructions;

pausing or cancelling the first computation on the first virtual machine instance; and

transmitting, from the first virtual machine instance, a message that causes the first service to schedule execution of the first computation based at least in part on the metadata.

14. The system of claim 13 , wherein the one or more computer hardware processors is further configured to execute additional computer-executable instructions to:

present, in a hypervisor management user interface, an option associated with offloading a computation from a virtual machine instance to an execution environment on a native hypervisor; and

receive, via the hypervisor management user interface, a user selection of the option.

15. The system of claim 13 , wherein the one or more computer hardware processors is further configured to execute further computer-executable instructions to:

execute, from the configuration application library, a second agent process, wherein executing the second agent process further comprises:

uploading second data to a data storage service;

scheduling, via the first service, second code instructions to be executed on the second data in an external on-demand code execution system; and

receiving, from the first service, a status regarding execution of the second code instructions in the external on-demand code execution system.

16. The system of claim 13 , wherein the message indicates a status of the execution of the first code instructions in the first execution environment.

17. The system of claim 16 , wherein the one or more computer hardware processors is further configured to execute further computer-executable instructions to:

execute, from the configuration application library, a second agent process, wherein executing the second agent process further comprises:

determining that the status of the execution of the first code instructions in the first execution environment is incomplete; and

determining to migrate execution of the first code instructions in the first execution environment.

18. The system of claim 17 , wherein executing the second agent process further comprises:

causing deletion of the first execution environment from the first native hypervisor; and

causing a third agent process to be executed on a second native hypervisor, wherein the third agent process is configured to:

instantiate a second execution environment on the second native hypervisor, wherein the first code instructions are executed in the second execution environment on the second native hypervisor.

19. The system of claim 18 , wherein executing the first agent process under the first user profile further comprises pausing the execution of the first code instructions in the first execution environment, and wherein the one or more computer hardware processors is further configured to:

store state associated with the execution of the first code instructions in the first execution environment, wherein the second execution environment accesses the state that resumes execution of the first code instructions on the second native hypervisor.

20. A system comprising:

a data storage medium in a first native hypervisor of a host computing device; and

one or more computer hardware processors, in the first native hypervisor of the host computing device, in communication with the data storage medium, the one or more computer hardware processors configured to execute computer-executable instructions to at least:

execute, from a configuration application library, a first agent process under a first user profile, wherein executing the first agent process further comprises:

receiving, from a first service external from the host computing device, a first code execution request for a second user profile; and

initiating a first execution environment in the first native hypervisor for the second user profile;

cause, under the second user profile, first code instructions to execute in the first execution environment, wherein executing the first agent process under the first user profile further comprises:

receiving, from the first execution environment, metadata regarding execution of the first code instructions; and

transmitting, based at least in part on the metadata, first data to the first service; and

execute, from the configuration application library, a second agent process, wherein executing the second agent process further comprises:

uploading second data to a data storage service;

scheduling, via the first service, second code instructions to be executed on the second data in an external on-demand code execution system; and

receiving, from the first service, a status regarding execution of the second code instructions in the external on-demand code execution system.

21. A system comprising:

a data storage medium in a first native hypervisor of a host computing device; and

one or more computer hardware processors, in the first native hypervisor of the host computing device, in communication with the data storage medium, the one or more computer hardware processors configured to execute computer-executable instructions to at least:

execute, from a configuration application library, a first agent process under a first user profile, wherein executing the first agent process further comprises:

receiving, from a first service external from the host computing device, a first code execution request for a second user profile; and

initiating a first execution environment in the first native hypervisor for the second user profile;

cause, under the second user profile, first code instructions to execute in the first execution environment, wherein executing the first agent process under the first user profile further comprises:

receiving, from the first execution environment, metadata regarding execution of the first code instructions; and

transmitting, based at least in part on the metadata, first data to the first service, wherein the first data indicates a status of the execution of the first code instructions in the first execution environment; and

execute, from the configuration application library, a second agent process, wherein executing the second agent process further comprises:

determining that the status of the execution of the first code instructions in the first execution environment is incomplete; and

determining to migrate execution of the first code instructions in the first execution environment.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2021
From: MANDADI, VIJAY DHEERAJ REDDY; MUMMIDI, RAVIPRASAD V.
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 055004/0800 →
Cited By (2)
US 12,430,283 US 12,717,645