So... I tried to use memory overcommit on KVM this week, and it blew up in my face. Apparently it's configured such that if I have a Service Offering of 4G, and I set memory overprovisioning to 2:1, the guest only actually gets configured with 2G. That's not how overprovisioning is supposed to work, IMO.
Here's a vm definition with a 3:1 mem overprovision setting, which ensures that system vms don't work: <memory unit='KiB'>262144</memory> <currentMemory unit='KiB'>87040</currentMemory> Note currentMemory needs to be manually tuned if I ever want the vm to use/see more. This is more for live scaling (which is also broken because the guest could just rmmod virtio-balloon and see everything). I'd like to just rip out the code that is setting ballooning feature based on overprovisioning factor, but perhaps there was a reason this was done. From my point of view, if I give someone a service offering that says 4G, it should provide 4G, and if I can do memory deduplication on the backend to overprovision that's up to me to do. Overprovisioning should not be a divider on all service offerings.