mm, pcp: share common code between memory hotplug and percpu sysctl handler
Both the percpu_pagelist_fraction sysctl handler and memory hotplug have a common requirement of updating the pcpu page allocation batch and high values. Split the relevant helper to share common code. No functional change. Link: http://lkml.kernel.org/r/20191021094808.28824-3-mgorman@techsingularity.net Signed-off-by: Mel Gorman <mgorman@techsingularity.net> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: Borislav Petkov <bp@alien8.de> Cc: Matt Fleming <matt@codeblueprint.co.uk> Cc: Qian Cai <cai@lca.pw> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5e27a2df03
commit
cb1ef534ce
|
@ -7988,6 +7988,15 @@ int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *table, int write,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __zone_pcp_update(struct zone *zone)
|
||||||
|
{
|
||||||
|
unsigned int cpu;
|
||||||
|
|
||||||
|
for_each_possible_cpu(cpu)
|
||||||
|
pageset_set_high_and_batch(zone,
|
||||||
|
per_cpu_ptr(zone->pageset, cpu));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* percpu_pagelist_fraction - changes the pcp->high for each zone on each
|
* percpu_pagelist_fraction - changes the pcp->high for each zone on each
|
||||||
* cpu. It is the fraction of total pages in each zone that a hot per cpu
|
* cpu. It is the fraction of total pages in each zone that a hot per cpu
|
||||||
|
@ -8019,13 +8028,8 @@ int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *table, int write,
|
||||||
if (percpu_pagelist_fraction == old_percpu_pagelist_fraction)
|
if (percpu_pagelist_fraction == old_percpu_pagelist_fraction)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
for_each_populated_zone(zone) {
|
for_each_populated_zone(zone)
|
||||||
unsigned int cpu;
|
__zone_pcp_update(zone);
|
||||||
|
|
||||||
for_each_possible_cpu(cpu)
|
|
||||||
pageset_set_high_and_batch(zone,
|
|
||||||
per_cpu_ptr(zone->pageset, cpu));
|
|
||||||
}
|
|
||||||
out:
|
out:
|
||||||
mutex_unlock(&pcp_batch_high_lock);
|
mutex_unlock(&pcp_batch_high_lock);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -8624,11 +8628,8 @@ void free_contig_range(unsigned long pfn, unsigned int nr_pages)
|
||||||
*/
|
*/
|
||||||
void __meminit zone_pcp_update(struct zone *zone)
|
void __meminit zone_pcp_update(struct zone *zone)
|
||||||
{
|
{
|
||||||
unsigned cpu;
|
|
||||||
mutex_lock(&pcp_batch_high_lock);
|
mutex_lock(&pcp_batch_high_lock);
|
||||||
for_each_possible_cpu(cpu)
|
__zone_pcp_update(zone);
|
||||||
pageset_set_high_and_batch(zone,
|
|
||||||
per_cpu_ptr(zone->pageset, cpu));
|
|
||||||
mutex_unlock(&pcp_batch_high_lock);
|
mutex_unlock(&pcp_batch_high_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue