Re: [PATCH nf] netfilter: conntrack: refine gc worker heuristics, redux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le 16/01/2017 à 11:56, Florian Westphal a écrit :
> This further refines the changes made to conntrack gc_worker in
> commit e0df8cae6c16 ("netfilter: conntrack: refine gc worker heuristics").
> 
> The main of this change is to reduce the scan interval when evictions
> take place.
> 
> However, on the reporters' setup, there are 1-2 Million conntrack entries
> in total, and roughly 8k new connections per second.
> 
> In this case we'll always evict at least one entry per gc cycle and scan
> interval is always at 1 jiffy.
> 
> Given we scan ~10k entries per run its clearly wrong to reduce interval
> based on number of evictions, it will only waste cpu cycles.
> 
> Thus only look at the ratio (scanned entries vs. evicted entries) to make
> a decision on whether to reduce or not.
> 
> Given the fact that evictor is supposed to only kick in when system turns
> idle after a busy period, we should pick a high ratio -- this makes it 50%.
> 
> Also, get rid of GC_MAX_EVICTS.  Instead of breaking loop and instant
> resched, just don't bother checking this at all (the loop calls
> cond_resched for every bucket anyway).
> 
> Removal of GC_MAX_EVICTS was suggested by Nicolas in the past; I
> should have listened.
I (still) agree with that part, maybe it could be done in another patch.

> 
> I tested this with a vm under synflood (with
> sysctl net.netfilter.nf_conntrack_tcp_timeout_syn_recv=3).
> 
> While flood is ongoing, interval now stays at 2 seconds even though
> evictions are ongoing.
> 
> After stopping flood, table got cleaned up in less than 10 seconds.
> 
> Reported-by: Denys Fedoryshchenko <nuclearcat@xxxxxxxxxxxxxx>
> Cc: Nicolas Dichtel <nicolas.dichtel@xxxxxxxxx>
Thank you for CCing me ;-)

> Fixes: b87a2f9199ea82eaadc ("netfilter: conntrack: add gc worker to remove timed-out entries")
> Signed-off-by: Florian Westphal <fw@xxxxxxxxx>
With that patch, it's worse than before. I regularly have a delay > 30 seconds
in my tests (this was infrequent before the patch).

A solution, to fix the balance between cpu cycles consumption and short ct
events delays may be to introduce a new sysctl which allows the user to choose
between two predefined configs: short delay or long delay for ct events.
Even if I don't like this, maybe it could be acceptable with a default value set
to 'short delay'.


Regards,
Nicolas
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux