summaryrefslogtreecommitdiffstats
path: root/mm/memory_hotplug.c
diff options
context:
space:
mode:
authorMinchan Kim <minchan.kim@gmail.com>2010-09-10 01:38:00 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2010-09-10 03:57:24 +0200
commitbc6930457460788e14b2c0808ed4632a1592bd61 (patch)
tree78e562bc90b3b99f1ba1dbc32c846127f10a67e3 /mm/memory_hotplug.c
parentkernel/groups.c: fix integer overflow in groups_search (diff)
downloadlinux-bc6930457460788e14b2c0808ed4632a1592bd61.tar.xz
linux-bc6930457460788e14b2c0808ed4632a1592bd61.zip
mm: compaction: handle active and inactive fairly in too_many_isolated
Iram reported that compaction's too_many_isolated() loops forever. (http://www.spinics.net/lists/linux-mm/msg08123.html) The meminfo when the situation happened was inactive anon is zero. That's because the system has no memory pressure until then. While all anon pages were in the active lru, compaction could select active lru as well as inactive lru. That's a different thing from vmscan's isolated. So we has been two too_many_isolated. While compaction can isolate pages in both active and inactive, current implementation of too_many_isolated only considers inactive. It made Iram's problem. This patch handles active and inactive fairly. That's because we can't expect where from and how many compaction would isolated pages. This patch changes (nr_isolated > nr_inactive) with nr_isolated > (nr_active + nr_inactive) / 2. Signed-off-by: Minchan Kim <minchan.kim@gmail.com> Reported-by: Iram Shahzad <iram.shahzad@jp.fujitsu.com> Acked-by: Mel Gorman <mel@csn.ul.ie> Acked-by: Wu Fengguang <fengguang.wu@intel.com> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memory_hotplug.c')
0 files changed, 0 insertions, 0 deletions