IP Library Granted Patent US 11,323,516
Granted Patent B2
US 11,323,516 · App. 17/329,327 · Granted May 3, 2022

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,323,516
App. No.
17/329,327
Granted
May 3, 2022
Kind
B2
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 (52)

1. A method comprising:

executing, at an execution environment on a network, computer-readable code configured to perform a serverless function;

modifying a pointer identifying an area of memory used to store a first state of the serverless function, the pointer being modified to identify a different area of memory;

reusing, at the execution environment, the computer-readable code to perform the serverless function; and

based on a determination that the pointer identifies the different area of memory, storing a second state of the serverless function in the different area of memory.

2. The method of claim 1 , wherein the area of memory is in a different memory device than the different area of memory.

3. The method of claim 1 , wherein the area of memory and the different area of memory correspond to different memory locations in a same memory device.

4. The method of claim 1 , further comprising:

instantiating, at the execution environment, multiple instances of the serverless function within a same process, the multiple instances of the serverless function being assigned different areas of memory; and

storing respective states of the multiple instances of the serverless function in respective areas of memory from the different areas of memory.

5. The method of claim 1 , further comprising:

executing a first instance of the serverless function and a second instance of the serverless function at least partly in parallel; and

storing state data of the first instance of the serverless function and the second instance of the serverless function in different areas of memory.

6. The method of claim 5 , wherein a portion of computer-readable code implementing the first instance of the serverless function is assigned one or more security permissions granting access to a first one of the different areas of memory and prohibiting access to a second one of the different areas of memory, and wherein a different portion of computer-readable code implementing the second instance of the serverless function is assigned one or more security permissions granting access to the second one of the different areas of memory and prohibiting access to the first one of the different areas of memory.

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:

based on the executing of the computer-readable code configured to perform the serverless function, generating 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. 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.

10. 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, at an execution environment on a network, computer-readable code configured to perform a serverless function;

modify a pointer identifying an area of memory used to store a first state of the serverless function, the pointer being modified to identify a different area of memory;

reuse, at the execution environment, the computer-readable code to perform the serverless function; and

based on a determination that the pointer identifies the different area of memory, store a second state of the serverless function in the different area of memory.

11. The system of claim 10 , the 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:

instantiate, at the execution environment, multiple instances of the serverless function within a same process, the multiple instances of the serverless function being assigned different areas of memory; and

store respective states of the multiple instances of the serverless function in respective areas of memory from the different areas of memory.

12. The system of claim 10 , the 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 a first instance of the serverless function and a second instance of the serverless function at least partly in parallel; and

store state data of the first instance of the serverless function and the second instance of the serverless function in different areas of memory.

13. The system of claim 12 , wherein a portion of computer-readable code implementing the first instance of the serverless function is assigned one or more security permissions granting access to a first one of the different areas of memory and prohibiting access to a second one of the different areas of memory, and wherein a different portion of computer-readable code implementing the second instance of the serverless function is assigned one or more security permissions granting access to the second one of the different areas of memory and prohibiting access to the first one of the different areas of memory.

14. The system of claim 10 , the 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:

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.

15. The system of claim 10 , the 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:

generate, based on the executing of the computer-readable code configured to perform the serverless function, at least one of an output of the serverless function, an output of the computer-readable code, and data associated with the serverless function.

16. The system 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.

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:

execute, at an execution environment on a network, computer-readable code configured to perform a serverless function;

modify a pointer identifying an area of memory used to store a first state of the serverless function, the pointer being modified to identify a different area of memory;

reuse, at the execution environment, the computer-readable code to perform the serverless function; and

based on a determination that the pointer identifies the different area of memory, store a second state of the serverless function in the different area of memory.

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

instantiate, at the execution environment, multiple instances of the serverless function within a same process, the multiple instances of the serverless function being assigned different areas of memory; and

store respective states of the multiple instances of the serverless function in respective areas of memory from the different areas of memory.

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

execute a first instance of the serverless function and a second instance of the serverless function at least partly in parallel; and

store state data of the first instance of the serverless function and the second instance of the serverless function in different areas of memory, wherein a portion of computer-readable code implementing the first instance of the serverless function is assigned one or more security permissions granting access to a first one of the different areas of memory and prohibiting access to a second one of the different areas of memory, and wherein a different portion of computer-readable code implementing the second instance of the serverless function is assigned one or more security permissions granting access to the second one of the different areas of memory and prohibiting access to the first one of the different areas of memory.

20. The non-transitory computer-readable storage medium of claim 17 , 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.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2021
From: TORNOW, DOMINIK RENE; DAVE, URMIL VIJAY; MESTERY, KYLE ANDREW DONALD; WELLS, IAN
To: CISCO TECHNOLOGY, INC.
Reel/Frame 056339/0630 →
Continuity (3)
Continuation 16953007 · Nov 19, 2020
Provisional Application 63054538 · Jul 21, 2020
Related Publication 20220030065A1 · Jan 27, 2022
Cited By (1)
US 12,574,437