Messages in this thread | | | Date | Thu, 22 Dec 2016 04:40:35 +1000 | From | Nicholas Piggin <> | Subject | Re: [RFC][PATCH] make global bitlock waitqueues per-node |
| |
On Wed, 21 Dec 2016 10:12:36 -0800 Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Wed, Dec 21, 2016 at 4:30 AM, Nicholas Piggin <npiggin@gmail.com> wrote: > > > > I've been doing a bit of testing, and I don't know why you're seeing > > this. > > > > I don't think I've been able to trigger any actual page lock contention > > so nothing gets put on the waitqueue to really bounce cache lines around > > that I can see. > > The "test is the waitqueue is empty" is going to cause cache misses > even if there is no contention. > > In fact, that's why I want the contention bit in the struct page - not > because of any NUMA issues, but simply due to cache misses. > > And yes, with no contention the bit waiting should hopefully be able > to cache things shared - which should make the bouncing much less - > but there's going to be a shitload of false sharing with any actual > IO, so you will get bouncing due to that.
Well that's what I'm actually interested in, but I could not get it to do much bouncing at all. There was a significant amount of writes going through when having the backing store files on writeback filesystem, but even that was not really triggering a lot of actual waiters.
Not that I don't believe it could happen, and Dave's system is a lot bigger and faster and more NUMA than the one I was testing on. I'm just curious.
Thanks, Nick
| |