Patch "netfilter: conntrack: revisit the gc initial rescheduling bias" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    netfilter: conntrack: revisit the gc initial rescheduling bias

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     netfilter-conntrack-revisit-the-gc-initial-reschedul.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b70ec3a04fb152445addd00bfee1a7ad154aff36
Author: Antoine Tenart <atenart@xxxxxxxxxx>
Date:   Fri Sep 16 11:29:41 2022 +0200

    netfilter: conntrack: revisit the gc initial rescheduling bias
    
    [ Upstream commit 2aa192757005f130b2dd3547dda6e462e761199f ]
    
    The previous commit changed the way the rescheduling delay is computed
    which has a side effect: the bias is now represented as much as the
    other entries in the rescheduling delay which makes the logic to kick in
    only with very large sets, as the initial interval is very large
    (INT_MAX).
    
    Revisit the GC initial bias to allow more frequent GC for smaller sets
    while still avoiding wakeups when a machine is mostly idle. We're moving
    from a large initial value to pretending we have 100 entries expiring at
    the upper bound. This way only a few entries having a small timeout
    won't impact much the rescheduling delay and non-idle machines will have
    enough entries to lower the delay when needed. This also improves
    readability as the initial bias is now linked to what is computed
    instead of being an arbitrary large value.
    
    Fixes: 2cfadb761d3d ("netfilter: conntrack: revisit gc autotuning")
    Suggested-by: Florian Westphal <fw@xxxxxxxxx>
    Signed-off-by: Antoine Tenart <atenart@xxxxxxxxxx>
    Signed-off-by: Florian Westphal <fw@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index ee72da164190..9da5ee6c50cd 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -86,10 +86,12 @@ static DEFINE_MUTEX(nf_conntrack_mutex);
 /* clamp timeouts to this value (TCP unacked) */
 #define GC_SCAN_INTERVAL_CLAMP	(300ul * HZ)
 
-/* large initial bias so that we don't scan often just because we have
- * three entries with a 1s timeout.
+/* Initial bias pretending we have 100 entries at the upper bound so we don't
+ * wakeup often just because we have three entries with a 1s timeout while still
+ * allowing non-idle machines to wakeup more often when needed.
  */
-#define GC_SCAN_INTERVAL_INIT	INT_MAX
+#define GC_SCAN_INITIAL_COUNT	100
+#define GC_SCAN_INTERVAL_INIT	GC_SCAN_INTERVAL_MAX
 
 #define GC_SCAN_MAX_DURATION	msecs_to_jiffies(10)
 #define GC_SCAN_EXPIRED_MAX	(64000u / HZ)
@@ -1450,7 +1452,7 @@ static void gc_worker(struct work_struct *work)
 
 	if (i == 0) {
 		gc_work->avg_timeout = GC_SCAN_INTERVAL_INIT;
-		gc_work->count = 1;
+		gc_work->count = GC_SCAN_INITIAL_COUNT;
 		gc_work->start_time = start_time;
 	}
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux