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

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

book

Article ID: 344527

calendar_today

Updated On:

Products

VMware vCenter Server VMware vSphere ESXi

Issue/Introduction

  • 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


Environment

VMware ESX Server 3.5.x
VMware vCenter Server 4.1.x
VMware vCenter Server 4.0.x
VMware ESXi 3.5.x Installable
VMware ESX 4.1.x
VMware vSphere ESXi 5.0
VMware ESX 4.0.x
VMware ESXi 4.0.x Installable
VMware ESX Server 3.0.x
VMware vCenter Server 5.0.x
VMware vCenter Server 5.5.x
VMware vCenter Server 5.1.x
VMware vSphere ESXi 5.5
VMware ESXi 4.1.x Installable
VMware VirtualCenter 2.0.x
VMware vSphere ESXi 5.1

Resolution

This issue occurs due to 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 to use full allocation. Migrating a virtual machine from ESX 2.x to 3.x or 4.x may cause a carry-over of memory reservation lesser 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}' | more

      Note: This command can be run on any version, but you cannot 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;


      Note
      : This is useful to limit the list of virtual machines to the one host you are connected to using 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 virtual machines to the one host you are connected to using 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 unavailable for 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.
  • Migrate the virtual machine to another host.
Note: These changes do not require a restart of the virtual machine.

Additional Information

For translated versions of this article, see: