Commit 3b1d92c5 authored by Mel Gorman's avatar Mel Gorman Committed by Linus Torvalds

Do not disable interrupts when reading min_free_kbytes

The sysctl handler for min_free_kbytes calls setup_per_zone_pages_min() on
read or write.  This function iterates through every zone and calls
spin_lock_irqsave() on the zone LRU lock.  When reading min_free_kbytes,
this is a total waste of time that disables interrupts on the local
processor.  It might even be noticable machines with large numbers of zones
if a process started constantly reading min_free_kbytes.

This patch only calls setup_per_zone_pages_min() only on write. Tested on
an x86 laptop and it did the right thing.
Signed-off-by: default avatarMel Gorman <mel@csn.ul.ie>
Acked-by: default avatarChristoph Lameter <clameter@engr.sgi.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 8da3430d
...@@ -3199,7 +3199,8 @@ int min_free_kbytes_sysctl_handler(ctl_table *table, int write, ...@@ -3199,7 +3199,8 @@ int min_free_kbytes_sysctl_handler(ctl_table *table, int write,
struct file *file, void __user *buffer, size_t *length, loff_t *ppos) struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
{ {
proc_dointvec(table, write, file, buffer, length, ppos); proc_dointvec(table, write, file, buffer, length, ppos);
setup_per_zone_pages_min(); if (write)
setup_per_zone_pages_min();
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment