IP Library Granted Patent US 10,983,768
Granted Patent B2
US 10,983,768 · App. 16/947,357 · Granted Apr 20, 2021

Method and system for persistent helpers for functions as a service (FAAS) in cloud computing environments

Inventors: Vijay Madisetti (Johns Creek, GA); Arshdeep Bahga (Chandigarh, IN)
G06F8/423G06F8/4441G06F15/17331G06F16/2379
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 10,983,768
App. No.
16/947,357
Granted
Apr 20, 2021
Kind
B2
Abstract

A method for improving the performance of functions-as-a-service including receiving a first function call including a first argument, performing a first function responsive to the first argument including by the first function call, producing a first function result, generating a first precomputation argument that differs from the first argument responsive to the first function call, executing a first persistent function responsive to the first precomputation argument, the persistent function including performing at least one precomputation operation, the at least one precomputation operation including performing the first function responsive to the first precomputation argument, producing a first precomputation result, storing the first precomputation result, receiving a second function call including a second argument, comparing the second argument to the first precomputation argument, and upon determining the second argument is identical to the first precomputation argument, transmitting the first precomputation result from a source of the second function call.

Claims (55)

1. A method for improving performance of functions-as-a-service comprising:

receiving a first function call comprising a first argument;

performing a first function responsive to the first argument comprised by the first function call, producing a first function result;

generating a first precomputation argument that differs from the first argument responsive to the first function call;

executing a first persistent function responsive to the first precomputation argument, the first persistent function comprising performing at least one precomputation operation, the at least one precomputation operation comprising performing the first function responsive to the first precomputation argument, producing a first precomputation result;

storing the first precomputation result;

identifying one or more operations comprised by the first function that are persisted, defining persisted operations;

identifying one or more operations comprised by the first function that are not persisted, defining non-persisted operations;

determining a total resource availability;

determining a performance enhancement value for each non-persisted operation by comparing a time to perform the non-persisted operation with a time to perform the non-persisted operation if it were persisted;

assigning a resource cost to each performance enhancement value;

recursively reassigning the non-persisted operations as persisted operations in order of the performance enhancement values, defining reassigned operations, until a sum of the resource costs for the reassigned operations would exceed the total resource availability;

receiving a second function call comprising a second argument;

comparing the second argument to the first precomputation argument; and

upon determining the second argument is identical to the first precomputation argument, transmitting the first precomputation result from a source of the second function call.

2. The method of claim 1 further comprising storing the first precomputation result in memory.

3. The method of claim 1 further comprising storing the first precomputation result in a result database.

4. The method of claim 1 wherein the first persistent function is stateful.

5. The method of claim 1 further comprising retrieving the first precomputation result using remote direct memory access.

6. The method of claim 1 wherein:

the total resource availability is at least one of a total memory availability, a total read/write availability, and a storage availability; and

the resource cost is at least one of memory used in persisting the non-persisted operation, read/write utilization in persisting the non-persisted operation, and storage utilized in persisting the non-persisted operation.

7. The method of claim 1 wherein the non-persisted operations are reassigned as persisted operations responsive to having the largest performance enhancement value.

8. The method of claim 1 wherein the non-persisted operations are reassigned as persisted operations responsive to having a largest ratio of performance enhancement value to the resource cost.

9. The method of claim 1 comprising:

caching an image of the first function;

creating a first container consisting of the first function;

storing the first container in a function container pool;

caching an image of the first persistent function;

creating a first persistent container consisting of the first persistent function; and

storing the first persistent container in a persistent function container pool.

10. The method of claim 9 wherein executing the first persistent function comprises executing the first persistent container.

11. The method of claim 10 further comprising retrieving the first persistent result using remote direct memory access.

12. A method for improving performance of functions-as-a-service comprising:

receiving a first function call comprising a first argument;

performing a first function responsive to the first argument comprised by the first function call, producing a first function result;

generating a first precomputation argument that differs from the first argument responsive to the first function call;

executing a first persistent function responsive to the first precomputation argument, the first persistent function comprising performing at least one precomputation operation, the at least one precomputation operation comprising performing the first function responsive to the first precomputation argument, producing a first precomputation result;

storing the first precomputation result in at least one of memory and a result database;

identifying one or more operations comprised by the first function that are persisted, defining persisted operations;

identifying one or more operations comprised by the first function that are not persisted, defining non-persisted operations;

determining a total resource availability;

determining a performance enhancement value for each non-persisted operation by comparing a time to perform the non-persisted operation with a time to perform the non-persisted operation if it were persisted;

assigning a resource cost to each performance enhancement value;

recursively reassigning the non-persisted operations as persisted operations in order of the performance enhancement values, defining reassigned operations, until a sum of the resource costs for the reassigned operations would exceed the total resource availability;

receiving a second function call comprising a second argument;

comparing the second argument to the first precomputation argument; and

upon determining the second argument is identical to the first precomputation argument, transmitting the first precomputation result from a source of the second function call;

wherein the first persistent function is stateful.

13. The method of claim 12 wherein:

the total resource availability is at least one of a total memory availability, a total read/write availability, and a storage availability; and

the resource cost is at least one of memory used in persisting the non-persisted operation, read/write utilization in persisting the non-persisted operation, and storage utilized in persisting the non-persisted operation.

14. The method of claim 12 wherein the non-persisted operations are reassigned as persisted operations responsive to having the largest performance enhancement value.

15. The method of claim 12 wherein the non-persisted operations are reassigned as persisted operations responsive to having a largest ratio of performance enhancement value to the resource cost.

16. The method of claim 12 further comprising retrieving the first precomputation result using remote direct memory access.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2021
From: BAHGA, ARSHDEEP
To: MADISETTI, VIJAY
Reel/Frame 057210/0906 →
Continuity (3)
Provisional Application 62884690 · Aug 9, 2019
Provisional Application 63003915 · Apr 2, 2020
Related Publication 20210042098A1 · Feb 11, 2021