Re: [PATCH v6 00/29] kmem controller for memcg.

Glauber Costa
2012-11-05T08:15:04Z

On 11/03/2012 12:06 AM, Tejun Heo wrote:
> Hey, Joonsoo.
>
> On Sat, Nov 03, 2012 at 04:25:59AM +0900, JoonSoo Kim wrote:
>> I am worrying about data cache footprint which is possibly caused by
>> this patchset, especially slab implementation.
>> If there are several memcg cgroups, each cgroup has it's own kmem_caches.
>> When each group do slab-intensive job hard, data cache may be overflowed easily,
>> and cache miss rate will be high, therefore this would decrease system
>> performance highly.
>
> It would be nice to be able to remove such overhead too, but the
> baselines for cgroup implementations (well, at least the ones that I
> think important) in somewhat decreasing priority are...
>
> 1. Don't over-complicate the target subsystem.
>
> 2. Overhead when cgroup is not used should be minimal. Prefereably to
> the level of being unnoticeable.
>
> 3. Overhead while cgroup is being actively used should be reasonable.
>
> If you wanna split your system into N groups and maintain memory
> resource segregation among them, I don't think it's unreasonable to
> ask for paying data cache footprint overhead.
>
> So, while improvements would be nice, I wouldn't consider overheads of
> this type as a blocker.
>
> Thanks.
>
There is another thing I should add.

We are essentially replicating all the allocator meta-data, so if you
look at it, this is exactly the same thing as workloads that allocate
from different allocators (i.e.: a lot of network structures, and a lot
of dentries).

In this sense, it really basically depends what is your comparison
point. Full containers - the main (but not exclusive) reason for this,
are more or less an alternative for virtual machines. In those, you
would be allocating from a different cache because you would be getting
those through a bunch of memory address translations. From this, we do a
lot better, since we only change the cache you allocate from, keeping
all the rest unchanged.