On Mon, Sep 07, 2020 at 06:36:24PM +0200, Vlastimil Babka wrote: > Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx> > for_each_possible_cpu(cpu) > - setup_pageset(&per_cpu(boot_pageset, cpu), 0); > + setup_pageset(&per_cpu(boot_pageset, cpu)); This is not really anything important but I realized we have like 7 functions messing with pcp lists, and everytime I try to follow them my head spins. Since setup_pageset is only being called here, could we replace it by the pageset_init and pageset_update? (As I said, not important and probably a matter of taste. I just think that having so many mini functions around is not always cool, e.g: setup_zone_pageset->zone_pageset_init) > -/* > - * pageset_set_high() sets the high water mark for hot per_cpu_pagelist > - * to the value high for the pageset p. > - */ > -static void pageset_set_high(struct per_cpu_pageset *p, > - unsigned long high) > -{ > - unsigned long batch = max(1UL, high / 4); > - if ((high / 4) > (PAGE_SHIFT * 8)) > - batch = PAGE_SHIFT * 8; > - > - pageset_update(&p->pcp, high, batch); > + pageset_update(&p->pcp, 0, 1); > } Could we restore the comment we had in pageset_set_high, and maybe update it to match this new function? I think it would be useful. > > static void pageset_set_high_and_batch(struct zone *zone, > - struct per_cpu_pageset *pcp) > + struct per_cpu_pageset *p) > { > - if (percpu_pagelist_fraction) > - pageset_set_high(pcp, > - (zone_managed_pages(zone) / > - percpu_pagelist_fraction)); > - else > - pageset_set_batch(pcp, zone_batchsize(zone)); > + unsigned long new_high; > + unsigned long new_batch; > + int fraction = READ_ONCE(percpu_pagelist_fraction); Why the READ_ONCE? In case there is a parallel update so things to get messed up? as I said, I'd appreciate a comment in pageset_set_high_and_batch to be restored and updated, otherwise: Reviewed-by: Oscar Salvador <osalvador@xxxxxxx> Thanks -- Oscar Salvador SUSE L3