On Fri, Jul 27, 2018 at 2:48 PM, Stephen Hemminger <step...@networkplumber.org> wrote: > On Fri, 27 Jul 2018 14:15:09 -0700 > Saeed Mahameed <sae...@mellanox.com> wrote: > >> From: Gal Pressman <g...@mellanox.com> >> >> The VXLAN database is mainly used by readers in data path, and rarely >> used by control path writers. >> Multiple readers (threads) should not block each other and cause an >> unnecessary contention on the lock. >> >> Replacing the spinlock with rwlock optimizes the common use case where >> adding ports to the table (adding VXLAN interfaces) is quite rare, but >> the table is accessed for each VXLAN TX skb. >> >> Signed-off-by: Gal Pressman <g...@mellanox.com> >> Signed-off-by: Saeed Mahameed <sae...@mellanox.com> > > Did you know that for small sections a spinlock is significantly faster than > a reader-writer lock. It turns out that reader-writer locks the reader > creates a cache line bounce. > > https://www.kernel.org/doc/Documentation/locking/spinlocks.txt > > > Lesson 2: reader-writer spinlocks. > > If your data accesses have a very natural pattern where you usually tend > to mostly read from the shared variables, the reader-writer locks > (rw_lock) versions of the spinlocks are sometimes useful. They allow multiple > readers to be in the same critical region at once, but if somebody wants > to change the variables it has to get an exclusive write lock. > > NOTE! reader-writer locks require more atomic memory operations than > simple spinlocks. Unless the reader critical section is long, you > are better off just using spinlocks.
Thanks Stephen, very usefull information ! I will drop this patch for now, I will consider using rcu lock instead in a future patch.