IP Library › Granted Patent US 12,143,312
Granted Patent B2
US 12,143,312 · App. 17/587,192 · Granted Nov 12, 2024

On-demand resource capacity in a serverless function-as-a-service infrastructure

Inventors: Angel Ivanov (Sofia, BG); Antonio Filipov (Sofia, BG); Yavor Syarov (Sofia, BG); Radoslav Bonev (Sofia, BG)
Assignee: VMware LLC
H04L47/822H04L47/741H04L47/762H04L47/781
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 12,143,312
App. No.
17/587,192
Granted
Nov 12, 2024
Kind
B2
Abstract

Various aspects are disclosed for optimization of dependent systems for serverless frameworks that facilitate a function-as-a-service (FaaS). In some examples, an agent can be installed on a dependent system and collect resource consumption data that is reported to a management service. The management service can throttle requests submitted to the FaaS or scale up the infrastructure depending upon the resource consumption data.

Claims (80)

1. A the system comprising:

at least one computing device comprising at least one processor; and

a memory comprising executable that when executed by the at least one processor, cause the at least one computing device to perform operations comprising:

receiving, by the computing device, a first request to invoke a function provided as a function-as-a-service (FaaS);

generating, by the computing device, a second request to obtain a state of a plurality of dependent systems in a cluster providing infrastructure for the FaaS, each dependent system being a virtual computer implemented on a physical device using hypervisor software;

transmitting, by the computing device, the second request to a plurality of agents, each of the plurality of agents running on a respective dependent system of the plurality of dependent systems;

obtaining, by the computing device and from the plurality of agents, a plurality of responses to the second request, each of the plurality of responses indicating resource consumption in a respective dependent system of the plurality of dependent systems;

analyzing, by the computing device, the plurality of responses from the plurality of agents to determine whether the resources of the FaaS infrastructure are constrained;

determining, by the computing device and based at least in part on a determination that the resources of the FaaS infrastructure are constrained, whether a number of dependent systems in the cluster is at a maximum number;

adding to the cluster, by the computing device and in response to a determination that the number of dependent systems in the cluster is not at a maximum number, an additional dependent system comprising an additional VM, by invoking an API to provision additional resources for the additional dependent system; and

generating, by the computing device, a response to the first request to invoke the function.

2. The system of claim 1 , wherein the resource consumption in each respective dependent system specifies system parameters of the respective dependent system, comprising: a number of running processes executing the function, a network utilization, a CPU utilization, or a memory utilization.

3. The system of claim 1 , the operations further comprising:

throttling the rate at which responses to requests submitted to the FaaS are generated.

4. The system of claim 3 , the operations further comprising:

determining that the number of dependent systems in the cluster is at the maximum number;

wherein throttling the rate at which responses to requests submitted to the FaaS are generated comprises:

throttling the rate in response to a determination that the number dependent systems in the cluster is at the maximum number.

5. The system of claim 1 , wherein:

receiving a request to invoke a function comprises:

receiving the request via an API call at an API gateway; and

generating a response to the request to invoke the function comprises:

invoking an ephemeral executing in a stateless container running as a workload on one of the dependent systems.

6. The system of claim 1 , the operations further comprising:

creating a new compute container on the additional dependent system for execution of the FaaS; and

executing the agent within the compute container.

7. The system of claim 1 , wherein the plurality of dependent systems comprises a first dependent system, the operations further comprising:

determining a maximum number of instances of the function that may be executed concurrently on the first dependent system; and

associating the maximum number of instances with a type of the first dependent system.

8. A non-transitory computer-readable medium, comprising executable instructions, wherein the instructions, when executed by at least one processor, cause at least one computing device to perform operations comprising:

receiving, by the computing device, a request to invoke a function provided as a function-as-a-service; (FaaS);

generating a request to obtain a state of a plurality of dependent systems in the FaaS infrastructure, each dependent system being a virtual computer implemented on a physical device using hypervisor software;

transmitting the request to a plurality of agents, each of the plurality of agents running on a respective dependent system of the plurality of dependent systems;

obtaining, from the plurality of agents, each of the plurality of responses indicating resource consumption in a respective dependent system of the plurality of dependent systems;

analyzing the plurality of responses from the plurality of agents determine whether the resources of the FaaS infrastructure are constrained;

based on a determination that the resources of the FaaS infrastructure are constrained, determining whether a number of dependent systems in the cluster is not at a maximum number;

based on a determination that the number of dependent systems in the cluster is not at a maximum number, adding to the cluster an additional dependent system comprising an additional VM by invoking an API to provision additional resources for the additional dependent system; and

generating a response to the request to invoke the function, the response to the request to invoke the function obtained from one of the plurality of dependent systems.

9. The non-transitory computer-readable medium of claim 8 , wherein the resource consumption in each respective dependent system specifies system parameters of the respective dependent system, comprising: a number of running processes executing the function, a network utilization, a CPU utilization, or a memory utilization.

10. The non-transitory computer-readable medium of claim 8 , the operations further comprising:

throttling the rate at which responses to requests submitted to the FaaS are generated.

11. The non-transitory computer-readable medium of claim 10 , the operations further comprising:

determining that the number of dependent systems in the cluster is at the maximum number;

wherein throttling the rate at which responses to requests submitted to the FaaS are generated comprises:

throttling the rate in response to a determination that the number dependent systems in the cluster is at the maximum number.

12. The non-transitory computer-readable medium of claim 8 , wherein:

receiving a request to invoke a function comprises:

receiving the request via an API call at an API gateway; and

generating a response to the request to invoke the function comprises:

invoking an ephemeral executing in a stateless container running as a workload on one of the dependent systems.

13. The non-transitory computer-readable medium of claim 8 , the operations further comprising:

creating a new compute container on the additional dependent system for execution of the FaaS; and

executing the agent within the compute container.

14. The non-transitory computer-readable medium of claim 8 , wherein the plurality of dependent systems comprises a first dependent system, the operations further comprising:

determining a maximum number of instances of the function that may be executed concurrently on the first dependent system; and

associating the maximum number of instances with a type of the first dependent system.

15. A method, comprising:

receiving, by the computing device, a first request to invoke a function provided as a function-as-a-service (FaaS);

generating, by the computing device, a second request to obtain a state of a plurality of dependent systems in a cluster providing infrastructure for the FaaS, each dependent system being a virtual computer implemented on a physical device using hypervisor software;

transmitting, by the computing device, the second request to a plurality of agents, each of the plurality of agents running on a respective dependent system of the plurality of dependent systems;

obtaining, by the computing device and from the plurality of agents, a plurality of responses to the second request, each of the plurality of responses indicating resource consumption in a respective dependent system of the plurality of dependent systems;

analyzing, by the computing device, the plurality of responses from the plurality of agents to determine whether the resources of the FaaS infrastructure are constrained;

determining, by the computing device and based at least in part on a determination that the resources of the FaaS infrastructure are constrained, whether a number of dependent systems in the cluster is at a maximum number;

adding to the cluster, by the computing device and in response to a determination that the number of dependent systems in the cluster is not at a maximum number, an additional dependent system comprising an additional VM, by invoking an API to provision additional resources for the additional dependent system; and

generating, by the computing device, a response to the first request to invoke the function.

16. The method of claim 15 , wherein the resource consumption in each respective dependent system specifies system parameters of the respective dependent system, comprising: a number of running processes executing the function, a network utilization, a CPU utilization, or a memory utilization.

17. The method of claim 15 , further comprising:

throttling further comprises throttling the rate at which responses to requests submitted to the FaaS are generated.

18. The method of claim 17 , further comprising:

determining that the number of dependent systems in the cluster is at the maximum number;

wherein throttling the rate at which responses to requests submitted to the FaaS are generated comprises:

throttling the rate in response to a determination that the number dependent systems in the cluster is at the maximum number.

19. The method of claim 15 , wherein:

receiving a request to invoke a function comprises:

receiving the request via an API call at an API gateway; and

generating a response to the request to invoke the function comprises:

invoking an ephemeral executing in a stateless container running as a workload on one of the dependent systems.

20. The method of claim 15 , further comprising:

creating a new compute container on the additional dependent system for execution of the FaaS; and

executing the agent within the compute container.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0242 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 28, 2022
From: IVANOV, ANGEL; FILIPOV, ANTONIO; SYAROV, YAVOR; BONEV, RADOSLAV
To: VMWARE, INC.
Reel/Frame 058808/0794 →
Continuity (1)
Related Publication 20230300086A1 · Sep 21, 2023