US 11,726,833 B2
Dynamically provisioning virtual machines from remote, multi-tier pool
Raymond Matthew Sampson, Burlington, MA (US); Kevin Joseph Webster, Burlington, MA (US); and Marcos Alejandro Di Pietro, Burlington, MA (US)
Assigned to Citrix Systems, Inc., Fort Lauderdale, FL (US)
Filed by Citrix Systems, Inc., Fort Lauderdale, FL (US)
Filed on Dec. 30, 2020, as Appl. No. 17/137,845.
Application 17/137,845 is a continuation of application No. 15/923,548, filed on Mar. 16, 2018, granted, now 10,896,069.
Prior Publication US 2021/0117245 A1, Apr. 22, 2021
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 9/50 (2006.01); G06F 9/455 (2018.01); G06F 8/65 (2018.01); G06F 8/61 (2018.01); H04L 67/10 (2022.01)
CPC G06F 9/5077 (2013.01) [G06F 8/61 (2013.01); G06F 8/65 (2013.01); G06F 9/45533 (2013.01); G06F 2209/5011 (2013.01); H04L 67/10 (2013.01)] 15 Claims
OG exemplary drawing
 
1. A method of dynamically provisioning virtual machines for running a cloud-based software application, the method comprising:
operating a set of virtual machines in a multi-tiered pool of virtual machines, the set of virtual machines implementing the cloud-based software application and including an initial virtual machine having a TVC (time-variant characteristic) and a size, wherein the TVC is network congestion;
predicting, based on usage data of the initial virtual machine, a start time at which the initial virtual machine will experience a lower usage than it does at other times; and
upon arrival of the start time, selectively swapping the initial virtual machine for a selected virtual machine having a smaller size than the initial virtual machine and a different TVC than the initial virtual machine, wherein the method further comprises, prior to selectively swapping:
querying a pool manager of the multi-tiered pool, the querying specifying a virtual machine size smaller than the size of the initial virtual machine; and
receiving a query response from the pool manager, the query response identifying multiple classes of virtual machines, the identified classes including virtual machines smaller than the initial virtual machine and having respective values of the TVC,
wherein the selected virtual machine is a first virtual machine, wherein the cloud-based software application is deployed on the first virtual machine and a second virtual machine, and wherein the method further comprises selectively swapping the second virtual machine for a second selected virtual machine having a smaller size than the second virtual machine and a different TVC than the second virtual machine, and
wherein selectively swapping the second virtual machine for the second selected virtual machine is performed after swapping the initial virtual machine and after ensuring that the selected virtual machine that replaces the initial virtual machine is running.