At some point on one of my hosts (likely when another host in the cluster was in maintenance mode), there was memory contention on the host and it invoked the balloon driver on one of my VMs. Ok, understood. However, I'm trying to get an understanding on when the balloon should "deflate".
The host is now in a high state with zero contention but the balloon driver in the VM stays inflated. Does the balloon only deflate when the VM requires that memory back? I understand the need for the balloon driver and it makes sense when it's used but I don't like the fact that it remains active long after the contention has been removed (possibly causing the VM OS to swap locally?) Oh and I have no reservations, no limits, no resource pools.
Incidentally, I migrated the VM to a new host and the ballooning stopped and did not re-occur (so far...)
Here's an exerpt from the esxtop before I migrated the VM.
4:09:08pm up 27 days 14:45, 311 worlds; MEM overcommit avg: 0.00, 0.00, 0.00
PMEM /MB: 65525 total: 1359 vmk, 51896 other, 12269 free
VMKMEM/MB: 64475 managed: 3868 minfree, 8143 rsvd, 56332 ursvd, high state
NUMA /MB: 32191 ( 7682), 32623 ( 6424)
PSHARE/MB: 4625 shared, 1296 common: 3329 saving
SWAP /MB: 222 curr, 147 rclmtgt: 0.00 r/s, 0.00 w/s
ZIP /MB: 172 zipped, 115 saved
MEMCTL/MB: 2662 curr, 2662 target, 37239 max
GID NAME MEMSZ GRANT SZTGT TCHD TCHD_W SWCUR SWTGT SWR/s SWW/s OVHDUW OVHD OVHDMAX
1382063 VMNORMAL1 8192.00 8191.05 8279.96 655.36 573.44 0.95 0.00 0.00 0.00 53.99 91.48 183.30
1744260 VMNORMAL2 4096.00 4096.00 4115.46 204.80 163.84 0.00 0.00 0.00 0.00 37.80 64.50 135.35
1078435 VMNORMAL3 4096.00 4096.00 4167.01 122.88 122.88 0.00 0.00 0.00 0.00 48.14 72.68 139.47
2865 VMBALLOON 4096.00 1076.02 870.70 28.67 14.34 105.55 147.73 0.00 0.00 48.14 73.98 138.97
Indeed, your guess is correct - the balloon driver does not 'actively' return memory when the contention condition ends - it waits until the VM explicitly needs the memory to do so.
Migrating a VM always causes the balloon driver to release its hold.
Indeed, your guess is correct - the balloon driver does not 'actively' return memory when the contention condition ends - it waits until the VM explicitly needs the memory to do so.
Migrating a VM always causes the balloon driver to release its hold.