public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@osdl.org>
To: Andrea Arcangeli <andrea@suse.de>
Cc: mjy@geizhals.at, linux-kernel@vger.kernel.org
Subject: Re: CONFIG_PREEMPT and server workloads
Date: Thu, 18 Mar 2004 01:50:04 -0800	[thread overview]
Message-ID: <20040318015004.227fddfb.akpm@osdl.org> (raw)
In-Reply-To: <20040318060358.GC29530@dualathlon.random>

Andrea Arcangeli <andrea@suse.de> wrote:
>
> On Thu, Mar 18, 2004 at 05:00:01AM +0100, Marinos J. Yannikos wrote:
> > Hi,
> > 
> > we upgraded a few production boxes from 2.4.x to 2.6.4 recently and the 
> > default .config setting was CONFIG_PREEMPT=y. To get straight to the 
> > point: according to our measurements, this results in severe performance 
> > degradation with our typical and some artificial workload. By "severe" I 
> > mean this:
> 
> this is expected (see the below email, I predicted it on Mar 2000),

Incorrectly.

> keep preempt turned off always, it's useless.

Preempt is overrated.  The infrastructure which it has introduced has been
useful for detecting locking bugs.

It has been demonstrated that preempt improves the average latency.  But
not worst-case, because those paths tend to be under spinlock.

> Worst of all we're now taking spinlocks earlier than needed,

Where?  CPU scheduler?

> and the preempt_count stuff isn't optmized away by PREEMPT=n,

It should be.  If you see somewhere where it isn't, please tell us.

We unconditionally bump the preempt_count in kmap_atomic() so that we can
use atomic kmaps in read() and write().  This is why four concurrent
write(fd, 1, buf) processes on 4-way is 8x faster than on 2.4 kernels.

> preempt just wastes cpu with tons of branches in fast paths that should
> take one cycle instead.

I don't recall anyone demonstrating even a 1% impact from preemption.  If
preemption was really causing slowdowns of this magnitude it would of
course have been noticed.  Something strange has happened here and more
investigation is needed.

> ...
> I still think after 4 years that such idea is more appealing then
> preempt, and numbers start to prove me right.

The overhead of CONFIG_PREEMPT is quite modest.  Measuring that is simple.

  reply	other threads:[~2004-03-18  9:51 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-18  4:00 CONFIG_PREEMPT and server workloads Marinos J. Yannikos
2004-03-18  5:12 ` Andrew Morton
2004-03-18  6:03 ` Andrea Arcangeli
2004-03-18  9:50   ` Andrew Morton [this message]
2004-03-18 14:51     ` Andrea Arcangeli
2004-03-18 15:34       ` Robert Love
2004-03-18 16:01         ` Andrea Arcangeli
2004-03-18 17:39       ` Andrew Morton
2004-03-18 17:58         ` Andrea Arcangeli
2004-03-18 18:26           ` Andrew Morton
2004-03-18 18:38             ` Andrea Arcangeli
2004-03-18 18:47               ` Andrew Morton
2004-03-18 19:01                 ` Andrea Arcangeli
2004-03-18 17:48       ` Robert Love
2004-03-18 18:00         ` Andrea Arcangeli
2004-03-20 10:48         ` Jamie Lokier
2004-03-19  2:17       ` Nick Piggin
     [not found]         ` <20040319050948.GN2045@holomorphy.com>
2004-03-20 12:14           ` Andrea Arcangeli
2004-03-20 14:51             ` William Lee Irwin III
2004-03-20 15:03               ` Andrea Arcangeli
2004-03-20 15:09                 ` William Lee Irwin III
2004-03-24 13:57                 ` Takashi Iwai
2004-03-24 14:52                   ` Andrea Arcangeli
2004-03-24 15:11                   ` William Lee Irwin III
2004-03-18 15:20     ` Tom Sightler
2004-03-18 15:37       ` Andrea Arcangeli
2004-03-18 23:54         ` Tom Sightler
2004-03-18 15:39       ` Robert Love
2004-03-18 15:28   ` Takashi Iwai
2004-03-18 15:40     ` Robert Love
2004-03-18 15:42     ` Andrea Arcangeli
2004-03-18 19:01     ` Andrew Morton
2004-03-18 19:08       ` Takashi Iwai
2004-03-18 19:18         ` Andrew Morton
2004-03-18 19:20           ` Takashi Iwai
2004-03-18 19:43             ` Andrea Arcangeli
2004-03-18 19:50               ` Takashi Iwai
2004-03-18 19:24         ` Robert Love
2004-03-19 22:03           ` Valdis.Kletnieks
2004-03-19 22:12             ` Robert Love
2004-03-24 15:00               ` Takashi Iwai
2004-03-18 19:16       ` Takashi Iwai
2004-03-18 19:29         ` Andrew Morton
2004-03-18 19:48           ` Chris Mason
2004-03-19 11:37             ` Takashi Iwai
2004-03-19 13:46               ` Chris Mason
2004-03-19 14:06                 ` Takashi Iwai
     [not found]         ` <20040318221006.74246648.akpm@osdl.org>
2004-03-19 10:30           ` Takashi Iwai
2004-03-23  9:14             ` Dipankar Sarma
2004-03-19 17:22           ` Dipankar Sarma
2004-03-19 18:03             ` Andrew Morton
2004-03-20 12:24             ` Andrea Arcangeli
2004-03-20 13:13               ` Dipankar Sarma
2004-03-18 19:39       ` Andrea Arcangeli
2004-03-18 22:32     ` Andrew Morton
2004-03-18 22:54       ` Chris Mason
2004-03-18 23:57         ` Andrew Morton
2004-03-19 20:46           ` Takashi Iwai
2004-03-19 21:08             ` Andrew Morton
2004-03-19  3:07     ` Eric St-Laurent
2004-03-19 11:23       ` Takashi Iwai
2004-03-19 13:35         ` Chris Mason

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=20040318015004.227fddfb.akpm@osdl.org \
    --to=akpm@osdl.org \
    --cc=andrea@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjy@geizhals.at \
    /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