IP Library › Granted Patent US 9,251,115
Granted Patent B2
US 9,251,115 · App. 13/788,445 · Granted Feb 2, 2016

Dynamic configuration in cloud computing environments

Inventor: Michael Bursell (Cambridge, GB)
Assignee: Citrix Systems, Inc.
G06F15/177G06F9/5072G06F9/5077
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 9,251,115
App. No.
13/788,445
Granted
Feb 2, 2016
Kind
B2
Abstract

Virtual machines, virtualization servers, and other physical resources in a cloud computing environment may be dynamically configured based on the resource usage data for the virtual machines and resource capacity data for the physical resources in the cloud system. Based on an analysis of the virtual machine resource usage data and the resource capacity data of the virtualization servers and other physical resources in the cloud computing environment, each virtual machine may be matched to one of a plurality of virtualization servers, and the resources of the virtualization servers and other physical resources in the cloud may be reallocated and reconfigured to provide additional usage capacity to the virtual machines.

Claims (73)

1. One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by a processor, cause a computing device to:

determine a virtual machine profile for a virtual machine running on a host server in a cloud computing environment;

determine one or more resource requirements of the virtual machine;

determine one or more resource capacity amounts available on the host server for the virtual machine in the cloud computing environment;

determine whether the one or more resource capacity amounts available on the host server meet the one or more resource requirements of the virtual machine;

if the one or more resource capacity amounts available on the host server do not meet the one or more resource requirements of the virtual machine, allocate different resources of the cloud computing environment to the virtual machine;

receive one or more resource usage amounts for a plurality of virtual machines in the cloud computing environment;

identify a pattern among the one or more resource usage amounts for the plurality of virtual machines in the cloud computing environment over a period of time; and

create a new virtual machine profile type based on the identified pattern among the one or more resource usage amounts for the plurality of virtual machines in the cloud computing environment.

2. The one or more non-transitory computer-readable media of claim 1 , wherein allocating the different resources of the cloud computing environment comprises moving the virtual machine from the host server to a different host server in the cloud computing environment.

3. The one or more non-transitory computer-readable media of claim 1 , storing further computer-executable instructions that, when executed by the processor, cause the computing device to:

receive a plurality of resource usage data comprising a graphics processor usage amount for each of a plurality of different virtual machines running in the cloud computing environment;

receive a plurality of resource capacity data comprising a graphics processor capacity amount for a plurality of different host servers in the cloud computing environment;

analyze the plurality of resource usage data and the plurality of resource capacity data; and

match each of the plurality of different virtual machines to one of the plurality of different host servers based on analyzing the plurality of resource usage data and the plurality of resource capacity data.

4. The one or more non-transitory computer-readable media of claim 3 , wherein the plurality of resource usage data received comprises network bandwidth usage data, network hardware usage data, central processing unit (CPU) usage data, storage usage data, and memory usage data for each of the plurality of different virtual machines.

5. The one or more non-transitory computer-readable media of claim 1 , wherein allocating the different resources of the cloud computing environment comprises reconfiguring one or more network traffic policies in the cloud computing environment.

6. The one or more non-transitory computer-readable media of claim 1 , wherein allocating the different resources of the cloud computing environment comprises allocating additional resources of the host server to the virtual machine.

7. The one or more non-transitory computer-readable media of claim 1 , storing further computer-executable instructions that, when executed by the processor, cause the computing device to:

receive a first set of resource usage data for the virtual machine;

determine the virtual machine profile for the virtual machine based on the first set of resource usage data; and

determine anticipated resource usage data for the virtual machine based on the determined virtual machine profile.

8. The one or more non-transitory computer-readable media of claim 1 , wherein the virtual machine profile comprises one of: a voice over Internet Protocol (VoIP) server profile, a web server profile, a database server profile, an application profile, a web proxy device profile, a gaming server profile, a cache device profile, a malware profile, and a botnet profile.

9. The one or more non-transitory computer-readable media of claim 7 , storing further computer-executable instructions that, when executed by the processor, cause the computing device to:

receive a second set of resource usage data for the virtual machine, the second set of resource usage data corresponding to a second period of time after a first period of time associated with the first set of resource usage data;

compare the second set of resource usage data to the anticipated resource usage data for the virtual machine; and

transmit a notification to a user device associated with the virtual machine, based on comparing the second set of resource usage data to the anticipated resource usage data for the virtual machine.

10. The one or more non-transitory computer-readable media of claim 1 , storing further computer-executable instructions that, when executed by the processor, cause the computing device to:

calculate at least one resource deficiency value as a difference between a resource usage level for the virtual machine and a corresponding resource capacity level available for the virtual machine;

compare the at least one resource deficiency value to a resource deficiency threshold; and

when the at least one resource deficiency value exceeds the resource deficiency threshold, determine an additional resource offering and provide the additional resource offering to a user device associated with the virtual machine.

11. The one or more non-transitory computer-readable media of claim 1 , storing further computer-executable instructions that, when executed by the processor, cause the computing device to:

determine one or more usage amounts of the virtual machine;

add an identifier of the virtual machine and the one or more usage amounts of the virtual machine to a first table comprising resource usage data for the plurality of virtual machines in the cloud computing environment; and

analyze the plurality of virtual machines in the cloud computing environment, using the first table, to determine a second table comprising respective predicted resource requirements of each of the plurality of virtual machines in the cloud computing environment.

12. The one or more non-transitory computer-readable media of claim 1 , storing further computer-executable instructions that, when executed by the processor, cause the computing device to:

calculate the one or more resource requirements of the virtual machine based on the virtual machine profile for the virtual machine and one or more resource usage amounts of the virtual machine.

13. The one or more non-transitory computer-readable media of claim 1 , wherein parameters of the virtual machine profile for the virtual machine comprise usage amounts of one or more physical resources of the host server, patterns of change in the usage amounts of the one or more physical resources of the host server, a minimum resource requirement threshold, and a maximum resource usage threshold.

14. The one or more non-transitory computer-readable media of claim 1 , storing further computer-executable instructions that, when executed by the processor, cause the computing device to:

determine that the virtual machine running on the host server is subject to a guaranteed performance level for the virtual machine; and

determine that a different virtual machine running on the host server is not subject to a guaranteed performance level for the different virtual machine,

wherein allocating the different resources of the cloud computing environment to the virtual machine comprises allocating sufficient resources to the virtual machine to meet the guaranteed performance level for the virtual machine.

15. The one or more non-transitory computer-readable media of claim 1 , wherein the virtual machine is configured to run a web server, and wherein the one or more non-transitory computer-readable media store further computer-executable instructions that, when executed by the processor, cause the computing device to:

determine an increased popularity of a web site hosted by the web server,

wherein allocating different resources of the cloud computing environment to the virtual machine comprises allocating additional network bandwidth to the virtual machine based on the increased popularity of the web site hosted by the web server.

16. A method, comprising:

monitoring one or more resource usage amounts of a virtual machine running on a host server in a cloud computing environment;

determining a virtual machine profile for the virtual machine running on the host server based on the monitored one or more resource usage amounts of the virtual machine;

determining one or more resource capacity amounts available on the host server for the virtual machine running on the host server in the cloud computing environment;

dynamically adjusting the one or more resource capacity amounts available on the host server for the virtual machine based on the virtual machine profile for the virtual machine, to allocate different resources of the cloud computing environment to the virtual machine;

receiving one or more resource usage amounts for a plurality of virtual machines in the cloud computing environment;

identifying a pattern among the one or more resource usage amounts for the plurality of virtual machines in the cloud computing environment over a period of time; and

creating a new virtual machine profile type based on the identified pattern among the one or more resource usage amounts for the plurality of virtual machines in the cloud computing environment.

17. The method of claim 16 , wherein parameters of the virtual machine profile for the virtual machine comprise usage amounts of one or more physical resources of the host server, patterns of change in the usage amounts of the one or more physical resources of the host server, a minimum resource requirement threshold, and a maximum resource usage threshold.

18. A system comprising:

a plurality of virtualization servers, each virtualization server of the plurality of virtualization servers comprising a hypervisor and a hardware layer having one or more physical processors, and each virtualization server of the plurality of virtualization servers being configured to execute a plurality of virtual machines;

a plurality of physical storage resources;

a plurality of physical network resources; and

a cloud-management server comprising a processor and memory storing computer-readable instructions that, when executed, cause the cloud-management server to:

receive resource usage data from the plurality of virtual machines, the resource usage data comprising usage amounts of the one or more physical processors, the plurality of physical storage resources, and the plurality of physical network resources for each of the plurality of virtual machines executing in the system;

determine a virtual machine profile for each of the plurality of virtual machines executing in the system;

receive resource capacity data from the plurality of virtualization servers, the plurality of physical storage resources, and the plurality of physical network resources;

determine a configuration for each of the plurality of virtual machines based on a virtual machine profile for each of the plurality of virtual machines, each configuration identifying a virtualization server, one or more of the one or more physical processors, one or more of the plurality of physical storage resources, and one or more of the plurality of physical network resources for a respective virtual machine;

adjust the configuration for at least one of the plurality of virtual machines based on a virtual machine profile for the at least one of the plurality of virtual machines, resource usage data for the at least one of the plurality of virtual machines, and resource capacity data for resources used by the at least one of the plurality of virtual machines;

receive one or more resource usage amounts for the plurality of virtual machines;

identify a pattern among the one or more resource usage amounts for the plurality of virtual machines over a period of time; and

create a new virtual machine profile type based on the identified pattern among the one or more resource usage amounts for the plurality of virtual machines.

19. The system of claim 18 , wherein each virtualization server of the plurality of virtualization servers comprises a resource usage monitor configured to:

directly monitor the plurality of physical storage resources;

directly monitor the plurality of physical network resources;

identify which of the plurality of virtual machines are using which physical storage resources of the plurality of physical storage resources; and

identify which of the plurality of virtual machines are using which physical network resources of the plurality of physical network resources.

20. The system of claim 18 , wherein parameters of the virtual machine profile for the virtual machine comprise usage amounts of one or more physical resources of a virtualization server, patterns of change in the usage amounts of the one or more physical resources of the virtualization server, a minimum resource requirement threshold, and a maximum resource usage threshold.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2013
From: BURSELL, MICHAEL
To: CITRIX SYSTEMS, INC,
Reel/Frame 029951/0238 →
Continuity (1)
Related Publication 20140258446A1 · Sep 11, 2014