在 2024/12/4 15:55, Uladzislau Rezki 写道:
On Tue, Dec 03, 2024 at 07:56:34PM +0000, Matthew Wilcox wrote:
On Tue, Dec 03, 2024 at 08:02:26PM +0100, Uladzislau Rezki wrote:
I think there are a few other things we can try here.
First, if the copy is small (and I still don't have an answer to that
...), we can skip the vmalloc lookup if the copy doesn't cross a page
boundary.
Second, we could try storing this in a maple tree rather than an rbtree.
That gives us RCU protected lookups rather than under a spinlock.
It might even be worth going to a rwlock first, in case the problem is
that there's severe lock contention.
But I've asked for data on spinlock contention and not received an
answer on that either, so I don't know what to suggest.
I think, it is not about contention. It is about the extra "attached
load" when a data is heavily copied force and back. On each copy path
you need to do a scan. Maple tree is not that something can help here :)
Indeed, no contention data. Zuoze, please share this if you can.
We have enabled perf lock contention and are currently debugging the
environment. We will share the results as soon as we have them.
--
Uladzislau Rezki