IP Library › Granted Patent US 12,443,424
Granted Patent B1
US 12,443,424 · App. 17/301,258 · Granted Oct 14, 2025

Generational management of compute resource pools

Inventors: Malcolm Featonby (Sammamish, WA); Saloni Sonpal (Seattle, WA); Axel David Velazquez (Renton, WA)
Assignee: Amazon Technologies, Inc.
G06F9/45558G06F9/5077G06F2009/45562G06F2209/5011
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,443,424
App. No.
17/301,258
Granted
Oct 14, 2025
Kind
B1
Abstract

Provided is a system for managing a pool of compute resources usable to execute user codes such as containerized software applications. The pool may include a plurality of sub-pools of compute instances that are each suited to handle a specific type of code execution requests and/or a specific set of capacity or resource configurations. For example, when a code execution request is received, the system may determine compute capacity from which sub-pool would be best suited to handle the request, and direct the request to that sub-pool (or execute the user code using compute capacity from that sub-pool). Each sub-pool may be assigned a generational indicator that indicates its level of use (e.g., rarely used, moderately use, frequently used, etc.) and/or its age (e.g., brand new, young, old, etc.). As a sub-pool experiences continued use, the sub-pool may be promoted and its retention/replenishment policy may be updated accordingly.

Claims (51)

1. A cloud provider system comprising:

a pool of virtual machines, wherein each virtual machine in the pool is usable to execute a task in response to an incoming request to execute the task, and the pool is divided into a plurality of sub-pools, wherein the plurality of sub-pools include at least a first sub-pool and a second sub-pool; and

a container service comprising computer hardware, wherein the container service is configured to manage and utilize the pool of virtual machines and is further configured to at least:

receive a request to execute a user code on a virtual machine in the pool on behalf of a user, wherein the request includes capacity configuration information indicating a type of computing resource and an amount of computing resource corresponding to the type of computing resource requested for executing the user code;

determine, based at least partly on (i) the amount of computing resource indicated by the capacity configuration information exceeding a first amount or range of amounts of computing resource provided by one or more individual compute instances within the first sub-pool and also exceeding a second amount or range of amounts of computing resource provided by one or more individual compute instances within the second sub-pool and different from the first amount or range of amounts provided by the one or more individual compute instances within the first sub-pool, or (ii) the type of computing resource indicated by the capacity configuration information not being supported by one or more individual compute instances within the first sub-pool and one or more individual compute instances within the second sub-pool, that a condition for adding an additional sub-pool to the pool of compute instances such that a total amount of computing resource in the pool is increased is satisfied;

create an additional sub-pool having a generational indicator that indicates that the additional sub-pool is new, wherein the generational indicator of the additional sub-pool is different from a generational indicator of at least one of the plurality of sub-pools;

update capacity configuration mapping information associated with the pool such that at least one code execution request that would have been directed to one of the plurality of sub-pools prior to the creation of the additional sub-pool would now be directed to the additional sub-pool;

initialize an additional virtual machine having a capacity configuration that is different from at least one of the virtual machines in the pool; and

cause the user code to be executed on the additional virtual machine.

2. The cloud provider system of claim 1 , wherein the container service is further configured to:

determine that a threshold number of code execution requests have been processed using virtual machines from the additional sub-pool; and

update the generational indicator associated with the additional sub-pool to another value that indicates that the additional sub-pool is no longer new.

3. The cloud provider system of claim 2 , wherein the container service is further configured to update a replenishment policy associated with the additional sub-pool to correspond to the updated generational indicator, wherein the updated replenishment policy is different from that associated with at least one other sub-pool in the pool.

4. The cloud provider system of claim 3 , wherein the container service is further configured to control the number of virtual machines in the additional sub-pool according to the updated replenishment policy associated with the additional sub-pool such that an increased number of pre-initialized virtual machines are maintained in the additional sub-pool than prior to the updating of the replenishment policy.

5. A computer-implemented method comprising:

providing a pool of compute instances, wherein the compute instances in the pool are divided into a plurality of sub-pools, wherein the plurality of sub-pools include at least a first sub-pool and a second sub-pool;

receiving a request to execute a user code on behalf of a user, wherein the request includes capacity configuration information indicating a type of computing resource and an amount of computing resource corresponding to the type of computing resource requested for executing the user code;

determining, based at least partly on (i) the amount of computing resource indicated by the capacity configuration information exceeding a first amount or range of amounts of computing resource provided by one or more individual compute instances within the first sub-pool and also exceeding a second amount or range of amounts of computing resource provided by one or more individual compute instances within the second sub-pool and different from the first amount or range of amounts provided by the one r more individual compute instances within the first sub-pool, or (ii) the type of computing resource indicated by the capacity configuration information not being supported by one or more individual compute instances within the first sub-pool and one or more individual compute instances within the second sub-pool, that a condition for adding an additional sub-pool to the pool of compute instances such that a total amount of computing resource in the pool is increased is satisfied;

creating an additional sub-pool having a generational indicator that indicates that the additional sub-pool is in a first generational state, wherein the generational indicator of the additional sub-pool is different from a generational indicator of at least one other sub-pool in the pool of compute instances;

initializing an additional compute instance having a capacity configuration that is different from at least one of the compute instances in the pool; and

executing the user code on the additional compute instance.

6. The computer-implemented method of claim 5 , further comprising:

determining that a condition for updating the generational indicator associated with the additional sub-pool is satisfied; and

updating the generational indicator associated with the additional sub-pool to

another value that indicates that the additional sub-pool is in a second generational state different from the first generational state.

7. The computer-implemented method of claim 5 , wherein the additional sub-pool is associated with a replenishment policy corresponding to the first generational state, wherein the replenishment policy indicates a number of compute instances to be maintained in the additional sub-pool.

8. The computer-implemented method of claim 7 , further comprising:

determining that the replenishment policy associated with the additional sub-pool has been updated; and

causing the number of compute instances maintained in the additional sub-pool according to the updated replenishment policy associated with the additional sub-pool.

9. The computer-implemented method of claim 5 , further comprising updating capacity configuration mapping information associated with the pool of compute instances such that at least one code execution request that would have been directed to one of the plurality of sub-pools prior to the creation of the additional sub-pool would now be directed to the additional sub-pool.

10. The computer-implemented method of claim 9 , further comprising directing an incoming code execution request to the additional sub-pool based on the updated capacity configuration mapping information associated with the pool of compute instances.

11. The computer-implemented method of claim 5 , wherein the additional compute instance is one of a virtual machine instance, a bare-metal instance, a physical machine, a container, a node, an offload card, an IoT device, or on-premises compute capacity.

12. The computer-implemented method of claim 5 , wherein the additional compute instance (i) provides an amount or range of amounts of computing resource greater than or equal to the amount of computing resource indicated by the capacity configuration information or (ii) supports the type of computing resource indicated by the capacity configuration information.

13. A non-transitory computer-readable medium storing instructions that, when executed by a computing system within a cloud provider network, cause the computing system to perform operations comprising:

providing a pool of compute instances, wherein the compute instances in the pool are divided into a plurality of sub-pools, wherein the plurality of sub-pools include at least a first sub-pool and a second sub-pool;

receiving a request to execute a user code on behalf of a user, wherein the request includes capacity configuration information indicating a type of computing resource and an amount of computing resource corresponding to the type of computing resource requested for executing the user code;

determining, based at least partly on (i) the amount of computing resource indicated by the capacity configuration information exceeding a first amount or range of amounts of computing resource provided by one or more individual compute instances within the first sub-pool and a second amount or range of amounts of computing resource provided by one or more individual compute instances within the second sub-pool and different from the first amount or range of amounts provided by the one or more individual compute instances within the first sub-pool, or (ii) the type of computing resource indicated by the capacity configuration information not being supported by one or more individual compute instances within the first sub-pool and one or more individual compute instances within the second sub-pool, that a condition for adding an additional sub-pool to the pool of compute instances such that a total amount of computing resource in the pool is increased is satisfied;

creating an additional sub-pool having a generational indicator that indicates that the additional sub-pool is in a first generational state, wherein the generational indicator of the additional sub-pool is different from a generational indicator of at least one other sub-pool in the pool of compute instances;

initializing an additional compute instance having a capacity configuration that is different from at least one of the compute instances in the pool; and

executing the user code on the additional compute instance.

14. The non-transitory computer-readable medium of claim 13 , storing further instructions that, when executed by the computing system, cause the computing system to perform operations comprising:

determining that a condition for updating the generational indicator associated with the additional sub-pool is satisfied; and

updating the generational indicator associated with the additional sub-pool to

another value that indicates that the additional sub-pool is in a second generational state different from the first generational state.

15. The non-transitory computer-readable medium of claim 13 , wherein the additional sub-pool is associated with a replenishment policy corresponding to the first generational state, wherein the replenishment policy indicates a number of compute instances to be maintained in the additional sub-pool.

16. The non-transitory computer-readable medium of claim 15 , storing further instructions that, when executed by the computing system, cause the computing system to perform operations comprising: determining that the replenishment policy associated with the additional sub-pool has been updated; and

causing the number of compute instances maintained in the additional sub-pool according to the updated replenishment policy associated with the additional sub-pool.

17. The non-transitory computer-readable medium of claim 13 , storing further instructions that, when executed by the computing system, cause the computing system to perform operations comprising updating capacity configuration mapping information associated with the pool of compute instances such that at least one code execution request that would have been directed to one of the plurality of sub-pools prior to the creation of the additional sub-pool would now be directed to the additional sub-pool.

18. The non-transitory computer-readable medium of claim 17 , storing further instructions that, when executed by the computing system, cause the computing system to perform operations comprising directing an incoming code execution request to the additional sub-pool based on the updated capacity configuration mapping information associated with the pool of compute instances.

19. The non-transitory computer-readable medium of claim 13 , wherein the additional compute instance is one of a virtual machine instance, a bare-metal instance, a physical machine, a container, a node, an offload card, an IoT device, or on-premises compute capacity.

20. The non-transitory computer-readable medium of claim 13 , wherein the additional compute instance (i) provides an amount or range of amounts of computing resource greater than or equal to the amount of computing resource indicated by the capacity configuration information or (ii) supports the type of computing resource indicated by the capacity configuration information.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2025
From: FEATONBY, MALCOLM; SONPAL, SALONI; VELAZQUEZ, AXEL DAVID
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 072063/0895 →
References Cited (148)
US 7844480B2 · Ricketts · 2010 [cited by applicant]
US 8898402B1 · Stronge · 2014 [cited by applicant]
US 9110496B1 · Michelsen · 2015 [cited by applicant]
US 9152441B2 · Anderson · 2015 [cited by applicant]
US 9164802B2 · Netto · 2015 [cited by applicant]
US 9256467B1 · Singh et al. · 2016 [cited by applicant]
US 9549038B1 · Anne · 2017 [cited by applicant]
US 9667498B2 · Wu et al. · 2017 [cited by applicant]
US 9690622B1 · Argenti et al. · 2017 [cited by applicant]
US 9848041B2 · Einkauf et al. · 2017 [cited by applicant]
US 9898347B1 · Gupta · 2018 [cited by applicant]
US 9910713B2 · Wisniewski et al. · 2018 [cited by applicant]
US 9928108B1 · Wagner et al. · 2018 [cited by applicant]
US 9971621B1 · Berg et al. · 2018 [cited by applicant]
US 9983796B2 · Yang et al. · 2018 [cited by applicant]
US 10067785B1 · Wei · 2018 [cited by examiner]
US 10067801B1 · Wagner · 2018 [cited by examiner]
US 10135712B2 · Wu et al. · 2018 [cited by applicant]
US 10191778B1 · Yang et al. · 2019 [cited by applicant]
US 10310966B1 · Ge et al. · 2019 [cited by applicant]
US 10397255B1 · Bhalotra et al. · 2019 [cited by applicant]
US 10432551B1 · Vosshall et al. · 2019 [cited by applicant]
US 10581964B2 · Einkauf et al. · 2020 [cited by applicant]
US 10606646B1 · Christensen · 2020 [cited by applicant]
US 10606660B1 · Hartley et al. · 2020 [cited by applicant]
US 10771337B1 · Das et al. · 2020 [cited by applicant]
US 10824474B1 · Kamboj et al. · 2020 [cited by applicant]
US 10871995B2 · Gerdesmeier et al. · 2020 [cited by applicant]
US 10901764B2 · Tegtmeier et al. · 2021 [cited by applicant]
US 11385938B2 · Kim · 2022 [cited by applicant]
US 11392422B1 · Filiz et al. · 2022 [cited by applicant]
US 11403150B1 · Featonby et al. · 2022 [cited by applicant]
US 11422844B1 · Filiz et al. · 2022 [cited by applicant]
US 11449355B2 · Jin et al. · 2022 [cited by applicant]
US 11487591B1 · Featonby · 2022 [cited by applicant]
US 11573816B1 · Featonby et al. · 2023 [cited by applicant]
US 11797287B1 · Ghai et al. · 2023 [cited by applicant]
US 11853807B1 · Coult et al. · 2023 [cited by applicant]
US 11892418B1 · Featonby et al. · 2024 [cited by applicant]
US 11989586B1 · Srikanta et al. · 2024 [cited by applicant]
US 11995466B1 · Srikanta et al. · 2024 [cited by applicant]
US 12190144B1 · Featonby et al. · 2025 [cited by applicant]
US 20050002375A1 · Gokhale et al. · 2005 [cited by applicant]
US 20080282267A1 · Adam et al. · 2008 [cited by applicant]
US 20110246515A1 · Johnson et al. · 2011 [cited by applicant]
US 20120179824A1 · Jackson · 2012 [cited by applicant]
US 20120210326A1 · Torr et al. · 2012 [cited by applicant]
US 20120233668A1 · Leafe et al. · 2012 [cited by applicant]
US 20130124807A1 · Nielsen et al. · 2013 [cited by applicant]
US 20130160008A1 · Cawlfield et al. · 2013 [cited by applicant]
US 20130238785A1 · Hawk et al. · 2013 [cited by applicant]
US 20130297964A1 · Hegdal et al. · 2013 [cited by applicant]
US 20130318132A1 · Basu · 2013 [cited by examiner]
US 20140079207A1 · Zhakov et al. · 2014 [cited by applicant]
US 20140358710A1 · Balestrieri et al. · 2014 [cited by applicant]
US 20140366093A1 · Oh et al. · 2014 [cited by applicant]
US 20150106805A1 · Melander et al. · 2015 [cited by applicant]
US 20150142878A1 · Hebert et al. · 2015 [cited by applicant]
US 20160077846A1 · Phillips et al. · 2016 [cited by applicant]
US 20160112497A1 · Koushik et al. · 2016 [cited by applicant]
US 20160274928A1 · Linton et al. · 2016 [cited by applicant]
US 20160323377A1 · Einkauf et al. · 2016 [cited by applicant]
US 20160378559A1 · Bhandarkar et al. · 2016 [cited by applicant]
US 20170060621A1 · Whipple et al. · 2017 [cited by applicant]
US 20170063659A1 · Platon et al. · 2017 [cited by applicant]
US 20170078433A1 · Radhakrishnan et al. · 2017 [cited by applicant]
US 20170090960A1 · Anderson et al. · 2017 [cited by applicant]
US 20170090961A1 · Wagner et al. · 2017 [cited by applicant]
US 20170115978A1 · Modi et al. · 2017 [cited by applicant]
US 20170140526A1 · Chen et al. · 2017 [cited by applicant]
US 20170177413A1 · Wisniewski et al. · 2017 [cited by applicant]
US 20170177860A1 · Suarez et al. · 2017 [cited by applicant]
US 20170177877A1 · Suarez et al. · 2017 [cited by applicant]
US 20170180346A1 · Suarez et al. · 2017 [cited by applicant]
US 20170339158A1 · Lewis et al. · 2017 [cited by applicant]
US 20170339196A1 · Lewis et al. · 2017 [cited by applicant]
US 20170371703A1 · Wagner et al. · 2017 [cited by applicant]
US 20170372703A1 · Wagner et al. · 2017 [cited by applicant]
US 20180004503A1 · OlmstedThompson · 2018 [cited by applicant]
US 20180088993A1 · Gerdesmeier et al. · 2018 [cited by applicant]
US 20180101403A1 · Baldini Soares et al. · 2018 [cited by applicant]
US 20180129539A1 · Sadat · 2018 [cited by applicant]
US 20180150325A1 · Kuo et al. · 2018 [cited by applicant]
US 20180246745A1 · Aronovich et al. · 2018 [cited by applicant]
US 20180267990A1 · Cherukuri et al. · 2018 [cited by applicant]
US 20180278639A1 · Bernstein et al. · 2018 [cited by applicant]
US 20180285204A1 · Dwarampudi et al. · 2018 [cited by applicant]
US 20180331971A1 · Certain et al. · 2018 [cited by applicant]
US 20180336345A1 · Georgiev · 2018 [cited by applicant]
US 20190050680A1 · Waugh et al. · 2019 [cited by applicant]
US 20190079788A1 · Ruty et al. · 2019 [cited by applicant]
US 20190102231A1 · Wagner · 2019 [cited by applicant]
US 20190108049A1 · Singh et al. · 2019 [cited by applicant]
US 20190146772A1 · Griffin et al. · 2019 [cited by applicant]
US 20190146774A1 · Moore et al. · 2019 [cited by applicant]
US 20190149406A1 · Fratini · 2019 [cited by applicant]
US 20190188107A1 · Alston et al. · 2019 [cited by applicant]
US 20190243681A1 · Chen · 2019 [cited by applicant]
US 20190294477A1 · Koppes et al. · 2019 [cited by applicant]
US 20190303274A1 · Funnell et al. · 2019 [cited by applicant]
US 20190324786A1 · Ranjan et al. · 2019 [cited by applicant]
US 20190340033A1 · Ganteaume · 2019 [cited by applicant]
US 20190342266A1 · Ramachandran et al. · 2019 [cited by applicant]
US 20190347127A1 · Coady et al. · 2019 [cited by applicant]
US 20190391834A1 · Mullen · 2019 [cited by applicant]
US 20190392045A1 · De Lima Junior et al. · 2019 [cited by applicant]
US 20200051017A1 · Dujmic · 2020 [cited by applicant]
US 20200073649A1 · Viana et al. · 2020 [cited by applicant]
US 20200084202A1 · Smith et al. · 2020 [cited by applicant]
US 20200133718A1 · Koehler et al. · 2020 [cited by applicant]
US 20200142711A1 · Varda et al. · 2020 [cited by applicant]
US 20200174842A1 · Wang et al. · 2020 [cited by applicant]
US 20200174844A1 · Bergsma · 2020 [cited by examiner]
US 20200210227A1 · Xie et al. · 2020 [cited by applicant]
US 20200213279A1 · Xiong et al. · 2020 [cited by applicant]
US 20200225983A1 · Jung et al. · 2020 [cited by applicant]
US 20200241930A1 · Garg et al. · 2020 [cited by applicant]
US 20200249977A1 · Mentz et al. · 2020 [cited by applicant]
US 20200310845A1 · Liguori et al. · 2020 [cited by applicant]
US 20200310850A1 · Liguori et al. · 2020 [cited by applicant]
US 20200356387A1 · Anwar et al. · 2020 [cited by applicant]
US 20200358719A1 · Mestery et al. · 2020 [cited by applicant]
US 20200412596A1 · Cherunni · 2020 [cited by applicant]
US 20210019179A1 · Yadav et al. · 2021 [cited by applicant]
US 20210064442A1 · Alluboyina et al. · 2021 [cited by applicant]
US 20210089361A1 · Rafey et al. · 2021 [cited by applicant]
US 20210109775A1 · Shen et al. · 2021 [cited by applicant]
US 20210117217A1 · Croteau et al. · 2021 [cited by applicant]
US 20210141655A1 · Gamage et al. · 2021 [cited by applicant]
US 20210144517A1 · Guim et al. · 2021 [cited by applicant]
US 20210158083A1 · Gan et al. · 2021 [cited by applicant]
US 20210160162A1 · Abbas · 2021 [cited by applicant]
US 20210184942A1 · Tootaghaj et al. · 2021 [cited by applicant]
US 20210191748A1 · Ito · 2021 [cited by applicant]
US 20210232344A1 · Corrie · 2021 [cited by applicant]
US 20210311764A1 · Rosoff et al. · 2021 [cited by applicant]
US 20210357255A1 · Mahadik et al. · 2021 [cited by applicant]
US 20220035646A1 · Ibryam · 2022 [cited by applicant]
US 20220188167A1 · Iyer et al. · 2022 [cited by applicant]
US 20220229651A1 · Wu et al. · 2022 [cited by applicant]
U.S. Appl. No. 16/217,454, filed Dec. 12, 2018, Aithal et al. [cited by applicant]
U.S. Appl. No. 16/367,801, filed Mar. 28, 2019, Featonby et al. [cited by applicant]
U.S. Appl. No. 16/699,309, filed Nov. 29, 2019, Goodman et al. [cited by applicant]
U.S. Appl. No. 16/909,756, filed Jun. 23, 2020, Featonby et al. [cited by applicant]
Chavan, et al., “Clustered Virtual Machines for Higher Availability of Resources with Improved Scalability in Cloud Computing,” 2014 IEEE, pp. 221-225. [cited by applicant]
Chen, et al., “Virtual Cluster: Customizing the Cluster Environment through Virtual Machines,” 2008 IEEE, pp. 411-416. [cited by applicant]
Dettori, “Blueprint for Business Middleware as a Managed Cloud Service”, IEEE International Conference on Cloud Engineering, 2014, pp. 261-270. [cited by applicant]
Sharifi, et al., “VCE: A New Personated Virtual Cluster Engine for Cluster Computing,” 2008 IEEE, 6 pages. [cited by applicant]