On 10.02.2021 04:52, Yang Shi wrote: > On Tue, Feb 9, 2021 at 5:27 PM Roman Gushchin <guro@xxxxxx> wrote: >> >> On Tue, Feb 09, 2021 at 09:46:43AM -0800, Yang Shi wrote: >>> Use per memcg's nr_deferred for memcg aware shrinkers. The shrinker's nr_deferred >>> will be used in the following cases: >>> 1. Non memcg aware shrinkers >>> 2. !CONFIG_MEMCG >>> 3. memcg is disabled by boot parameter >>> >>> Signed-off-by: Yang Shi <shy828301@xxxxxxxxx> >>> --- >>> mm/vmscan.c | 78 ++++++++++++++++++++++++++++++++++++++++++++--------- >>> 1 file changed, 66 insertions(+), 12 deletions(-) >>> >>> diff --git a/mm/vmscan.c b/mm/vmscan.c >>> index d4b030a0b2a9..748aa6e90f83 100644 >>> --- a/mm/vmscan.c >>> +++ b/mm/vmscan.c >>> @@ -368,6 +368,24 @@ static void unregister_memcg_shrinker(struct shrinker *shrinker) >>> up_write(&shrinker_rwsem); >>> } >>> >>> +static long count_nr_deferred_memcg(int nid, struct shrinker *shrinker, >>> + struct mem_cgroup *memcg) >> >> "Count" is not associated with xchg() semantics in my head, but I don't know >> what's the better version. Maybe steal or pop? > > It is used to retrieve the nr_deferred value. I don't think "steal" or > "pop" helps understand. Actually "count" is borrowed from > count_objects() method of shrinker. I'd also voted for another name. xchg_nr_deferred() or steal/pop sound better for me.