On Tue, Jul 2, 2019 at 5:23 PM Boaz Harrosh <openosd(a)gmail.com> wrote:
On 02/07/2019 18:37, Dan Williams wrote:
> I'd be inclined to do the brute force fix of not trying to get fancy
> with separate PTE/PMD waitqueues and then follow on with a more clever
> performance enhancement later. Thoughts about that?
I do not understand how separate waitqueues are any performance enhancement?
The all point of the waitqueues is that there is enough of them and the hash
function does a good radomization spread to effectively grab a single locker
per waitqueue unless the system is very contended and waitqueues are shared.
Right, the fix in question limits the input to the hash calculation by
masking the input to always be 2MB aligned.
Which is good because it means you effectively need a back pressure
to the app.
(Because pmem IO is mostly CPU bound with no long term sleeps I do not think
you will ever get to that situation)
So the way I understand it having twice as many waitqueues serving two types
will be better performance over all then, segregating the types each with half
the number of queues.
Yes, but the trick is how to manage cases where someone waiting on one
type needs to be woken up by an event on the other. So all I'm saying
it lets live with more hash collisions until we can figure out a race
free way to better scale waitqueue usage.
(Regardless of the above problem of where the segregation is not race clean)