mm/compaction.c: micro-optimization remove unnecessary branch
authorMateusz Nosek <mateusznosek0@gmail.com>
Tue, 13 Oct 2020 23:56:58 +0000 (16:56 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 14 Oct 2020 01:38:34 +0000 (18:38 -0700)
The same code can work both for 'zone->compact_considered > defer_limit'
and 'zone->compact_considered >= defer_limit'.  In the latter there is one
branch less which is more effective considering performance.

Signed-off-by: Mateusz Nosek <mateusznosek0@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Mel Gorman <mgorman@suse.de>
Cc: David Rientjes <rientjes@google.com>
Link: https://lkml.kernel.org/r/20200913190448.28649-1-mateusznosek0@gmail.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/compaction.c

index 176dcded298ee88517a5d7b9df4ab7520bde61e9..6c63844fc06144b012eebbc915f28ffad7e7aabd 100644 (file)
@@ -180,11 +180,10 @@ bool compaction_deferred(struct zone *zone, int order)
                return false;
 
        /* Avoid possible overflow */
-       if (++zone->compact_considered > defer_limit)
+       if (++zone->compact_considered >= defer_limit) {
                zone->compact_considered = defer_limit;
-
-       if (zone->compact_considered >= defer_limit)
                return false;
+       }
 
        trace_mm_compaction_deferred(zone, order);