On Tue, Aug 08, 2017 at 12:00:58AM +0200, Alexander Bluhm wrote:
> By increasing this value from 256 to 2048 I get much better results.
Now with a define instead of a magic value.
I think the if_congestion algorithm is not compatible with the way
the network stack works now. But to make progress with performance
tuning, I think we should increase the limit here, so that it is
not hit. Then we can see real bottlenecks, learn and revisit the
congestion algorithm later.
ok?
bluhm
Index: netinet/ip.h
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/ip.h,v
retrieving revision 1.16
diff -u -p -r1.16 ip.h
--- netinet/ip.h 13 Jul 2014 13:57:56 -0000 1.16
+++ netinet/ip.h 8 Aug 2017 11:19:30 -0000
@@ -209,6 +209,10 @@ struct ip_timestamp {
#define IP_MSS 576 /* default maximum segment size
*/
#ifdef _KERNEL
+
+/* Maximum lenght for IP protocol queues */
+#define IPQ_MAXLEN 2048
+
/*
* This is the real IPv4 pseudo header, used for computing the TCP and UDP
* checksums. For the Internet checksum, struct ipovly can be used instead.
Index: netinet/ip_input.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/ip_input.c,v
retrieving revision 1.316
diff -u -p -r1.316 ip_input.c
--- netinet/ip_input.c 4 Aug 2017 14:24:05 -0000 1.316
+++ netinet/ip_input.c 8 Aug 2017 11:19:23 -0000
@@ -120,7 +120,7 @@ int ip_frags = 0;
int *ipctl_vars[IPCTL_MAXID] = IPCTL_VARS;
-struct niqueue ipintrq = NIQUEUE_INITIALIZER(IFQ_MAXLEN, NETISR_IP);
+struct niqueue ipintrq = NIQUEUE_INITIALIZER(IPQ_MAXLEN, NETISR_IP);
struct pool ipqent_pool;
struct pool ipq_pool;
Index: netinet6/ip6_input.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/ip6_input.c,v
retrieving revision 1.199
diff -u -p -r1.199 ip6_input.c
--- netinet6/ip6_input.c 4 Aug 2017 14:24:05 -0000 1.199
+++ netinet6/ip6_input.c 8 Aug 2017 11:19:43 -0000
@@ -114,7 +114,7 @@
#include <netinet/ip_carp.h>
#endif
-struct niqueue ip6intrq = NIQUEUE_INITIALIZER(IFQ_MAXLEN, NETISR_IPV6);
+struct niqueue ip6intrq = NIQUEUE_INITIALIZER(IPQ_MAXLEN, NETISR_IPV6);
struct cpumem *ip6counters;