[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] get memory in openvz driver



On Thu, Aug 14, 2008 at 06:08:31PM +0400, Evgeniy Sokolov wrote:
On Wed, Aug 13, 2008 at 12:50:33PM +0400, Evgeniy Sokolov wrote:
OpenVZ has several parameters for memory management. All of them can be configured independetly.
Summing all the different memory limits together is wrong - this will
make it impossible to implement a 'setMemory' operation because you've
now no way of deciding which parameter to set.
It is correct calcuation of total memory.
Because of non-obvious implenetation of 'setMemory', I have asked 'how to manage memory' in begining.
I propouse to set some portion of 'memory' to each limit.

I don't think that will be lead to good behaviour - ultimtely I think
we'll need to expose more (all?) of these memory settings directly as
tunable resources.
Good idea! 5 setting for low memory + application
 THus for the 'memory' setting we which pick the
value which provides the primary memory size as available to apps
within the container.

In my testing the total memory inside a OpenVZ container seems to correspond to the 'lockedpages' parameter, so we should just return
that value.
How did you get total memory?
Most big part of memory is oomguarpages (by default). Lockedpages is about %1.

I've just found & read these descriptions...

http://wiki.openvz.org/Oomguarpages#oomguarpages http://wiki.openvz.org/Oomguarpages#privvmpages
  http://wiki.openvz.org/Vmguarpages#vmguarpages

To summarize
    "Oomguarpages parameter accounts the total amount of memory and
     swap space used by the processes of a particular container.

"Privvmpages parameter accounts allocated (but, possibly, not used yet) memory. The accounted value is an estimation how much memory will be really consumed when the container's applications start to use the allocated memory. Consumed memory is accounted into oomguarpages parameter

    "vmguarpages parameter controls how much memory is available to
     the Virtual Environment (i.e. how much memory its applications
can allocate by malloc(3) or other standard Linux memory allocation mechanisms"

    "The memory allocation guarantee (vmguarpages) is a primary tool
     for controlling the memory available to containers, because it
     allows administrators to provide Service Level Agreements"

So from those I'd think that 'vmguarpages' maps best into libvirt's concept of 'memory'. Though perhaps 'oomguardpages' could be set for
'memory' and 'vmguarpages' used for 'max memory'
Oomguarpages & Privvmpages & vmguarpages are settings for apps memory.

We may
1 set 'memory' to 'privvmpages' - then free will show correct value.
2 set 'memory' to 'vmguarpages' or 'oomguardpages' and
'maxmemory' to 'privvmpages'.

What do 'MaxMemory' mean for other libvirt drivers?

Bad point of it, for example:
We can set many of Oomguarpages & Privvmpages & vmguarpages but application can not start because of 'kmemsize' is over.


Daniel


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]