Messages in this thread | | | Date | Fri, 14 Sep 2018 07:06:51 +0200 | From | Steffen Klassert <> | Subject | Re: Regression: kernel 4.14 an later very slow with many ipsec tunnels |
| |
On Thu, Sep 13, 2018 at 11:03:25PM +0200, Florian Westphal wrote: > David Miller <davem@davemloft.net> wrote: > > From: Florian Westphal <fw@strlen.de> > > Date: Thu, 13 Sep 2018 18:38:48 +0200 > > > > > Wolfgang Walter <linux@stwm.de> wrote: > > >> What I can say is that it depends mainly on number of policy rules and SA. > > > > > > Thats already a good hint, I guess we're hitting long hash chains in > > > xfrm_policy_lookup_bytype(). > > > > I don't really see how recent changes can influence that. > > I don't think there is a recent change that did this. > > Walter says < 4.14 is ok, so this is likely related to flow cache removal. > > F.e. it looks like all prefixed policies end up in a linked list > (net->xfrm.policy_inexact) and are not even in a hash table. > > I am staring at b58555f1767c9f4e330fcf168e4e753d2d9196e0 > but can't figure out how to configure that away from the > 'no hashing for prefixed policies' default or why we even have > policy_inexact in first place :/
The hash threshold can be configured like this:
ip x p set hthresh4 0 0
This sets the hash threshold to local /0 and remote /0 netmasks. With this configuration, all policies should go to the hashtable. This might help to balance the hash chains better.
Default hash thresholds are local /32 and remote /32 netmasks, so all prefixed policies go to the inexact list.
To view the configuration:
ip -s -s x p count
| |