2015-11-01 04:32:11

by Manfred Spraul

[permalink] [raw]
Subject: Re: [PATCH] ipc/msg: Implement lockless pipelined wakeups

Hi Sebastian,

On 10/30/2015 12:26 PM, Sebastian Andrzej Siewior wrote:
> This patch moves the wakeup_process() invocation so it is not done under
> the perm->lock by making use of a lockless wake_q. With this change, the
> waiter is woken up once the message has been assigned and it does not
> need to loop on SMP if the message points to NULL. In the signal case we
> still need to check the pointer under the lock to verify the state.
>
> This change should also avoid the introduction of preempt_disable() in
> -RT which avoids a busy-loop which pools for the NULL -> !NULL
> change if the waiter has a higher priority compared to the waker.
with regards to functional tests:
fakeroot is a heavy system V user (at least if it is configured for sysv).
"make -j" under fakeroot was a useful stresstest

with regards to benchmarks:
I've attached one of my files.

Otherwise: Nice!

--
Manfred


Attachments:
pmsg-shared.cpp (5.07 kB)

Subject: Re: [PATCH] ipc/msg: Implement lockless pipelined wakeups

On 11/01/2015 05:32 AM, Manfred Spraul wrote:
> Hi Sebastian,

Hi Manfred,

> with regards to functional tests:
> fakeroot is a heavy system V user (at least if it is configured for sysv).
> "make -j" under fakeroot was a useful stresstest

I don't see the msgsnd/msgrcv syscalls here. I do see others, sem
related for instance….

> with regards to benchmarks:
> I've attached one of my files.

Thank you. On 'AMD A10-7800 Radeon R7, 12 Compute Cores 4C+8G' I have
here:

test | before | after | diff
-----------------|------------|-------------
pmsg-shared 8 60 | 52,386,363 | 56,455,763 | + ~7.77%
pmsg-shared 2 60 | 69,200,531 | 73,346,420 | + ~5.99%

so it improved a little :)

> Otherwise: Nice!
>
> --
> Manfred
>

Sebastian