Thread (6 messages) flat view 6 messages, 4 authors, 2014-08-26

Re: using rhashtable in inethash

From: Eric Dumazet <hidden>
Date: 2014-08-25 23:35:37

On Mon, 2014-08-25 at 16:12 -0700, David Miller wrote:
During the Networking Workshop I mentioned converting the inet hash
tables over to rhashtable so that we don't allocate this insanely
large hash table at boot time which goes largely unused.

I took a quick look at this last night and the only thing we really
need is the addition of a set of rhashtable interfaces which use
NULLs lists, as the inet hashtables currently require.

Also, I noticed in the netlink changes this really expensive
synchronize_net() added to netlink_release(), is that _really_
necessary?

That's really expensive and my impression was that such a sync is only
needed during hash table resizing, not when getting rid of objects
that we in an rhashtable.

Thomas?
After the workshop we had a discussion with Paul McKenney, Thomas, and
John where we discussed all this.

An other issue we raised was that the grow should happen in process
context, while inserts and deletes should happen from softirq.

We also mentioned the need of a per bucket spinlock, and keep the mutex
only to protect the resizes. (Or an array of spinlocks as used by TCP)

Paul gave a lot of ideas and this seems feasible.

Thomas agreed to work on all this. If not I can do this myself.

(Note that conntrack also uses the same nulls rcu hash tables)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help