Hi Marcus,

in case of KVM the guest memory is not dynamically adjusted by hypervisor, this 
is a hypervisor limitation.  we have documented this in the FS in prerequisites 
for KVM.
https://cwiki.apache.org/confluence/display/CLOUDSTACK/CPU+and+RAM+Overcommit

One way to make this work automatically is to use a script to monitor the 
memory pressure in the guest VM and adjust the memory using cgroups.
one such script is Memory over commit manager.
more info here 
http://aglitke.wordpress.com/2011/03/03/automatic-memory-ballooning-with-mom/

Thanks,
Bharat.



On 28-Jan-2014, at 11:23 am, Marcus Sorensen 
<shadow...@gmail.com<mailto:shadow...@gmail.com>> wrote:

Yeah, that's not overprovisioning, though. That's scaling. The way
it's implemented now is just ... provisioning. It allocates exactly
what's available at the host.

Also, the vm in your example can't go to 4GB. There is nothing that
changes it's 'currentMemory' setting. Without a scaling feature it's
simply always stuck at 2GB.

On Mon, Jan 27, 2014 at 10:32 PM, Harikrishna Patnala
<harikrishna.patn...@citrix.com<mailto:harikrishna.patn...@citrix.com>> wrote:
Hi,
I think the way it was done is to guarantee minimum memory to that VM and upon 
demand it can get upto the memory defined in service offering.
Say a vm with service offering 4Gb is deployed with overprovisioing factor 2, 
we guarantee that vm should get minimum of 2GB (4GB/2) and if that VM is 
overloaded then it can get memory unto max 4GB.
This is what it is showing vm definition
<memory unit='KiB’>4GB</memory>
<currentMemory unit='KiB’>2GB</currentMemory>
"memory unit” is what it can get maximum.

-Harikrishna


On 28-Jan-2014, at 7:46 am, Marcus Sorensen 
<shadow...@gmail.com<mailto:shadow...@gmail.com>> wrote:

Its an easy fix on the KVM side, just waiting to hear any objections.
On Jan 27, 2014 6:11 PM, "Nux!" <n...@li.nux.ro<mailto:n...@li.nux.ro>> wrote:

On 28.01.2014 00:49, Marcus Sorensen wrote:

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.


Wow! I also thought, heck, KSM & thin qcows for the win! If
overprovisioning really "works" as you described then it can't possibly be
used for any commercial offering ...
This needs to get fixed.. Too late to see this in 4.3?

--
Sent from the Delta quadrant using Borg technology!

Nux!
www.nux.ro<http://www.nux.ro>



Reply via email to