Re: [PATCH v4 01/13] mm: Assign id to every memcg-aware shrinker

From: Kirill Tkhai
Date: Thu May 10 2018 - 05:43:04 EST

On 10.05.2018 01:55, Andrew Morton wrote:
> On Wed, 09 May 2018 14:56:55 +0300 Kirill Tkhai <ktkhai@xxxxxxxxxxxxx> wrote:
>> The patch introduces shrinker::id number, which is used to enumerate
>> memcg-aware shrinkers. The number start from 0, and the code tries
>> to maintain it as small as possible.
>> This will be used as to represent a memcg-aware shrinkers in memcg
>> shrinkers map.
>> ...
>> --- a/fs/super.c
>> +++ b/fs/super.c
>> @@ -248,6 +248,9 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags,
>> s->s_time_gran = 1000000000;
>> s->cleancache_poolid = CLEANCACHE_NO_POOL;
>> +#if defined(CONFIG_MEMCG) && !defined(CONFIG_SLOB)
> It would be more conventional to do this logic in Kconfig - define a
> new MEMCG_SHRINKER which equals MEMCG && !SLOB.
> This ifdef occurs a distressing number of times in the patchset :( I
> wonder if there's something we can do about that.
> Also, why doesn't it work with slob? Please describe the issue in the
> changelogs somewhere.

All currently existing memcg-aware shrinkers are based on list_lru, which
does not introduce separate memcg lists for SLOB case. So, the optimization
made by this patchset is not need there.

I'll make MEMCG_SHRINKER in next version like you suggested. Even if we have
no such shrinkers at the moment, we may have them in the future, and this will
be useful anyway.

> It's a pretty big patchset. I *could* merge it up in the hope that
> someone is planning do do a review soon. But is there such a person?