]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
mm: vmscan: do not throttle based on pfmemalloc reserves if node has no ZONE_NORMAL
authorMel Gorman <mgorman@suse.de>
Wed, 4 Jun 2014 23:07:35 +0000 (16:07 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 1 Jul 2014 03:11:53 +0000 (20:11 -0700)
commit39fe7460cf6c3cd4b9e53d8ee558f8fb4fde5b09
tree46c8b3d2b88fe40d408848be01dafe67519fd26f
parent19801fb4a801cec39a70ff9c0a9c9023bd42a1a1
mm: vmscan: do not throttle based on pfmemalloc reserves if node has no ZONE_NORMAL

commit 675becce15f320337499bc1a9356260409a5ba29 upstream.

throttle_direct_reclaim() is meant to trigger during swap-over-network
during which the min watermark is treated as a pfmemalloc reserve.  It
throttes on the first node in the zonelist but this is flawed.

The user-visible impact is that a process running on CPU whose local
memory node has no ZONE_NORMAL will stall for prolonged periods of time,
possibly indefintely.  This is due to throttle_direct_reclaim thinking the
pfmemalloc reserves are depleted when in fact they don't exist on that
node.

On a NUMA machine running a 32-bit kernel (I know) allocation requests
from CPUs on node 1 would detect no pfmemalloc reserves and the process
gets throttled.  This patch adjusts throttling of direct reclaim to
throttle based on the first node in the zonelist that has a usable
ZONE_NORMAL or lower zone.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
mm/vmscan.c