[lxc-devel] Memory Resources

Krzysztof Taraszka krzysztof.taraszka at gnuhosting.net
Sun Aug 23 12:22:23 PDT 2009


2009/8/23 Krzysztof Taraszka <krzysztof.taraszka at gnuhosting.net>

> 2009/8/23 Krzysztof Taraszka <krzysztof.taraszka at gnuhosting.net>
>
>>
>>
>> 2009/8/23 Daniel Lezcano <daniel.lezcano at free.fr>
>>
>>> Krzysztof Taraszka wrote:
>>>
>>>> 2009/8/23 Daniel Lezcano <daniel.lezcano at free.fr>
>>>>
>>>>  Krzysztof Taraszka wrote:
>>>>>
>>>>>  Hello,
>>>>>>
>>>>>> I am running lxc on my debian unstable sandbox and I have a few
>>>>>> question
>>>>>> about memory managament inside linux containers based on lxc project.
>>>>>>
>>>>>> I have got linux kernel 2.6.30.5 with enabled :
>>>>>>
>>>>>> +Resource counter
>>>>>> ++ Memory Resource Controller for Control Groups
>>>>>>  +++ Memory Resource Controller Swap Extension(EXPERIMENTAL)
>>>>>>
>>>>>> lxc-checkconfig pass all checks.
>>>>>>
>>>>>> I read about cgroups memory managament
>>>>>> (Documentation/cgroups/memory.txt)
>>>>>> and I tried to pass those value to my debian sandbox.
>>>>>>
>>>>>> And...
>>>>>> 'free -m' and 'top/htop' still show all available memory inside
>>>>>> container
>>>>>> (also If I set 32M for lxc.cgroup.memory.limit_in_bytes and
>>>>>> lxc.cgroup.memory.usage_in_bytes; and 64M for
>>>>>> lxc.cgroup.memory.memsw.usage_in_bytes and
>>>>>> lxc.cgroup.memory.memsw.limit_in_bytes free and top show all
>>>>>> resources).
>>>>>>
>>>>>> What I did wrong? Does the container always show all available memory
>>>>>> resources  without cgroup limitations?
>>>>>>
>>>>>>  At the first glance I would say the configuration is correct.
>>>>> But AFAIR, the memory cgroup is not isolated, if you specify 32MB you
>>>>> will
>>>>> see all the memory available on the system either if you are not
>>>>> allowed to
>>>>> use more than 32MB. If you create a program which allocates 64MB within
>>>>> a
>>>>> container configured with 32MB, and you "touch" the pages (may be that
>>>>> can
>>>>> be done with one mmap call with the MAP_POPULATE option), you should
>>>>> see the
>>>>> application swapping and the "memory.failcnt" increasing.
>>>>>
>>>>> IMHO, showing all the memory available for the system instead of
>>>>> showing
>>>>> the allowed memory with the cgroup is weird but maybe there is a good
>>>>> reason
>>>>> to do that.
>>>>>
>>>>>
>>>>>
>>>> Thank you Daniel for your reply.
>>>> I think that LXC should isolate memory available for containers like
>>>> Vserver
>>>> or FreeVPS do (memory + swap) if .cgroup.memory.* and
>>>> lxc.cgroup.memory.memsw.* is set.
>>>> Is there any possibility to make a patch for linux kernel / lxc-tools to
>>>> show the limitations inside cointainers propertly? I think is a good
>>>> idea
>>>> and it should be apply as soon as possible.
>>>>
>>>
>>> Maybe a solution can be to add a new memory.meminfo file in the same
>>> format than /proc/meminfo, so it will be possible to mount --bind
>>> /cgroup/foo/memory.meminfo to /proc/meminfo for the container.
>>>
>>
>> Yes, I thought the same. This should allow the user-space tools based on
>> /proc/meminfo (such as comand line "free") show limited information :)
>>
>
> Hmmm... does the memory.stat is a good start point for make new one object
> memory.meminfo similar to /proc/meminfo? If so, I can play by my self with
> lxc-tools code.
>


Hmmm... Daniel, I have got a question (that do I thinking in the right way).
here is an output from /proc/meminfo from openvz:


MemTotal:             262144 kB
MemFree:            232560 kB
Buffers:             0 kB
Cached:            0 kB
SwapCached:        0 kB
Active:            0 kB
Inactive:            0 kB
HighTotal:            0 kB
HighFree:            0 kB
LowTotal:             262144 kB
LowFree:            232560 kB
SwapTotal:        0 kB
SwapFree:        0 kB
Dirty:             0 kB
Writeback:        0 kB
AnonPages:        0 kB
Mapped:            0 kB
Slab:                0 kB
SReclaimable:            0 kB
SUnreclaim:              0 kB
PageTables:              0 kB
NFS_Unstable:           0 kB
Bounce:                  0 kB
WritebackTmp:            0 kB
CommitLimit:             0 kB
Committed_AS:            0 kB
VmallocTotal:            0 kB
VmallocUsed:             0 kB
VmallocChunk:            0 kB
HugePages_Total:    0
HugePages_Free:    0
HugePages_Rsvd:   0
HugePages_Surp:    0
Hugepagesize:         2048 kB

most of values are 0.

I have an question about SwapTotal and SwapFree for LXC.
As I thinking that:

MemTotal might be: hierarchical_memory_limit
MemFree might be: hierarchical_memory_limit - cache

the

SwapTotal might be: hierarchical_memsw_limit
SwapFree might be: hierarchical_memsw_limit - rss

rss - # of bytes of anonymous and swap cache memory
I don't know at all that hierarchical_memsw_limit is an good value for swap
total, because as I read it is a mem+swap at all.

Does the lxc memory.meminfo might look like above? Where can I get the
Hugepagesize?

-- 
Krzysztof Taraszka


More information about the Containers mailing list