From: Ingo Molnar <mingo@elte.hu>
To: Paul Rolland <rol@witbe.net>
Cc: "'Kristian Benoit'" <kbenoit@opersys.com>,
linux-kernel@vger.kernel.org, paulmck@us.ibm.com, bhuey@lnxw.com,
andrea@suse.de, tglx@linutronix.de, karim@opersys.com,
pmarques@grupopie.com, bruce@andrew.cmu.edu,
nickpiggin@yahoo.com.au, ak@muc.de, sdietrich@mvista.com,
dwalker@mvista.com, hch@infradead.org, akpm@osdl.org,
rpm@xenomai.org
Subject: Re: PREEMPT_RT and I-PIPE: the numbers, part 4
Date: Sat, 9 Jul 2005 17:22:07 +0200 [thread overview]
Message-ID: <20050709152207.GA12797@elte.hu> (raw)
In-Reply-To: <200507090901.j6991PD22890@tag.witbe.net>
* Paul Rolland <rol@witbe.net> wrote:
> > "IRQ & hd" run:
> > Measurements | Vanilla | preempt_rt | ipipe
> > ---------------+-------------+----------------+-------------
> > fork | 101us | 94us (-7%) | 103us (+2%)
> > open/close | 2.9us | 2.9us (~) | 3.0us (+3%)
> > execve | 366us | 370us (+1%) | 372us (+2%)
> > select 500fd | 14.3us | 18.1us (+27%) | 14.5us (+1%)
> > mmap | 794us | 654us (+18%) | 822us (+4%)
>
> ^^^^^^^^^^^^
> You mean -18%, not +18% I think.
>
> Just having a quick long at the numbers, it seems that now the "weak"
> part in PREEMPT_RT is the select 500fd test.
>
> Ingo, any idea about this one ?
yeah. In the '500 fds select' benchmark workload do_select() does an
extremely tight loop over a 500-entry table that does an fget(). fget()
acquires/releases current->files->file_lock. So we get 1000 lock and
unlock operations in this workload. It cannot be for free. In fact, look
at how the various vanilla kernels compare:
AVG v2.6.12 v2.6.12-PREEMPT v2.6.12-SMP
------------------------------------------------------------------
select: 11.48 12.35 ( 7%) 26.40 (129%)
(tested on one of my single-processor testsystems.)
I.e. SMP locking is already 129% overhead, and CONFIG_PREEMPT (which
just bumps the preempt count twice(!)) has 7% overhead. In that sense,
the 27% select-500-fds overhead measured for PREEMPT_RT is more than
acceptable.
anyway, these days apps that do select() over 500 fds are expected to
perform bad no matter what locking method is used. [To fix this
particular overhead we could take the current->file_lock outside of the
loop and do a get_file() within do_select(). This would improve SMP too.
But i doubt anyone cares.]
Ingo
next prev parent reply other threads:[~2005-07-09 15:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-08 23:01 PREEMPT_RT and I-PIPE: the numbers, part 4 Kristian Benoit
2005-07-09 1:28 ` Karim Yaghmour
2005-07-09 7:19 ` Ingo Molnar
2005-07-09 15:39 ` Karim Yaghmour
2005-07-09 15:53 ` Karim Yaghmour
2005-07-09 15:53 ` Karim Yaghmour
2005-07-11 7:05 ` Ingo Molnar
2005-07-11 11:25 ` Karim Yaghmour
2005-07-09 17:22 ` Daniel Walker
2005-07-09 23:37 ` Bill Huey
2005-07-09 9:01 ` Paul Rolland
2005-07-09 14:47 ` Karim Yaghmour
2005-07-09 15:22 ` Ingo Molnar [this message]
2005-07-11 5:24 ` 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=20050709152207.GA12797@elte.hu \
--to=mingo@elte.hu \
--cc=ak@muc.de \
--cc=akpm@osdl.org \
--cc=andrea@suse.de \
--cc=bhuey@lnxw.com \
--cc=bruce@andrew.cmu.edu \
--cc=dwalker@mvista.com \
--cc=hch@infradead.org \
--cc=karim@opersys.com \
--cc=kbenoit@opersys.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nickpiggin@yahoo.com.au \
--cc=paulmck@us.ibm.com \
--cc=pmarques@grupopie.com \
--cc=rol@witbe.net \
--cc=rpm@xenomai.org \
--cc=sdietrich@mvista.com \
--cc=tglx@linutronix.de \
/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