]> git.baikalelectronics.ru Git - kernel.git/commit
mm, page_alloc: wakeup kcompactd even if kswapd cannot free more memory
authorDavid Rientjes <rientjes@google.com>
Thu, 5 Apr 2018 23:25:16 +0000 (16:25 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 6 Apr 2018 04:36:27 +0000 (21:36 -0700)
commitc165c8c80730b55d5fe693e16be64aa936c6ba41
treed830e17c2cd45583a5c0bd593586145fdc6d6796
parentc7f133d9b0b1a57dd375ae0de95733aaeb13cb9e
mm, page_alloc: wakeup kcompactd even if kswapd cannot free more memory

Kswapd will not wakeup if per-zone watermarks are not failing or if too
many previous attempts at background reclaim have failed.

This can be true if there is a lot of free memory available.  For high-
order allocations, kswapd is responsible for waking up kcompactd for
background compaction.  If the zone is not below its watermarks or
reclaim has recently failed (lots of free memory, nothing left to
reclaim), kcompactd does not get woken up.

When __GFP_DIRECT_RECLAIM is not allowed, allow kcompactd to still be
woken up even if kswapd will not reclaim.  This allows high-order
allocations, such as thp, to still trigger background compaction even
when the zone has an abundance of free memory.

Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1803111659420.209721@chino.kir.corp.google.com
Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Mel Gorman <mgorman@techsingularity.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Documentation/trace/postprocess/trace-vmscan-postprocess.pl
include/linux/mmzone.h
include/trace/events/vmscan.h
mm/page_alloc.c
mm/vmscan.c