IP Library Granted Patent US 11,588,727
Granted Patent B2
US 11,588,727 · App. 17/306,338 · Granted Feb 21, 2023

Systems and methods for managing resources in a serverless workload

Inventors: Cheuk Lam (Yorktown Heights, NY); Pallavi Debnath (New Canaan, CT); Enlin Xu (New York, NY); Endre Sara (Briarcliff Manor, NY)
Assignee: International Business Machines Corporation
H04L45/26H04L45/121H04L45/125H04L45/24H04L45/38
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,588,727
App. No.
17/306,338
Granted
Feb 21, 2023
Kind
B2
Abstract

Various approaches for allocating resources to an application having multiple application components, with at least one executing one or more functions, in a serverless service architecture include identifying multiple routing paths, each routing path being associated with a same function service provided by one or more containers or serverless execution entities; determining traffic information on each routing path and/or a cost, a response time and/or a capacity associated with the container or serverless execution entity on each routing path; selecting one of the routing paths and its associated container or serverless execution entity; and causing a computational user of the application to access the container or serverless execution entity on the selected routing path and executing the function(s) thereon.

Claims (42)

1. A method of allocating resources to an application comprising a plurality of application components, with at least one executing at least one function, in a serverless service architecture, the method comprising:

(a) identifying a plurality of computational resources associated with at least one serverless execution entity capable of executing the at least one function thereon;

(b) determining, for each of the identified computational resources, a revenue and an expense for allocating the computational resource to the at least one serverless execution entity;

(c) based at least in part on the determination in step (b), determining a size associated with each of the computational resources allocated to the at least one serverless execution entity;

(d) monitoring the revenue and expense for allocating each of the computational resources to the at least one function during execution thereof; and

(e) adjusting the size associated with each of the computational resources allocated to the at least one serverless execution entity based on the revenue and expense monitored in step (d).

2. The method of claim 1 , further comprising causing a computational user of the application to access to the at least one serverless execution entity and executing the at least one function thereon.

3. The method of claim 1 , wherein the revenue is generated by causing the at least one function to be executed on the at least one serverless execution entity in response to a request, and the expense is generated by allocating the computational resources to the at least one serverless execution entity for executing the at least one function.

4. The method of claim 1 , wherein the revenue is determined based at least in part on a unit price associated with each of the computational resources and a quantity of each of the computational resources used to execute the at least one function.

5. The method of claim 1 , further comprising upon determining that the monitored revenue is larger than the monitored expense for a predetermined factor, increasing the size associated with the corresponding computational resource allocated to the at least one serverless execution entity.

6. The method of claim 1 , further comprising upon determining that the monitored revenue is smaller than the monitored expense for a predetermined factor, decreasing the size associated with the corresponding computational resource allocated to the at least one serverless execution entity.

7. The method of claim 1 , wherein the computational resources comprise a processor, a storage I/O resource, a network I/O resource and I/O pathways.

8. The method of claim 1 , wherein the at least one function comprises at least one of an AWS LAMBDA function, a Google cloud function, a Microsoft Azure function, an IBM OpenWhisk function, an Oracle Cloud function, or a Kubernates-based Knative function.

9. The method of claim 1 , further comprising:

(e) identifying at least first and second resource providers for providing the computational resources having the sizes determined in step (c), each of the resource providers offering a purchase price to the at least one serverless execution entity; and

(f) automatically allocating the computational resources from the first resource provider to the at least one serverless execution entity based at least in part on the purchase price offered thereby,

wherein the purchase price offered by the first resource provider is smaller than that offered by the second resource provider.

10. The method of claim 9 , wherein each of the at least first and second resource providers offers a purchase price for allocating each of the computational resources to the at least one serverless execution entity, the method further comprising:

automatically allocating a first one of the computational resources from the first resource provider to the at least one serverless execution entity;

automatically allocating a second one of the computational resources, different from the first one of the computational resources, from the second resource provider to the at least one serverless execution entity,

wherein the purchase price of the first one of the computational resources offered by the first resource provider is smaller than that offered by the second resource provider and the purchase price of the second one of the computational resources offered by the second resource provider is smaller than that offered by the first resource provider.

11. A computer system for allocating resources to an application comprising a plurality of application components, with at least one executing at least one function, in a serverless service architecture, the computer system comprising a management system configured to:

(a) identify a plurality of computational resources associated with at least one serverless execution entity capable of executing the at least one function thereon;

(b) determine, for each of the identified computational resources, a revenue and an expense for allocating the computational resource to the at least one serverless execution entity;

(c) based at least in part on the determination in step (b), determine a size associated with each of the computational resources allocated to the at least one serverless execution entity;

(d) monitor the revenue and expense for allocating each of the computational resources to the at least one function during execution thereof; and

(e) adjust the size associated with each of the computational resources allocated to the at least one serverless execution entity based on the revenue and expense monitored in step (d).

12. The computer system of claim 11 , wherein the management system is further configured to cause a computational user of the application to access to the at least one serverless execution entity and execute the at least one function thereon.

13. The computer system of claim 11 , wherein the revenue is generated by causing the at least one function to be executed on the at least one serverless execution entity in response to a request, and the expense is generated by allocating the computational resources to the at least one serverless execution entity for executing the at least one function.

14. The computer system of claim 11 , wherein the revenue is determined based at least in part on a unit price associated with each of the computational resources and a quantity of each of the computational resources used to execute the at least one function.

15. The computer system of claim 11 , wherein the management system is further configured to increase the size associated with the corresponding computational resource allocated to the at least one serverless execution entity upon determining that the monitored revenue is larger than the monitored expense for a predetermined factor.

16. The computer system of claim 11 , wherein the management system is further configured to decrease the size associated with the corresponding computational resource allocated to the at least one serverless execution entity upon determining that the monitored revenue is smaller than the monitored expense for a predetermined factor.

17. The computer system of claim 11 , wherein the computational resources comprise a processor, a storage I/O resource, a network I/O resource and I/O pathways.

18. The computer system of claim 11 , wherein the at least one function comprises at least one of an AWS LAMBDA function, a Google cloud function, a Microsoft Azure function, an IBM OpenWhisk function, an Oracle Cloud function, or a Kubernates-based Knative function.

19. The computer system of claim 11 , wherein the management system is further configured to:

(e) identify at least first and second resource providers for providing the computational resources having the sizes determined in step (c), each of the resource providers offering a purchase price to the at least one serverless execution entity; and

(f) automatically allocate the computational resources from the first resource provider to the at least one serverless execution entity based at least in part on the purchase price offered thereby,

wherein the purchase price offered by the first resource provider is smaller than that offered by the second resource provider.

20. The computer system of claim 19 , wherein each of the at least first and second resource providers offers a purchase price for allocating each of the computational resources to the at least one serverless execution entity, the management system being further configured to:

automatically allocate a first one of the computational resources from the first resource provider to the at least one serverless execution entity;

automatically allocate a second one of the computational resources, different from the first one of the computational resources, from the second resource provider to the at least one serverless execution entity,

wherein the purchase price of the first one of the computational resources offered by the first resource provider is smaller than that offered by the second resource provider and the purchase price of the second one of the computational resources offered by the second resource provider is smaller than that offered by the first resource provider.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2022
From: TURBONOMIC, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 062202/0030 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2022
From: LAM, CHEUK; DEBNATH, PALLAVI; XU, ENLIN; SARA, ENDRE
To: TURBONOMIC, INC.
Reel/Frame 058840/0394 →
Continuity (2)
Continuation 16561263 · Sep 5, 2019
Related Publication 20220158932A1 · May 19, 2022