From: Jesper Juhl <jesper.juhl@gmail.com>
To: danial_thom@yahoo.com
Cc: linux-kernel@vger.kernel.org
Subject: Re: 2.6.12 Performance problems
Date: Sun, 21 Aug 2005 23:21:00 +0200 [thread overview]
Message-ID: <9a87484905082114215083f424@mail.gmail.com> (raw)
In-Reply-To: <20050821202141.78795.qmail@web33305.mail.mud.yahoo.com>
On 8/21/05, Danial Thom <danial_thom@yahoo.com> wrote:
>
>
> --- Jesper Juhl <jesper.juhl@gmail.com> wrote:
>
> > On 8/21/05, Jesper Juhl <jesper.juhl@gmail.com>
> > wrote:
> > > On 8/21/05, Danial Thom
> > <danial_thom@yahoo.com> wrote:
> > > > >
> > > > Ok, well you'll have to explain this one:
> > > >
> > > > "Low latency comes at the cost of decreased
> > > > throughput - can't have both"
> > > >
> > > > Seems to be a bit backwards. Threading the
> > kernel
> > > > adds latency, so its the additional latency
> > in
> > > > the kernel that causes the drop in
> > throughput. Do
> > > > you mean that kernel performance has been
> > > > sacrificed in order to be able to service
> > other
> > > > threads more quickly, even when there are
> > no
> > > > other threads to be serviced?
> > > >
> > >
> > > Ok, let me start with the way HZ influences
> > things.
> > >
> > [snip]
> >
> > A small followup.
> >
> > I'm not saying that the value of HZ or your
> > preempt setting (whatever
> > it may be) is definately the cause of your
> > problem. All I'm saying is
> > that it might be a contributing factor, so it's
> > probably something
> > that's worth a little bit of time testing.
> >
> > In many cases people running a server on
> > resonably new hardware with
> > HZ=1000 and full preempt won't even notice, but
> > that's depending on
> > the load on the server and what jobs it has.
> > For some tasks it
> > matters, for some the differences in
> > performance is negligible.
> >
> > You problem could very well be something else
> > entirely, but try a
> > kernel build with PREEMPT_NONE and HZ=100 and
> > see if it makes a big
> > difference (or if that's your current config,
> > then try the opposite,
> > HZ=1000 and PREEMPT). If it does make a
> > difference, then that's a
> > valuable piece of information to report on the
> > list. If it turns out
> > it makes next to no difference at all, then
> > that as well is relevant
> > information as then people will know that HZ &
> > preempt is not the
> > cause and can focus on finding the problem
> > elsewhere.
> >
> Yes. Hz isn't going to make much difference on a
> 2.0Ghz opteron, but I can see how premption can
> cause packet loss. Shouldn't packet processing be
> the highest priority process? It seems pointless
> to "keep the audio buffers full" if you're
> dropping packets as a result.
>
> Also some clown typing on the keyboard shouldn't
> cause packet loss. Trading network integrity for
> snappy responsiveness is a bad trade.
>
Since you choose to reply to a public list on a private email I guess
I should post the bit I'd [snip]'d above, so everyone else can get the
whole picture :
On 8/21/05, Jesper Juhl <jesper.juhl@gmail.com> wrote:
> On 8/21/05, Danial Thom <danial_thom@yahoo.com> wrote:
> > >
> > Ok, well you'll have to explain this one:
> >
> > "Low latency comes at the cost of decreased
> > throughput - can't have both"
> >
> > Seems to be a bit backwards. Threading the kernel
> > adds latency, so its the additional latency in
> > the kernel that causes the drop in throughput. Do
> > you mean that kernel performance has been
> > sacrificed in order to be able to service other
> > threads more quickly, even when there are no
> > other threads to be serviced?
> >
>
> Ok, let me start with the way HZ influences things.
>
> The value of HZ was increased from 100 to 1000 in 2.6.x (and later
> made a config option so people can choose at compile time between 100,
> 250 & 1000).
>
> This means that in 2.6 you have ten times as many timer interrupts
> happening every second compared to 2.4. This is great for things that
> need to be served on short notice, like audio buffers that need to be
> filled *now* before the music skips and can't wait 10ms bacause the
> user will notice. But, all those interrupts add overhead and thus the
> total amount of work that can be done every second will be slightly
> lower even though response times are good. For a desktop HZ=1000 is
> usually a very nice thing, but for a server that doesn't need good
> response times (low latency) HZ=100 or HZ=250 will provide better
> overall throughput and is often preferable.
>
> It's more or less the same thing with kernel preemption. When the
> kernel is fully preemtible it means that kernel functions can be
> interrupted at (almost) any time if there happens to be a higher
> priority process/thread that is runnable. When the kernel is not
> preemtible, system calls etc always run to completion before being
> interrupted.
>
> Preemption is great for interactive applications where you want user
> interfaces to respond fast, want multimedia applications to be able to
> refill buffers at regular intervals (with great precision on the
> timing) etc. With preempt, such high applications will be able to
> interrupt/preempt other lower priority processes (like a background
> run of updatedb running from cron for example) even when those
> processes are in the middle of a system call, whereas without
> preemption they are forced to wait several milliseconds for the other
> apps syscall to complete before they can get a chance to run - which
> the user notices as sluggish gui response, music or video skips etc.
>
> There are a few prices you pay for preemption. 1) extra overhead for
> bookkeeping (is it safe to preempt now, more locks need to be taken
> and dropped to make it safe etc). 2) preempted processes don't get to
> run for the entire duration of their timeslice in one go. 3) You get
> more context switch overhead - when the kernel has to switch between
> apps more often it needs to save and restore process context more
> often.
> All of this hurts overall throughput but gives you nice interactive
> response times (low latency).
>
> So, you can't have both at once. You can't get maximum throughput at
> the same time as you get very low response times. It's one or the
> other depending on your need.
>
> With 2.4 you have HZ=100, no preemption. So there you have a kernel
> optimized for maximum throughput, but latencies are high which is a
> pain for interactive and multimedia apps.
>
> With 2.6, the default is HZ=1000 and preempt = PREEMPT_NONE which is
> a compromise.
> But luckily you can modify the default. As I already mentioned above,
> you can pick between HZ=100, 250 & 1000 these days, and the preemtion
> model gives you 3 choices :
>
> PREEMPT_NONE - No Forced Preemption (Server)
> PREEMPT_VOLUNTARY - Voluntary Kernel Preemption (Desktop)
> PREEMPT - Preemptible Kernel (Low-Latency Desktop)
>
> So you are free to mix and match to get the kernel behaviour that
> suits you best for any given task.
>
> Personally I run (most) my servers with HZ=100 and PREEMPT_NONE
> and my personal desktop at home has HZ=1000 and PREEMPT.
>
>
> Did that make things a little more clear?
>
>
--
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html
next prev parent reply other threads:[~2005-08-21 21:21 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <9a87484905082111205d27c1aa@mail.gmail.com>
2005-08-21 20:21 ` 2.6.12 Performance problems Danial Thom
2005-08-21 21:21 ` Jesper Juhl [this message]
2005-08-22 11:46 ` Denis Vlasenko
[not found] <2230.192.167.206.189.1124721719.squirrel@new.host.name>
2005-08-22 15:41 ` Danial Thom
2005-08-26 13:17 ` Adrian Bunk
2005-08-26 15:34 ` Danial Thom
2005-08-26 16:21 ` Adrian Bunk
2005-08-26 17:06 ` Danial Thom
2005-08-26 18:30 ` Adrian Bunk
2005-08-26 21:09 ` Danial Thom
2005-08-26 23:27 ` Ben Greear
2005-08-27 14:44 ` Danial Thom
2005-08-21 17:07 Danial Thom
-- strict thread matches above, loose matches on Subject: below --
2005-08-21 16:57 Danial Thom
2005-08-23 7:12 ` Helge Hafting
2005-08-23 17:10 ` Danial Thom
2005-08-23 17:21 ` Patrick McHardy
2005-08-24 16:24 ` Danial Thom
2005-08-24 16:35 ` Jesper Juhl
2005-08-24 17:26 ` Danial Thom
2005-08-25 4:51 ` Ben Greear
2005-08-25 6:08 ` Danial Thom
2005-08-25 6:15 ` Ben Greear
2005-08-26 3:29 ` Danial Thom
2005-08-26 22:18 ` Danial Thom
2005-08-25 6:34 ` Ben Greear
2005-08-25 14:26 ` Danial Thom
2005-08-25 16:55 ` Ben Greear
2005-08-25 20:45 ` Danial Thom
2005-08-26 19:10 ` Benjamin LaHaise
2005-08-27 11:19 ` Vladimir B. Savkin
2005-08-27 14:35 ` Danial Thom
2005-08-23 18:02 ` Sven-Thorsten Dietrich
2005-08-23 20:10 ` Danial Thom
2005-08-23 20:22 ` Sven-Thorsten Dietrich
2005-08-24 16:33 ` Danial Thom
2005-08-23 20:40 ` Patrick McHardy
2005-08-23 23:29 ` Ben Greear
2005-08-24 16:39 ` Danial Thom
2005-08-23 21:32 ` Jesper Juhl
2005-08-24 17:03 ` Danial Thom
2005-08-21 15:46 Danial Thom
2005-08-21 16:15 ` Patrick McHardy
2005-08-21 16:18 ` Danial Thom
2005-08-21 16:36 ` Patrick McHardy
2005-08-21 19:47 ` Andrew Morton
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=9a87484905082114215083f424@mail.gmail.com \
--to=jesper.juhl@gmail.com \
--cc=danial_thom@yahoo.com \
--cc=linux-kernel@vger.kernel.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.