On 10.09.20 10:31, Oscar Salvador wrote: > 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? Had the same thought, so +1. >> -/* >> - * 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. At least I didn't really understand what "pageset_set_high() sets the high water mark for hot per_cpu_pagelist to the value high for the pageset p." was trying to tell me. I think the only valuable information is the "hot", meaning it is in use and we have to be careful when updating, right? >> >> 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? Agreed, this is an actual change in the code. If this is a fix, separate patch? Apart from that, looks much better to me! -- Thanks, David / dhildenb