mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	Use the kernel's built-in formula for computing this value. The value applied by OpenWRT's sysctl configuration file does not scale with the available memory, under-using hardware capabilities. Also, that formula also influences net.netfilter.nf_conntrack_buckets, which should improve conntrack performance in average (fewer connections per hashtable bucket). Backport upstream commit for its effect on the number of connections per hashtable bucket. Apply a hack patch to set the RAM size divisor to a more reasonable value (2048, down from 16384) for our use case, a typical router handling several thousands of connections. Signed-off-by: Vincent Pelletier <plr.vincent@gmail.com> Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
		
			
				
	
	
		
			26 lines
		
	
	
		
			1006 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			1006 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 804fbb3f2ec9283f7b778e057a68bfff440a0be6 Mon Sep 17 00:00:00 2001
 | 
						|
From: Rui Salvaterra <rsalvaterra@gmail.com>
 | 
						|
Date: Wed, 30 Mar 2022 22:51:55 +0100
 | 
						|
Subject: [PATCH] kernel: ct: size the hashtable more adequately
 | 
						|
 | 
						|
To set the default size of the connection tracking hash table, a divider of
 | 
						|
16384 becomes inadequate for a router handling lots of connections. Divide by
 | 
						|
2048 instead, making the default size scale better with the available RAM.
 | 
						|
 | 
						|
Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
 | 
						|
---
 | 
						|
 net/netfilter/nf_conntrack_core.c | 2 +-
 | 
						|
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
						|
 | 
						|
--- a/net/netfilter/nf_conntrack_core.c
 | 
						|
+++ b/net/netfilter/nf_conntrack_core.c
 | 
						|
@@ -2576,7 +2576,7 @@ int nf_conntrack_init_start(void)
 | 
						|
 
 | 
						|
 	if (!nf_conntrack_htable_size) {
 | 
						|
 		nf_conntrack_htable_size
 | 
						|
-			= (((nr_pages << PAGE_SHIFT) / 16384)
 | 
						|
+			= (((nr_pages << PAGE_SHIFT) / 2048)
 | 
						|
 			   / sizeof(struct hlist_head));
 | 
						|
 		if (BITS_PER_LONG >= 64 &&
 | 
						|
 		    nr_pages > (4 * (1024 * 1024 * 1024 / PAGE_SIZE)))
 |