Fwd: Re: Big performance loss from 3.4.63 to 3.10.13 when routing ipv4

From: Wolfgang Walter <hidden>
Date: 2013-10-23 17:01:59

Am Mittwoch, 23. Oktober 2013, 09:17:30 schrieben Sie:
On Wed, 2013-10-23 at 17:57 +0200, Wolfgang Walter wrote:
quoted
Am Mittwoch, 23. Oktober 2013, 05:00:01 schrieb Eric Dumazet:
quoted
On Wed, 2013-10-23 at 13:33 +0200, Wolfgang Walter wrote:
quoted
I don't know what this value actually means. But on 3.4.x it is much
higher. On a machine with 512MB ram it is 32768, on a machine with 1GB
ram it is 262144 and with 16GB ram it is 4194304.
Such huge values should not be needed. We should have at most one dst
per packet in flight.

On a loaded router, a NIC not using BQL could queue around 16,000
packets.

Of course, Qdisc layers could also store a lot of packets, but using the
default pfifo_fast is only adding 1000 packets per interface.

I guess using 65536 as the default value should be safe and reasonable

Have you tried using 32768 or 65536 ?
I use 32768 on routers with 512MB. They usually have around 50
ipsec-tunnels and only about 10 interfaces including vlan-interfaces.

On larger ones I set the bigger values from 3.4.x. That one with 16GB has
about 2000 ipsec-tunnels. It has about 80 interfaces (inlcuding vlan-
interfaces). Physically it has 8 interfaces with together about 30
hardware- queues.
offlist

OK, but you do not have the idea of actual number of entries ?

If you use SLAB, you probably can try "grep dst /proc/slabinfo"
Ah, ok. I use SLUB, but SLABINFO=y.

Without much traffic it is:

# grep dst /proc/slabinfo
xfrm_dst_cache      4435   4608    448   36    4 : tunables    0    0    0 : 
slabdata    128    128      0

on the big one. 

I can recompile the kernels with SLAB instead of SLUB if SLAB gives more 
usefull infos.

Regards,
-- 
Wolfgang Walter
Studentenwerk München
Anstalt des öffentlichen Rechts
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help