IP Library Granted Patent US 11,070,621
Granted Patent B1
US 11,070,621 · App. 16/953,007 · Granted Jul 20, 2021

Reuse of execution environments while guaranteeing isolation in serverless computing

Inventors: Dominik Rene Tornow (San Jose, CA); Urmil Vijay Dave (San Jose, CA); Kyle Andrew Donald Mestery (Woodbury, MN); Ian Wells (San Jose, CA)
Assignee: CISCO TECHNOLOGY, INC.
H04L67/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 11,070,621
App. No.
16/953,007
Granted
Jul 20, 2021
Kind
B1
Abstract

Systems, methods, and computer-readable media are provided for reusing execution environments and code of serverless functions while ensuring isolation in serverless computing environments. In some examples, a method can include, in response to a first request to run a serverless function, executing, at an execution environment on a network, computer-readable code configured to perform the serverless function; after the computer-readable code has executed, modifying a pointer to an area of memory used to store a first state of the serverless function to reference a different area of memory; in response to a second request to run the serverless function, reusing, at the execution environment, the computer-readable code to perform the serverless function; and based on the pointer referencing the different area of memory, using the different area of memory to store a second state of the serverless function.

Claims (58)

1. A method comprising:

in response to a first request to run a serverless function, executing, at an execution environment on a network, computer-readable code configured to perform the serverless function;

after the computer-readable code has executed, modifying a pointer to an area of memory used to store a first state of the serverless function to reference a different area of memory;

in response to a second request to run the serverless function, reusing, at the execution environment, the computer-readable code to perform the serverless function; and

based on the pointer referencing the different area of memory, using the different area of memory to store a second state of the serverless function.

2. The method of claim 1 , further comprising:

receiving the first request to run the serverless function; and

deploying, at the execution environment, the computer-readable code configured to perform the serverless function.

3. The method of claim 1 , further comprising:

in response to the second request, determining that the computer-readable code is loaded at the execution environment; and

in response to determining that the computer-readable code is loaded at the execution environment, reusing the execution environment and the computer-readable code to process the second request.

4. The method of claim 3 , wherein determining that the computer-readable code is loaded at the execution environment comprises determining that the execution environment is available and capable of running the serverless function.

5. The method of claim 1 , wherein the different area of memory comprises an unused area of memory in an initialize state, and wherein the execution environment comprises one of a software container, a virtual machine, or a server.

6. The method of claim 1 , further comprising:

receiving a third request to run the serverless function;

prior to running the serverless function in response to the third request, modifying the pointer to reference a different unused area of memory; and

after modifying the pointer to reference the different unused area of memory, executing the computer-readable code to perform the serverless function and using the different unused area of memory for a third state of the serverless function.

7. The method of claim 1 , further comprising:

identifying the different area of memory; and

assigning the different area of memory to at least one of the computer-readable code, the serverless function and the second state of the serverless function.

8. The method of claim 1 , further comprising:

providing a response to the first request, the response comprising at least one of an output of the serverless function, an output of the computer-readable code, and data associated with the serverless function.

9. A system comprising:

one or more processors; and

at least one computer-readable storage medium having stored thereon instructions which, when executed by the one or more processors, cause the one or more processors to:

execute, in response to a first request to run a serverless function, computer-readable code configured to perform the serverless function, the computer-readable code being executed at an execution environment on a network;

after the computer-readable code has executed, modify a pointer to an area of memory used to store a first state of the serverless function to reference a different area of memory;

in response to a second request to run the serverless function, reuse, at the execution environment, the computer-readable code to perform the serverless function; and

based on the pointer referencing the different area of memory, use the different area of memory to store a second state of the serverless function.

10. The system of claim 9 , the at least one computer-readable storage medium storing instructions which, when executed by the one or more processors, cause the system to:

receive the first request to run the serverless function; and

deploy, at the execution environment, the computer-readable code configured to perform the serverless function.

11. The system of claim 9 , the at least one computer-readable storage medium storing instructions which, when executed by the one or more processors, cause the system to:

in response to the second request, determine that the computer-readable code is loaded at the execution environment; and

in response to determining that the computer-readable code is loaded at the execution environment, reuse the execution environment and the computer-readable code to process the second request.

12. The system of claim 11 , wherein the determining that the computer-readable code is loaded at the execution environment comprises determining that the execution environment is available and capable of running the serverless function.

13. The system of claim 9 , wherein the different area of memory comprises an unused area of memory in an initialize state, and wherein the execution environment comprises one of a software container, a virtual machine, or a server.

14. The system of claim 9 , the at least one computer-readable storage medium storing instructions which, when executed by the one or more processors, cause the system to:

receive a third request to run the serverless function;

prior to running the serverless function in response to the third request, modify the pointer to reference a different unused area of memory; and

after modifying the pointer to reference the different unused area of memory, execute the computer-readable code to perform the serverless function and use the different unused area of memory for a third state of the serverless function.

15. The system of claim 9 , the at least one computer-readable storage medium storing instructions which, when executed by the one or more processors, cause the system to:

identify the different area of memory; and

assign the different area of memory to at least one of the computer-readable code, the serverless function and the second state of the serverless function.

16. The system of claim 9 , the at least one computer-readable storage medium storing instructions which, when executed by the one or more processors, cause the system to:

provide a response to the first request, the response comprising at least one of an output of the serverless function, an output of the computer-readable code, and data associated with the serverless function.

17. A non-transitory computer-readable storage medium having stored thereon instructions which, when executed by one or more processors, cause the one or more processors to:

in response to a first request to run a serverless function, execute, at an execution environment on a network, computer-readable code configured to perform the serverless function;

after the computer-readable code has executed, modify a pointer to an area of memory used to store a first state of the serverless function to reference a different area of memory;

in response to a second request to run the serverless function, reuse, at the execution environment, the computer-readable code to perform the serverless function; and

based on the pointer referencing the different area of memory, use the different area of memory to store a second state of the serverless function.

18. The non-transitory computer-readable storage medium of claim 17 , comprising instructions which, when executed by one or more processors, cause the one or more processors to:

receive the first request to run the serverless function; and

deploy, at the execution environment, the computer-readable code configured to perform the serverless function.

19. The non-transitory computer-readable storage medium of claim 17 , comprising instructions which, when executed by one or more processors, cause the one or more processors to:

in response to the second request, determine that the computer-readable code is loaded at the execution environment; and

in response to determining that the computer-readable code is loaded at the execution environment, reuse the execution environment and the computer-readable code to process the second request.

20. The non-transitory computer-readable storage medium of claim 19 , wherein determining that the computer-readable code is loaded at the execution environment comprises determining that the execution environment is available and capable of running the serverless function.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 19, 2020
From: TORNOW, DOMINIK RENE; DAVE, URMIL VIJAY; MESTERY, KYLE ANDREW DONALD; WELLS, IAN
To: CISCO TECHNOLOGY, INC.
Reel/Frame 054423/0229 →
Continuity (1)
Provisional Application 63054538 · Jul 21, 2020
Cited By (3)
US 12,284,247 US 12,395,556 US 12,574,437