]> Git Repo - linux.git/commit
mm: compaction: prevent kswapd compacting memory to reduce CPU usage
authorAndrea Arcangeli <[email protected]>
Tue, 22 Mar 2011 23:30:38 +0000 (16:30 -0700)
committerLinus Torvalds <[email protected]>
Wed, 23 Mar 2011 00:44:00 +0000 (17:44 -0700)
commitd527caf22e48480b102c7c6ee5b9ba12170148f7
tree7d53a2c430f8c020b6fa8390396dd2d1ce480b9a
parent89699605fe7cfd8611900346f61cb6cbf179b10a
mm: compaction: prevent kswapd compacting memory to reduce CPU usage

This patch reverts 5a03b051 ("thp: use compaction in kswapd for GFP_ATOMIC
order > 0") due to reports stating that kswapd CPU usage was higher and
IRQs were being disabled more frequently.  This was reported at
http://www.spinics.net/linux/fedora/alsa-user/msg09885.html.

Without this patch applied, CPU usage by kswapd hovers around the 20% mark
according to the tester (Arthur Marsh:
http://www.spinics.net/linux/fedora/alsa-user/msg09899.html).  With this
patch applied, it's around 2%.

The problem is not related to THP which specifies __GFP_NO_KSWAPD but is
triggered by high-order allocations hitting the low watermark for their
order and waking kswapd on kernels with CONFIG_COMPACTION set.  The most
common trigger for this is network cards configured for jumbo frames but
it's also possible it'll be triggered by fork-heavy workloads (order-1)
and some wireless cards which depend on order-1 allocations.

The symptoms for the user will be high CPU usage by kswapd in low-memory
situations which could be confused with another writeback problem.  While
a patch like 5a03b051 may be reintroduced in the future, this patch plays
it safe for now and reverts it.

[[email protected]: Beefed up the changelog]
Signed-off-by: Andrea Arcangeli <[email protected]>
Signed-off-by: Mel Gorman <[email protected]>
Reported-by: Arthur Marsh <[email protected]>
Tested-by: Arthur Marsh <[email protected]>
Cc: <[email protected]> [2.6.38.1]
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
include/linux/compaction.h
mm/compaction.c
mm/vmscan.c
This page took 0.058394 seconds and 4 git commands to generate.