US 11,734,064 B2
Automated virtual machine resource management in container-supported many task computing
Henry Gabriel Victor Bequet, Cary, NC (US); Ronald Earl Stogner, Cary, NC (US); Eric Jian Yang, Morrisville, NC (US); and Chaowang “Ricky” Zhang, Morrisville, NC (US)
Assigned to SAS Institute Inc., Cary, NC (US)
Filed by SAS Institute Inc., Cary, NC (US)
Filed on Apr. 29, 2022, as Appl. No. 17/733,090.
Application 17/733,090 is a continuation in part of application No. 17/682,783, filed on Feb. 28, 2022, granted, now 11,474,863.
Application 17/682,783 is a continuation in part of application No. 17/563,697, filed on Dec. 28, 2021, granted, now 11,513,850.
Application 17/563,697 is a continuation of application No. 17/558,237, filed on Dec. 21, 2021, granted, now 11,455,190.
Application 17/558,237 is a continuation in part of application No. 17/308,355, filed on May 5, 2021, granted, now 11,204,809, issued on Dec. 21, 2021.
Application 17/308,355 is a continuation of application No. 17/255,023, filed on Dec. 22, 2020, granted, now 11,153,939.
Application 17/255,023 is a continuation in part of application No. 17/139,364, filed on Dec. 31, 2020, granted, now 11,144,293, issued on Oct. 12, 2021.
Application 17/139,364 is a continuation in part of application No. 17/064,577, filed on Oct. 6, 2020, granted, now 11,080,031, issued on Aug. 3, 2021.
Application 17/064,577 is a continuation in part of application No. 16/814,481, filed on Mar. 10, 2020, granted, now 10,795,935, issued on Oct. 6, 2020.
Application 16/814,481 is a continuation in part of application No. 16/708,179, filed on Dec. 9, 2019, granted, now 10,740,076, issued on Aug. 11, 2020.
Application 16/708,179 is a continuation in part of application No. 16/587,965, filed on Sep. 30, 2019, granted, now 10,650,046, issued on May 12, 2020.
Application 16/587,965 is a continuation in part of application No. 16/556,573, filed on Aug. 30, 2019, granted, now 10,650,045, issued on May 12, 2020.
Application 16/556,573 is a continuation in part of application No. 15/539,222, filed on Aug. 13, 2019, granted, now 10,649,750, issued on May 12, 2020.
Application 15/539,222 is a continuation of application No. 15/538,734, filed on Aug. 12, 2019, granted, now 10,642,896, issued on May 5, 2020.
Application 15/538,734 is a continuation in part of application No. 16/223,518, filed on Dec. 18, 2018, granted, now 10,380,185, issued on Aug. 13, 2019.
Application 16/223,518 is a continuation in part of application No. 16/205,424, filed on Nov. 30, 2018, granted, now 10,346,476, issued on Jul. 9, 2019.
Application 16/205,424 is a continuation in part of application No. 15/897,723, filed on Feb. 15, 2018, granted, now 10,331,495, issued on Jun. 25, 2019.
Application 15/897,723 is a continuation in part of application No. 16/236,401, filed on Dec. 29, 2018, granted, now 10,409,863, issued on Sep. 10, 2019.
Application 16/236,401 is a continuation in part of application No. 16/039,745, filed on Jul. 19, 2018, granted, now 10,360,069, issued on Jul. 23, 2019.
Application 16/039,745 is a continuation in part of application No. 15/897,723, filed on Feb. 15, 2018, granted, now 10,331,495, issued on Jun. 25, 2019.
Application 15/897,723 is a continuation in part of application No. 15/896,613, filed on Feb. 14, 2018, granted, now 10,002,029, issued on Jun. 19, 2018.
Application 15/896,613 is a continuation in part of application No. 15/851,869, filed on Dec. 22, 2017, granted, now 10,078,710, issued on Sep. 18, 2018.
Application 15/851,869 is a continuation of application No. 15/613,516, filed on Jun. 5, 2017, granted, now 9,852,013, issued on Dec. 26, 2017.
Application 15/613,516 is a continuation of application No. 15/425,886, filed on Feb. 6, 2017, granted, now 9,684,544, issued on Jun. 20, 2017.
Application 15/425,886 is a continuation of application No. 15/425,749, filed on Feb. 6, 2017, granted, now 9,684,543, issued on Jun. 20, 2017.
Claims priority of provisional application 63/157,419, filed on Mar. 5, 2021.
Claims priority of provisional application 63/159,428, filed on Mar. 10, 2021.
Claims priority of provisional application 63/185,570, filed on May 7, 2021.
Claims priority of provisional application 63/252,070, filed on Oct. 4, 2021.
Claims priority of provisional application 63/139,703, filed on Jan. 20, 2021.
Claims priority of provisional application 63/006,516, filed on Apr. 7, 2020.
Claims priority of provisional application 63/008,830, filed on Apr. 13, 2020.
Claims priority of provisional application 63/015,274, filed on Apr. 24, 2020.
Claims priority of provisional application 63/029,989, filed on May 26, 2020.
Claims priority of provisional application 62/972,240, filed on Feb. 10, 2020.
Claims priority of provisional application 62/985,455, filed on Mar. 5, 2020.
Claims priority of provisional application 62/816,160, filed on Mar. 10, 2019.
Claims priority of provisional application 62/776,691, filed on Dec. 7, 2018.
Claims priority of provisional application 62/739,314, filed on Sep. 30, 2018.
Claims priority of provisional application 62/725,186, filed on Aug. 30, 2018.
Claims priority of provisional application 62/717,873, filed on Aug. 12, 2018.
Claims priority of provisional application 62/654,643, filed on Apr. 9, 2018.
Claims priority of provisional application 62/631,462, filed on Feb. 15, 2018.
Claims priority of provisional application 62/801,173, filed on Feb. 5, 2019.
Claims priority of provisional application 62/689,040, filed on Jun. 22, 2018.
Claims priority of provisional application 62/534,678, filed on Jul. 19, 2017.
Claims priority of provisional application 62/560,506, filed on Sep. 19, 2017.
Claims priority of provisional application 62/460,000, filed on Feb. 16, 2017.
Claims priority of provisional application 62/297,454, filed on Feb. 19, 2016.
Claims priority of provisional application 62/292,078, filed on Feb. 5, 2016.
Prior Publication US 2022/0253335 A1, Aug. 11, 2022
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 9/48 (2006.01)
CPC G06F 9/4881 (2013.01) [G06F 9/485 (2013.01)] 30 Claims
OG exemplary drawing
 
1. An apparatus comprising at least one processor and a storage to store instructions that, when executed by the at least one processor, cause the at least one processor to perform operations comprising:
receive, at the at least one processor, and from a requesting device via a network, a request to perform a job flow, wherein:
the job flow is defined in a job flow definition that specifies a set of tasks to be performed via execution of a corresponding set of task routines during a performance of the job flow, and that specifies data dependencies among the set of task routines; and
the set of task routines are executed within a set of task containers instantiated within at least one virtual machine (VM);
store, within a job queue, a job performance request message comprising an indication of receiving the request to perform the job flow;
within a performance container, execute instructions of a performance routine to cause the at least one processor to, in response to the storage of the job performance request message within the job queue, perform operations comprising:
based on the data dependencies among the set of tasks specified in the job flow definition, derive an order of performance of the set of tasks that specifies a subset of tasks of the set of tasks that are able to be performed in parallel, and derive a quantity of task containers within the set of task containers that enables parallel execution of a corresponding subset of task routines to cause the parallel performance of the subset of tasks;
based on at least the derived quantity of task containers within the set of task containers, derive a quantity of at least one other VM that, in combination with the at least one VM, provides resources to enable instantiation of the derived quantity of task containers to enable the parallel execution of the subset of task routines;
provide, to a VM allocation routine executed by the at least one processor, an indication of a need for provision of the at least one other VM, wherein execution of the VM allocation routine causes the at least one processor to allocate the at least one VM; and
store, within a task queue, multiple task routine execution request messages that each comprise an identifier associated with a task of the subset of tasks to enable the parallel execution of the subset of task routines within the set of task containers; and
within the performance container, in response to at least storage of multiple execution completion messages within the task queue that are indicative of completion of execution of the subset of task routines, perform operations comprising:
provide, to the VM allocation routine, an indication of cessation of the need for provision of the at least one other VM.