Total Pageviews

My YouTube Channel

Wednesday, 15 August 2012

Balloon driver retains hold on memory causing virtual machine guest operating system performance issues


  • Balloon driver retains hold on memory, causing guest operating systems to start using swap space
  • Virtual machine guest operating systems experience performance issues or failure


This issue is caused by a discrepancy between a virtual machine's memory allocation and reservation settings.

By default, a virtual machine's Resources > Memory > Limit > Unlimited box is selected, allowing the virtual machine full use of its allocation. Migrating a virtual machine from ESX 2.x to 3.x or 4.x may cause a carry-over of memory reservation that is smaller than the virtual machine's allocated memory (likely a customer-specific setting).
The variables for comparison in the .vmx files are memsize and sched.mem.max .

To check the .vmx values for the Virtual Machines:
  1. SSH to the host(s)
  2. Run this command to list the variables for comparison: 
    • All versions:
      egrep "memsize|sched.mem.max" /vmfs/volumes/*/*/*.vmx | awk -F/ '{print $6}' | moreNote: This command can be run on any version but will not be allowed to access a Virtual Machine's .vmx file if it is powered on and running on another host.
    • In ESX 3.x/4.x:

      for VMX in `vmware-cmd -l`; do echo $VMX:; egrep "memsize|sched.mem.max" $VMX; done;

      : This is useful to limit the list of VMs to the one host you are connected to via SSH.
    • In ESXi 5.0:

      vm-support -V|sed 's/(Running)\|\|(Registered)//g'|xargs egrep "memsize|sched.mem.max"|more
      Note: This is useful to limit the list of VMs to the one host you are connected to via SSH.
If sched.mem.max is smaller than memsize, the balloon driver can start consuming memory (especially if the guest operating system application has periodic bursts of memory usage). However, this setting can cause the balloon driver to retain its hold on memory. If the guest operating system requires memory that is made unavailable by the balloon driver, the guest operating system starts using swap memory instead, which slows it down considerably.
To force the balloon driver to release its hold on memory and prevent the guest operating system from using swap space, use one of these options:
  • Set the value of sched.mem.max to the allocated memory or greater.
  • Select the virtual machine's Resources > Memory > Limit > Unlimited box.
Note: These changes do not require a restart of the virtual machine.