Re: [RFC] memory cgroup: my thoughts on memsw

Kamezawa Hiroyuki
2014-09-11T01:22:51Z

(2014/09/10 21:01), Vladimir Davydov wrote:
> On Mon, Sep 08, 2014 at 10:53:48PM +0900, Kamezawa Hiroyuki wrote:
>> (2014/09/08 20:01), Vladimir Davydov wrote:
>>> On Sat, Sep 06, 2014 at 08:15:44AM +0900, Kamezawa Hiroyuki wrote:
>>>> As you noticed, hitting anon+swap limit just means oom-kill.
>>>> My point is that using oom-killer for "server management" just seems crazy.
>>>>
>>>> Let my clarify things. your proposal was.
>>>> 1. soft-limit will be a main feature for server management.
>>>> 2. Because of soft-limit, global memory reclaim runs.
>>>> 3. Using swap at global memory reclaim can cause poor performance.
>>>> 4. So, making use of OOM-Killer for avoiding swap.
>>>>
>>>> I can't agree "4". I think
>>>>
>>>> - don't configure swap.
>>>
>>> Suppose there are two containers, each having soft limit set to 50% of
>>> total system RAM. One of the containers eats 90% of the system RAM by
>>> allocating anonymous pages. Another starts using file caches and wants
>>> more than 10% of RAM to work w/o issuing disk reads. So what should we
>>> do then?
>>> We won't be able to shrink the first container to its soft
>>> limit, because there's no swap. Leaving it as is would be unfair from
>>> the second container's point of view. Kill it? But the whole system is
>>> going OK, because the working set of the second container is easily
>>> shrinkable. Besides there may be some progress in shrinking file caches
>> >from the first container.
>>>
>>>> - use zram
>>>
>>> In fact this isn't different from the previous proposal (working w/o
>>> swap). ZRAM only compresses data while still storing them in RAM so we
>>> eventually may get into a situation where almost all RAM is full of
>>> compressed anon pages.
>>>
>>
>> In above 2 cases, "vmpressure" works fine.
>
> What if a container allocates memory so fast that the userspace thread
> handling its threshold notifications won't have time to react before it
> eats all memory?
>

Softlimit is for avoiding such unfair memory scheduling, isn't it ?

Thanks,
-Kame