On Tue, Aug 08, 2017 at 01:27:27PM +0200, Alexander Bluhm wrote:
> 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?

I run with 4k or 8k there because the limit on the mbuf queues is 8k.
Actually this double queuing makes things worse at the moment and that's
why we need to bump the number so much. If not the softnet thread will
dequeue packets and drop them in the ip input queue becaue the limit was
hit. Long run the ip input queues should be removed. Didn't mpi have a
diff for that or did some work on this.

OK claudio@ on the diff (people can still fine tune via sysctl).

 
> 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;
>  
> 

-- 
:wq Claudio

Reply via email to