Thread (11 messages) 11 messages, 6 authors, 2015-02-27

Re: [PATCH net 2/2] rhashtable: remove indirection for grow/shrink decision functions

From: Patrick McHardy <hidden>
Date: 2015-02-26 07:54:01

On 25.02, Alexei Starovoitov wrote:
On Wed, Feb 25, 2015 at 12:10 PM, Patrick McHardy [off-list ref] wrote:
quoted
On 25.02, Eric Dumazet wrote:
quoted
But if any workload had to grow the table to 2^20 slots, we had to
consume GB of memory anyway to hold sockets and everything.

Trying to shrink is simply not worth it, unless you expect your host
never reboots and you desperately need back these 8 MBytes of memory.
That may be true in the TCP case, but for not for nftables. We might
have many sets and, especially when used to represent more complicated
classification algorithms, their size might change by a lot.
sounds like grow/shrink decision cannot be generalized within
rhashtable, but two callbacks are about to be removed and the
are costly. So would it make sense to disable auto-expand/shrink
completely and let nft/tcp call expand/shrink when needed?
My understanding was that Eric was arguing against shrinking in general.
But assuming we have it, what's the downside of also performing
shrinking for TCP?
nft can potentially do smarter batching this way.
If it sees a lot of entries are about to be inserted, it can call
expand directly to quickly grow sparsely populated table
into large one, and then insert all the entries.
That will mitigate 'slow rcu' issue as well.
I like that idea.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help