Memory ballooning is basically a mechanism for hypervisor to steal pages from the guest and yes, so it allows for over-commitment. Memory balloon driver is present inside the guest and hypervisor communicates how many pages it needs back to the driver. The driver allocates pages and sends it back to the hypervisor.