Just when I think I understand ESX memory management, something confuses me again. My understanding of the balloon driver, is that when an ESX host needs additional memory to allocate to other VM's that the VMKernel steals back memory from running VM's. However, I have a VM that seems to be showing that the balloon target is well over what the currently "Active" memory is, and the ESX host that the VM is running on has 6GB of unused memory. I believe this could have led this VM to get into a memory starved state once already, because I found it unresponsive, only to discover that it was only using 30% CPU and 2GB Active out of 6GB of allocated memory, but doing a ton of memory swapping. What gives?
Why in the world would the ballon driver target memory on a busy running VM, when there is plenty of free memory available on the host, and why would a guest start swapping when it's only using a fraction of the memory allocated to it and the host is sitting on pletty of free memory? None of my other VM's have memory usage charts that look like this.
What is the configuration of the host / cluster? If you are using resource pools, this could cause the problem experienced...
I agree, my second recommendation would be to check VM settings
I've ran into a similar problem, but after changing the memory limit to 'unlimited' tick box, the balloon memory is still large (1.2GB of ballooning).
hosted on 5 node Cluster, no resource pools, no HA/DRS, all VM's have 'normal' share settings
Cluster resource allocation for VM set to unlimited RAM
32GB ESX physical ram, current ESX RAM stats: 1.2G Balloon, 55% Usage, 5.5G Active, 31G allocated (another 18 VM's are powered on the ESX but the ballooning does not decrease if these are powered off)
Windows task mgr reports 100MB free of 4GB, 3GB pagfile used. Application load is applied.
No other VM's are ballooning just the single VM
The VM previously had 8GB allocated, and a RAM limit of 2048MB applied via the cluster resource allocation tab. 5.5GB of ballooning was seen in this old configuration when the VM was under load. No other VM's on the host had a ram limit applied.
Any ideas why this VM would be ballooning when the ESX usage is low? The ram limit was changed yesterday and the VM has since been rebooted but it still balloons 1.2GB?