From: Ingo Molnar <mingo@elte.hu>
To: Joel Schopp <jschopp@austin.ibm.com>
Cc: Olof Johansson <olof@lixom.net>,
lkml <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@osdl.org>, Andrew Morton <akpm@osdl.org>,
Arjan van de Ven <arjan@infradead.org>,
Nicolas Pitre <nico@cam.org>,
Jes Sorensen <jes@trained-monkey.org>,
Al Viro <viro@ftp.linux.org.uk>, Oleg Nesterov <oleg@tv-sign.ru>,
David Howells <dhowells@redhat.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
Christoph Hellwig <hch@infradead.org>, Andi Kleen <ak@suse.de>,
Russell King <rmk+lkml@arm.linux.org.uk>,
Anton Blanchard <anton@samba.org>,
PPC64-dev <linuxppc64-dev@ozlabs.org>
Subject: Re: PowerPC fastpaths for mutex subsystem
Date: Wed, 11 Jan 2006 00:09:17 +0100 [thread overview]
Message-ID: <20060110230917.GA25285@elte.hu> (raw)
In-Reply-To: <43C435B9.5080409@austin.ibm.com>
* Joel Schopp <jschopp@austin.ibm.com> wrote:
> >interesting. Could you try two things? Firstly, could you add some
> >minimal delays to the lock/unlock path, of at least 1 usec? E.g.
> >"synchro-test.ko load=1 interval=1". [but you could try longer delays
> >too, 10 usecs is still realistic.]
>
> Graphs attached. The summary for those who don't like to look at
> attachments is that the mutex fastpath (threads 1) that I sent the
> optimized patch for is comparable within the margin of error to
> semaphores. The mutex common path (threads > 1) gets embarrassed by
> semaphores. So mutexes common paths are not yet ready as far as ppc64
> is concerned.
ok. I'll really need to look at "vmstat" output from these. We could
easily make the mutex slowpath behave like ppc64 semaphores, via the
attached (untested) patch, but i really think it's the wrong thing to
do, because it overloads the system with runnable tasks in an
essentially unlimited fashion [== overscheduling] - they'll all contend
for the same single mutex.
in synthetic workloads on idle systems it such overscheduling can help,
because the 'luck factor' of the 'thundering herd' of tasks can generate
a higher total throughput - at the expense of system efficiency. At 8
CPUs i already measured a net performance loss at 3 tasks! So i think
the current 'at most 2 tasks runnable' approach of mutexes is the right
one on a broad range of hardware.
still, i'll try a different patch tomorrow, to keep the number of 'in
flight' tasks within a certain limit (say at 2) - i suspect that would
close the performance gap too, on this test.
but i really think the current 'at most one task in flight' logic is the
correct approach. I'm also curious about the VFS-test numbers (already
on your todo).
> >thirdly, could you run 'vmstat 1' during the tests, and post those lines
> >too? Here i'm curious about two things: the average runqueue length
> >(whether we have overscheduling), and CPU utilization and idle time left
> >(how efficiently cycles are preserved in contention). [btw., does ppc
> >have an idle=poll equivalent mode of idling?]
>
> Also queued in my todo list.
thanks!
> >also, there seems to be some fluctuation in the numbers - could you try
> >to run a few more to see how stable the numbers are?
>
> For the graphs the line is the average of 5 runs, and the 5 runs are
> scatter plotted as well.
ok, that should be more than enough.
Ingo
--- kernel/mutex.c.orig
+++ kernel/mutex.c
@@ -226,6 +226,9 @@ __mutex_unlock_slowpath(atomic_t *lock_c
debug_mutex_wake_waiter(lock, waiter);
+ /* be (much) more agressive about wakeups: */
+ list_move_tail(&waiter.list, &lock->wait_list);
+
wake_up_process(waiter->task);
}
next prev parent reply other threads:[~2006-01-10 23:09 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-04 14:41 [patch 00/21] mutex subsystem, -V14 Ingo Molnar
2006-01-04 23:45 ` Joel Schopp
2006-01-05 2:38 ` Nicolas Pitre
2006-01-05 2:51 ` Linus Torvalds
2006-01-05 3:21 ` Nick Piggin
2006-01-05 3:39 ` Anton Blanchard
2006-01-05 18:04 ` Jesse Barnes
2006-01-05 14:40 ` Ingo Molnar
2006-01-05 16:21 ` Linus Torvalds
2006-01-05 22:03 ` Ingo Molnar
2006-01-05 22:17 ` Linus Torvalds
2006-01-05 22:43 ` Ingo Molnar
2006-01-06 3:49 ` Keith Owens
2006-01-06 7:34 ` Denis Vlasenko
2006-01-05 14:35 ` Ingo Molnar
2006-01-05 16:42 ` Joel Schopp
2006-01-05 22:21 ` Ingo Molnar
2006-01-05 23:06 ` Joel Schopp
2006-01-05 23:26 ` Linus Torvalds
2006-01-05 23:36 ` Joel Schopp
2006-01-05 23:42 ` Ingo Molnar
2006-01-06 0:29 ` Olof Johansson
2006-01-07 17:49 ` PowerPC fastpaths for mutex subsystem Joel Schopp
2006-01-07 22:37 ` Andrew Morton
2006-01-08 7:43 ` Anton Blanchard
2006-01-08 8:00 ` Andrew Morton
2006-01-08 8:23 ` Anton Blanchard
2006-01-09 11:13 ` David Howells
2006-01-08 9:48 ` Ingo Molnar
2006-01-10 22:31 ` Joel Schopp
2006-01-10 23:09 ` Ingo Molnar [this message]
2006-01-11 10:52 ` Ingo Molnar
2006-01-11 17:44 ` Joel Schopp
2006-01-08 10:43 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060110230917.GA25285@elte.hu \
--to=mingo@elte.hu \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=anton@samba.org \
--cc=arjan@infradead.org \
--cc=dhowells@redhat.com \
--cc=hch@infradead.org \
--cc=jes@trained-monkey.org \
--cc=jschopp@austin.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc64-dev@ozlabs.org \
--cc=nico@cam.org \
--cc=oleg@tv-sign.ru \
--cc=olof@lixom.net \
--cc=rmk+lkml@arm.linux.org.uk \
--cc=torvalds@osdl.org \
--cc=viro@ftp.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).