From: Shawn Bohrer <shawn.bohrer@gmail.com>
To: Arjan van de Ven <arjan@infradead.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
Peter Zijlstra <peterz@infradead.org>
Subject: Re: High scheduler wake up times
Date: Sat, 30 Jan 2010 18:35:49 -0600 [thread overview]
Message-ID: <20100131003549.GC27390@mediacenter.gateway.2wire.net> (raw)
In-Reply-To: <20100130161114.07278221@infradead.org>
On Sat, Jan 30, 2010 at 04:11:14PM -0800, Arjan van de Ven wrote:
> On Sat, 30 Jan 2010 17:45:51 -0600
> Shawn Bohrer <shawn.bohrer@gmail.com> wrote:
>
> > Hello,
> >
> > Currently we have a workload that depends on around 50 processes that
> > wake up 1000 times a second do a small amount of work and go back to
> > sleep. This works great on RHEL 5 (2.6.18-164.6.1.el5), but on recent
> > kernels we are unable to achieve 1000 iterations per second. Using
> > the simple test application below on RHEL 5 2.6.18-164.6.1.el5 I can
> > run 500 of these processes on and still achieve 999.99 iterations per
> > second. Running just 10 of these processes on the same machine with
> > 2.6.32.6 produces results like:
> > ]
>
> there's an issue with your expectation btw.
> what your application does, in practice is
>
> <wait 1 millisecond>
> <do a bunch of work>
> <wait 1 millisecond>
> <do a bunch of work>
> etc
>
> you would only be able to get close to 1000 per second if "bunch of
> work" is nothing.....but it isn't.
> so lets assume "bunch of work" is 100 microseconds.. the basic period
> of your program (ignoring any costs/overhead in the implementation)
> is 1.1 milliseconds, which is approximately 909 per second, not 1000!
>
> I suspect that the 1000 you get on RHEL5 is a bug in the RHEL5 kernel
> where it gives you a shorter delay than what you asked for; since it's
> clearly not a correct number to get.
>
> (and yes, older kernels had such rounding bugs, current kernels go
> through great length to give applications *exactly* the delay they are
> asking for....)
I agree that we are currently depending on a bug in epoll. The epoll
implementation currently rounds up to the next jiffie, so specifying a
timeout of 1 ms really just wakes the process up at the next timer tick.
I have a patch to fix epoll by converting it to use
schedule_hrtimeout_range() that I'll gladly send, but I still need a way
to achieve the same thing.
--
Shawn
next prev parent reply other threads:[~2010-01-31 0:36 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-30 23:45 High scheduler wake up times Shawn Bohrer
2010-01-30 23:56 ` Arjan van de Ven
2010-01-31 0:29 ` Shawn Bohrer
2010-01-31 0:02 ` Arjan van de Ven
2010-01-31 0:11 ` Arjan van de Ven
2010-01-31 0:35 ` Shawn Bohrer [this message]
2010-01-31 0:46 ` Shawn Bohrer
2010-01-31 0:47 ` Arjan van de Ven
2010-01-31 3:47 ` Shawn Bohrer
2010-01-31 18:28 ` Arjan van de Ven
2010-01-31 20:50 ` Shawn Bohrer
2010-02-01 8:51 ` Peter Zijlstra
2010-02-01 19:37 ` Shawn Bohrer
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=20100131003549.GC27390@mediacenter.gateway.2wire.net \
--to=shawn.bohrer@gmail.com \
--cc=arjan@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.