IP Library Granted Patent US 8,667,207
Granted Patent B2
US 8,667,207 · App. 12/895,750 · Granted Mar 4, 2014

Dynamic reallocation of physical memory responsive to virtual machine events

Inventors: Jonathan Knowles (Cambourne, GB); David Scott (Cambridge, GB)
Assignee: Citrix Systems, Inc.
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 8,667,207
App. No.
12/895,750
Filed
Sep 30, 2010
Granted
Mar 4, 2014
Kind
B2
Art Unit
2185
USPC
711/6
Abstract

Described are methods and systems for dynamically reallocating memory amongst virtual machines executing within a virtualization environment. A computer can execute a virtualization environment that can include one or more virtual machines and that can include a memory manager. The memory manager can dynamically reallocate memory by identifying a maximum and minimum memory value for each virtual machine, determining a target memory value for each virtual machine using the maximum and minimum memory value, and identifying one or more virtual machines that have an actual memory usage value that is less than the target memory value calculated for those virtual machines. To re-allocate the memory, the memory manager can allocate additional memory to the identified virtual machines by inflating a balloon driver, then de-allocate the additional memory, and reallocate the de-allocated, additional memory to other virtual machines within the virtualization environment.

Claims (42)

1. A method for dynamically reallocating memory amongst virtual machines executing within a virtualization environment, the method comprising:

identifying, by a memory manager executing on a computer, a maximum memory value and a minimum memory value for each virtual machine executing within a virtualization environment of the computer;

calculating, by the memory manager, a host compression ratio;

determining, by the memory manager using the identified maximum memory value, minimum memory value and the host compression ratio, a target memory value for each virtual machine of the virtualization environment, wherein the target value is the sum of the product of the host compression ratio and the minimum memory value and the product of the inverse of the host compression ratio and the maximum memo value;

maintaining, by the memory manager, the target memory value for each virtual machine of the virtualization environment,

identifying, by the memory manager, at least one virtual machine having an actual memory usage value less than the target memory value for the at least one virtual machine;

allocating, by the memory manager responsive to identifying the at least one virtual machine, additional memory to the at least one virtual machine by inflating a balloon driver;

de-allocating, by the memory manager responsive to allocating the additional memory, the additional memory from the at least one virtual machine by deflating the balloon driver; and

reallocating, responsive to de-allocating the additional memory, the de-allocated memory to another virtual machine executing within the virtualization environment.

2. The method of claim 1 , wherein identifying the maximum and minimum memory value further comprises identifying a maximum physical memory value and a minimum physical memory value for each virtual machine.

3. The method of claim 1 , wherein identifying the maximum and minimum memory value further comprises identifying a maximum dynamic memory value and a minimum dynamic memory value for each virtual machine.

4. The method of claim 1 , wherein allocating the additional memory further comprises allocating additional memory until the actual memory usage value of the at least one virtual machine substantially equals the target memory value for the at least one virtual machine.

5. The method of claim 4 , wherein de-allocating the additional memory further comprises de-allocating the additional memory upon determining the actual memory usage value of the at least one virtual machine substantially equals the target memory value for the at least one virtual machine.

6. The method of claim 1 , further comprising enumerating, by the memory manager responsive to de-allocating the additional memory, memory locations of the de-allocated memory.

7. The method of claim 6 , wherein reallocating the de-allocated memory further comprises reallocating the enumerated memory locations to another virtual machine.

8. The method of claim 1 , further comprising identifying a second virtual machine having an actual memory usage value greater than the target memory value for the second virtual machine.

9. The method of claim 8 , further comprising reclaiming an amount of memory from the second virtual machine, and reallocating the reclaimed memory to another virtual machine executing within the virtualization environment.

10. The method of claim 1 , wherein identifying the maximum and minimum memory values further comprises identifying a maximum memory value and a minimum memory value for each virtual machine responsive to detecting a virtual machine event.

11. The method of claim 10 , wherein detecting a virtual machine event further comprises detecting any of the following virtual machine events: a virtual machine reboot, a virtual machine start, and a dynamic constraint modification.

12. A system for dynamically reallocating memory amongst virtual machines executing within a virtualization environment, the system comprising:

a computer executing a virtualization environment comprising virtual machines; and

a memory manager executing on the computer to:

identify a maximum memory value and a minimum memory value for each virtual machine of the virtualization environment,

calculate a host compression ratio,

determine, using the identified maximum memory value, the identified minimum memory value and the host compression ratio, a target memory value for each virtual machine of the virtualization environment, wherein the target value is the sum of the product of the host compression ratio and the minimum memory value and the product of the inverse of the host compression ratio and the maximum memory value,

maintain the target memory value for each virtual machine of the virtualization environment,

identify, at least one virtual machine having an actual memory usage value less than the target memory value for the at least one virtual machine,

allocate, responsive to identifying the at least one virtual machine, additional memory to the at least one virtual machine by inflating a balloon driver,

de-allocate, responsive to allocating the additional memory, the additional memory from the at least one virtual machine by deflating the balloon driver, and

reallocate, responsive to de-allocating the additional memory, the de-allocated memory to another virtual machine executing within the virtualization environment.

13. The system of claim 12 , wherein the maximum and minimum memory value further comprise a maximum physical memory value and a minimum physical memory value.

14. The system of claim 12 , wherein the maximum and minimum memory value further comprise a maximum dynamic memory value and a minimum dynamic memory value.

15. The system of claim 12 , wherein the memory manager allocates additional memory until the actual memory usage value of the at least one virtual machine substantially equals the target memory value for the at least one virtual machine.

16. The system of claim 15 , wherein the memory manager de-allocates the additional memory upon determining the actual memory usage value of the at least one virtual machine substantially equals the target memory value for the at least one virtual machine.

17. The system of claim 12 , wherein the memory manager enumerates memory locations of the de-allocated memory responsive to de-allocating the additional memory.

18. The system of claim 17 , wherein the memory manager reallocates the enumerated memory locations to another virtual machine.

19. The system of claim 12 , wherein the memory manager identifies a second virtual machine having an actual memory usage value greater than the target memory value for the second virtual machine.

20. The system of claim 19 , wherein the memory manager reclaims an amount of memory from the second virtual machine, and reallocates the reclaimed memory to another virtual machine executing within the virtualization environment.

21. The system of claim 12 , wherein the memory manager identifies the maximum and minimum memory values responsive to detecting a virtual machine event.

22. The system of claim 21 , wherein a virtual machine event comprises anyone of a virtual machine reboot, a virtual machine start, and a dynamic constraint modification.

23. The method of claim 1 , wherein the host compression ratio is calculated by a control program.

24. The system of claim 12 , wherein the host compression ratio is calculated by a control program.

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 →
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 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 →
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 →
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 →
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 Feb 17, 2011
From: KNOWLES, JONATHAN; SCOTT, DAVID
To: CITRIX SYSTEMS, INC.
Reel/Frame 025828/0074 →
Continuity (2)
Provisional Application 61247555 · Sep 30, 2009
Related Publication 20110138147A1 · Jun 9, 2011