]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mm/vmscan: delay waking of tasks throttled on NOPROGRESS
authorMel Gorman <mgorman@techsingularity.net>
Fri, 5 Nov 2021 20:42:49 +0000 (13:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Nov 2021 20:30:40 +0000 (13:30 -0700)
Tracing indicates that tasks throttled on NOPROGRESS are woken
prematurely resulting in occasional massive spikes in direct reclaim
activity.  This patch wakes tasks throttled on NOPROGRESS if reclaim
efficiency is at least 12%.

Link: https://lkml.kernel.org/r/20211022144651.19914-9-mgorman@techsingularity.net
Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Andreas Dilger <adilger.kernel@dilger.ca>
Cc: "Darrick J . Wong" <djwong@kernel.org>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Michal Hocko <mhocko@suse.com>
Cc: NeilBrown <neilb@suse.de>
Cc: Rik van Riel <riel@surriel.com>
Cc: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/vmscan.c

index 9c125f793bf5fa394e20a3192402fc6bd614de0f..41f5f6007c30b8bfaec702f446350c754d04b80b 100644 (file)
@@ -3348,8 +3348,11 @@ static inline bool compaction_ready(struct zone *zone, struct scan_control *sc)
 
 static void consider_reclaim_throttle(pg_data_t *pgdat, struct scan_control *sc)
 {
-       /* If reclaim is making progress, wake any throttled tasks. */
-       if (sc->nr_reclaimed) {
+       /*
+        * If reclaim is making progress greater than 12% efficiency then
+        * wake all the NOPROGRESS throttled tasks.
+        */
+       if (sc->nr_reclaimed > (sc->nr_scanned >> 3)) {
                wait_queue_head_t *wqh;
 
                wqh = &pgdat->reclaim_wait[VMSCAN_THROTTLE_NOPROGRESS];