From: Ingo Molnar <mingo@elte.hu>
To: linux-kernel@vger.kernel.org
Cc: Arjan van de Ven <arjanv@redhat.com>
Subject: [announce] [patch] Voluntary Kernel Preemption Patch
Date: Fri, 9 Jul 2004 20:26:38 +0200 [thread overview]
Message-ID: <20040709182638.GA11310@elte.hu> (raw)
as most of you are probably aware of it, there have been complaints on
lkml that the 2.6 kernel is not suitable for serious audio work due to
high scheduling latencies (e.g. the Jackit people complained). I took a
look at latencies and indeed 2.6.7 is pretty bad - latencies up to 50
msec (!) can be easily triggered using common workloads, on fast 2GHz+
x86 system - even when using the fully preemptible kernel!
to solve this problem, Arjan van de Ven and I went over various kernel
functions to determine their preemptability and we re-created from
scratch a patch that is equivalent in performance to the 2.4 lowlatency
patches but is different in design, impact and approach:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.7-bk20-H2
(Note to kernel patch reviewers: the split voluntary_resched type of
APIs, the feature #ifdefs and runtime flags are temporary and were
only introduced to enable a easy benchmarking/comparisons. I'll split
this up into small pieces once there's testing feedback and actual
audio users had their say!)
unlike the lowlatency patches, this patch doesn't add a lot of new
scheduling points to the source code, it rather reuses a rich but
currently inactive set of scheduling points that already exist in the
2.6 tree: the might_sleep() debugging checks. Any code point that does
might_sleep() is in fact ready to sleep at that point. So the patch
activates these debugging checks to be scheduling points. This reduces
complexity and impact quite significantly.
but even using these (over one hundred) might_sleep() points there were
still a number of latency sources in the kernel - we identified and
fixed them by hand, either via additional might_sleep() checks, or via
explicit rescheduling points. Sometimes lock-break was necessary as
well.
as a practical goal, this patch aims to fix all latency sources that
generate higher than ~1 msec latencies. We'd love to learn about
workloads that still cause audio skipping even with this patch applied,
but i've been unable to generate any load that creates higher than 1msec
latencies. (not counting driver initialization routines.)
this patch is also more configurable than the 2.4 lowlatency patches
were: there's a .config option to enable voluntary preemption, and there
are runtime /proc/sys knobs and boot-time flags to turn voluntary
preemption (CONFIG_VOLUNTARY_PREEMPT) and kernel preemption
(CONFIG_PREEMPT) on/off:
# turn on/off voluntary preemption (if CONFIG_VOLUNTARY_PREEMPT)
echo 1 > /proc/sys/kernel/voluntary_preemption
echo 0 > /proc/sys/kernel/voluntary_preemption
# turn on/off the preemptible kernel feature (if CONFIG_PREEMPT)
/proc/sys/kernel/kernel_preemption
/proc/sys/kernel/kernel_preemption
the 'voluntary-preemption=0/1' and 'kernel-preemption=0/1' boot options
can be used to control these flags at boot-time.
all 4 combinations make sense if both CONFIG_PREEMPT and
CONFIG_VOLUNTARY_PREEMPT are enabled - great for performance/latency
testing and comparisons.
The stock 2.6 kernel is equivalent to:
voluntary_preemption:0 kernel_preemption:0
the 2.6 kernel with voluntary kernel preemption is equivalent to:
voluntary_preemption:1 kernel_preemption:0
the 2.6 kernel with preemptible kernel enabled is:
voluntary_preemption:0 kernel_preemption:1
and the preemptible kernel enhanced with additional lock-breaks is
enabled via:
voluntary_preemption:1 kernel_preemption:1
it is safe to change these flags anytime.
The patch is against 2.6.7-bk20, and it also includes fixes for kernel
bugs that were uncovered while developing this patch. While it works for
me, be careful when using this patch!
Testreports, comments, suggestions are more than welcome,
Ingo
next reply other threads:[~2004-07-09 18:35 UTC|newest]
Thread overview: 270+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-09 18:26 Ingo Molnar [this message]
2004-07-09 19:51 ` [announce] [patch] Voluntary Kernel Preemption Patch Christoph Hellwig
2004-07-09 23:50 ` Andrea Arcangeli
2004-07-10 0:52 ` Andrea Arcangeli
2004-07-10 1:02 ` Dave Jones
2004-07-12 10:17 ` Takashi Iwai
2004-07-12 19:36 ` Andrea Arcangeli
2004-07-13 7:43 ` Takashi Iwai
2004-07-10 6:32 ` Arjan van de Ven
2004-07-10 7:57 ` Ingo Molnar
2004-07-10 8:10 ` ismail dönmez
2004-07-10 8:28 ` Ingo Molnar
2004-07-19 10:36 ` [patch] voluntary-preempt 2.6.8-rc2-H4 Ingo Molnar
2004-07-20 1:38 ` Ramón Rey Vicente
2004-07-20 6:02 ` Ingo Molnar
2004-07-10 15:36 ` [announce] [patch] Voluntary Kernel Preemption Patch Andrea Arcangeli
2004-07-10 12:48 ` Ingo Molnar
2004-07-10 15:12 ` Con Kolivas
2004-07-10 15:14 ` Arjan van de Ven
2004-07-10 15:18 ` Con Kolivas
2004-07-11 7:07 ` Zwane Mwaikambo
2004-07-11 7:09 ` Con Kolivas
2004-07-11 7:16 ` [announce] [patch] " Zwane Mwaikambo
2004-07-11 9:18 ` Ingo Molnar
2004-07-11 9:29 ` Con Kolivas
2004-07-10 16:18 ` [announce] [patch] " Con Kolivas
2004-07-11 6:47 ` [ck] " Ingo Molnar
2004-07-11 6:59 ` Con Kolivas
2004-07-11 11:18 ` R. J. Wysocki
2004-07-11 7:09 ` [ck] Re: [announce] [patch] " Zwane Mwaikambo
2004-07-11 14:27 ` Con Kolivas
2004-07-11 14:29 ` Con Kolivas
2004-07-11 14:38 ` Ingo Molnar
2004-07-11 17:29 ` André Goddard Rosa
2004-07-11 17:49 ` Grzegorz Kulewski
2004-07-11 21:20 ` Con Kolivas
2004-07-11 21:25 ` Grzegorz Kulewski
2004-07-11 20:17 ` Ingo Molnar
2004-07-12 8:23 ` Voluntary Preemption + concurent games Aivils
2004-07-12 9:51 ` Con Kolivas
2004-07-12 10:45 ` Lenar Lõhmus
2004-07-12 11:52 ` Aivils
2004-07-12 13:35 ` Nick Piggin
2004-07-12 14:15 ` [ck] Re: [announce] [patch] Voluntary Kernel Preemption Patch Chris Friesen
2004-07-12 14:19 ` Ingo Molnar
2004-07-10 15:58 ` Andrea Arcangeli
2004-07-09 21:13 ` Redeeman
2004-07-10 8:02 ` Ingo Molnar
2004-07-10 8:50 ` Ingo Molnar
2004-07-10 10:55 ` ismail dönmez
2004-07-10 11:26 ` Arjan van de Ven
2004-07-10 12:01 ` ismail dönmez
2004-07-10 12:05 ` Arjan van de Ven
2004-07-10 12:09 ` Nick Piggin
2004-07-10 12:35 ` Ingo Molnar
2004-07-10 12:58 ` ismail dönmez
2004-07-10 13:55 ` Ingo Molnar
2004-07-10 14:45 ` Nick Piggin
2004-07-10 14:57 ` ismail dönmez
2004-07-12 10:48 ` Takashi Iwai
2004-07-12 13:09 ` ismail dönmez
2004-07-12 13:14 ` Takashi Iwai
2004-07-09 21:36 ` Torrey Hoffman
2004-07-10 8:23 ` Ingo Molnar
2004-07-10 1:00 ` Con Kolivas
2004-07-10 1:04 ` Dave Jones
2004-07-10 12:55 ` Ingo Molnar
2004-07-11 5:25 ` Andrew Morton
2004-07-11 9:32 ` Ingo Molnar
2004-07-11 9:45 ` Andrew Morton
2004-07-11 9:50 ` Ingo Molnar
2004-07-11 9:58 ` Andrew Morton
2004-07-11 10:30 ` Ingo Molnar
2004-07-11 10:42 ` Andrew Morton
2004-07-11 10:59 ` Arjan van de Ven
2004-07-11 11:13 ` Andrew Morton
2004-07-11 18:07 ` Mikulas Patocka
2004-07-12 7:08 ` Zwane Mwaikambo
2004-07-19 10:20 ` Ingo Molnar
2004-07-11 23:12 ` Robert Love
2004-07-12 22:40 ` Bill Davidsen
2004-07-12 13:24 ` John Stoffel
2004-07-12 22:56 ` [linux-audio-dev] " Lee Revell
2004-07-12 23:31 ` Andrew Morton
2004-07-12 23:58 ` Paul Davis
2004-07-13 0:06 ` Andrew Morton
2004-07-13 0:21 ` Con Kolivas
2004-07-13 1:01 ` [linux-audio-dev] Re: [announce] [patch] " Lee Revell
2004-07-13 7:49 ` Takashi Iwai
2004-07-13 8:12 ` Lee Revell
2004-07-13 0:01 ` Paul Davis
2004-07-13 0:08 ` Andrew Morton
2004-07-13 16:25 ` Andrea Arcangeli
2004-07-13 18:42 ` Lee Revell
2004-07-13 21:29 ` Andrew Morton
2004-07-13 21:45 ` Lee Revell
2004-07-14 8:51 ` Takashi Iwai
2004-07-14 9:36 ` Lee Revell
2004-07-14 10:48 ` Takashi Iwai
2004-07-14 14:52 ` Lee Revell
2004-07-14 16:29 ` Lee Revell
2004-07-14 10:26 ` Benno Senoner
2004-07-13 18:48 ` Andrew Morton
2004-07-13 21:38 ` Andrea Arcangeli
2004-07-13 21:54 ` Andrew Morton
2004-07-13 22:01 ` Andrea Arcangeli
2004-07-13 22:25 ` Andrew Morton
2004-07-13 22:37 ` Andrea Arcangeli
2004-07-13 22:44 ` Andrew Morton
2004-07-13 22:53 ` Andrea Arcangeli
2004-07-13 23:06 ` Andrew Morton
2004-07-13 23:18 ` Andrea Arcangeli
2004-07-13 23:32 ` Andrew Morton
2004-07-14 0:40 ` Andrea Arcangeli
2004-07-14 0:45 ` Andrew Morton
2004-07-19 11:59 ` Ingo Molnar
2004-09-02 22:03 ` Andrea Arcangeli
2004-09-02 22:20 ` Andrew Morton
2004-09-02 23:03 ` Ingo Molnar
2004-09-02 23:21 ` Ingo Molnar
2004-07-13 7:58 ` Takashi Iwai
2004-07-13 0:17 ` Lee Revell
2004-07-13 0:46 ` Andrew Morton
2004-07-13 2:52 ` Lee Revell
2004-07-13 3:59 ` Andrew Morton
2004-07-13 7:57 ` Lee Revell
2004-07-19 10:48 ` Ingo Molnar
2004-07-19 11:34 ` Ingo Molnar
2004-07-20 5:38 ` Lee Revell
2004-07-20 6:12 ` Ingo Molnar
2004-07-20 6:59 ` Lee Revell
2004-07-20 7:11 ` Ingo Molnar
[not found] ` <200407202011.20558.musical_snake@gmx.de>
2004-07-20 19:56 ` Lee Revell
2004-07-20 23:49 ` Benno Senoner
2004-07-21 0:32 ` [linux-audio-dev] " Lee Revell
2004-07-21 1:25 ` Timothy Miller
2004-07-21 21:38 ` Another dumb question about " Timothy Miller
2004-07-24 0:25 ` Lee Revell
2004-07-25 20:19 ` Timothy Miller
2004-07-25 20:13 ` Lee Revell
2004-07-21 10:53 ` [linux-audio-dev] Re: [announce] [patch] " Florian Schmidt
2004-07-21 11:18 ` Thomas Charbonnel
2004-07-21 12:04 ` pci gfx card / jack xruns / pci latencies (was: Re: [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch) Florian Schmidt
2004-07-21 17:49 ` [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch Fernando Pablo Lopez-Lezcano
2004-07-22 22:25 ` Andrew McGregor
2004-07-22 23:16 ` Florian Schmidt
2004-07-21 14:27 ` Benno Senoner
2004-07-20 12:19 ` Jens Axboe
2004-07-20 21:32 ` Lee Revell
2004-07-24 4:07 ` Lee Revell
2004-07-24 5:46 ` Lee Revell
2004-07-24 6:33 ` Lee Revell
2004-07-24 6:43 ` Ingo Molnar
2004-07-24 22:49 ` Lee Revell
2004-07-24 23:30 ` Lee Revell
2004-07-24 11:27 ` max request size 1024KiB by default? Rudo Thomas
2004-07-24 22:58 ` Lee Revell
2004-07-26 19:29 ` Johannes Stezenbach
2004-07-27 5:15 ` Jens Axboe
2004-07-24 12:41 ` [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch Mark Lord
2004-07-24 4:58 ` Lee Revell
2004-07-13 8:31 ` Lee Revell
2004-07-13 8:43 ` Andrew Morton
2004-07-13 8:53 ` Lee Revell
2004-07-13 9:00 ` Andrew Morton
2004-07-13 9:21 ` Takashi Iwai
2004-07-13 9:25 ` Andrew Morton
2004-07-13 9:33 ` Takashi Iwai
2004-07-13 9:44 ` Andrew Morton
2004-07-13 9:23 ` Lee Revell
2004-07-13 9:29 ` Andrew Morton
2004-07-13 20:37 ` Lee Revell
2004-07-13 22:32 ` Lee Revell
2004-07-13 8:07 ` Takashi Iwai
2004-07-13 22:40 ` Bill Davidsen
2004-07-13 23:47 ` Randy.Dunlap
2004-07-19 10:29 ` Ingo Molnar
2004-07-21 3:27 ` Lee Revell
2004-07-21 7:03 ` Andrew Morton
2004-07-21 4:58 ` Lee Revell
2004-07-21 5:30 ` Ingo Molnar
2004-07-21 6:03 ` Lee Revell
2004-07-21 8:22 ` Ingo Molnar
2004-07-21 8:52 ` Ingo Molnar
2004-07-21 11:32 ` Nick Piggin
2004-07-21 15:44 ` Ingo Molnar
2004-07-22 4:56 ` Nick Piggin
2004-07-22 7:07 ` Ingo Molnar
2004-07-22 10:54 ` Nick Piggin
2004-07-22 16:23 ` Ingo Molnar
2004-07-22 22:11 ` Nick Piggin
2004-07-23 5:47 ` Ingo Molnar
2004-07-23 6:45 ` Nick Piggin
2004-07-23 6:55 ` Ingo Molnar
2004-07-23 7:11 ` Nick Piggin
2004-07-23 7:21 ` Ingo Molnar
2004-07-23 7:28 ` Nick Piggin
2004-07-21 18:34 ` Scott Wood
2004-07-21 18:46 ` Ingo Molnar
2004-07-21 19:56 ` Scott Wood
2004-07-21 21:08 ` Ingo Molnar
2004-07-22 2:47 ` Scott Wood
2004-07-21 21:45 ` Ingo Molnar
2004-07-22 2:28 ` Scott Wood
2004-07-22 7:40 ` Ingo Molnar
2004-07-22 18:53 ` Scott Wood
2004-07-22 19:45 ` Bill Huey
2004-07-28 6:45 ` Ingo Molnar
2004-07-28 20:52 ` Scott Wood
2004-07-29 18:21 ` Ingo Molnar
2004-07-29 18:36 ` Bill Huey
2004-07-29 19:17 ` Scott Wood
2004-07-29 19:25 ` Bill Huey
2004-07-30 2:23 ` Eric St-Laurent
2004-07-29 20:26 ` Pavel Machek
2004-07-29 20:57 ` Scott Wood
2004-07-29 21:00 ` Pavel Machek
2004-07-29 21:07 ` Ingo Molnar
2004-07-21 22:52 ` Nick Piggin
2004-07-21 18:32 ` Scott Wood
2004-07-21 20:40 ` Ingo Molnar
2004-07-21 18:30 ` Scott Wood
2004-07-21 18:43 ` Ingo Molnar
2004-07-22 2:32 ` Scott Wood
2004-07-22 9:51 ` Ingo Molnar
2004-07-22 18:36 ` Scott Wood
2004-07-22 19:11 ` Robert Love
2004-07-21 21:00 ` Scott Wood
2004-07-21 21:18 ` Ingo Molnar
2004-07-21 22:14 ` Bill Huey
2004-07-21 22:31 ` Bill Huey
2004-07-21 22:37 ` Scott Wood
2004-07-22 10:06 ` [patch] voluntary-preempt-2.6.8-rc2-H9 Ingo Molnar
2004-07-22 16:00 ` scheduling while atomic (Re: voluntary-preempt-2.6.8-rc2-H9) Rudo Thomas
2004-07-22 16:19 ` Ingo Molnar
2004-07-22 17:24 ` voluntary-preempt I0: sluggish feel Rudo Thomas
2004-07-22 17:52 ` Matt Heler
2004-07-22 17:54 ` Rudo Thomas
2004-07-22 18:01 ` Ingo Molnar
2004-07-22 18:08 ` Ingo Molnar
2004-07-22 18:14 ` Ingo Molnar
2004-07-22 18:37 ` Rudo Thomas
2004-07-23 10:42 ` [patch] voluntary-preempt-2.6.8-rc2-I3 Ingo Molnar
2004-07-23 10:58 ` Paolo Ciarrocchi
2004-07-23 11:04 ` Ingo Molnar
2004-07-23 11:28 ` [patch] voluntary-preempt-2.6.8-rc2-I4 Ingo Molnar
2004-07-24 0:16 ` Lee Revell
2004-07-23 11:42 ` [patch] voluntary-preempt-2.6.8-rc2-I3 Paolo Ciarrocchi
2004-07-23 12:00 ` Ingo Molnar
2004-07-23 15:36 ` Dang, Linh [CAR:2X23:EXCH]
2004-07-23 23:48 ` Thomas Charbonnel
2004-07-26 11:10 ` Ingo Molnar
2004-07-26 12:27 ` Thomas Charbonnel
2004-07-22 18:31 ` voluntary-preempt I0: sluggish feel Robert Love
2004-07-22 18:32 ` Rudo Thomas
2004-07-22 18:38 ` Ingo Molnar
2004-07-22 18:00 ` Ingo Molnar
2004-07-21 6:07 ` [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch Lee Revell
2004-07-21 10:14 ` Roger Luethi
2004-07-13 0:58 ` Jan Depner
2004-07-13 1:00 ` Andrew Morton
2004-07-13 3:31 ` Florin Andrei
2004-07-13 6:31 ` Paul Winkler
2004-07-13 13:26 ` Benno Senoner
2004-07-13 14:50 ` Paul Davis
2004-07-13 19:45 ` Lee Revell
2004-07-13 22:17 ` Bill Davidsen
2004-07-16 4:50 ` Florin Andrei
2004-07-16 12:49 ` Takashi Iwai
2004-07-13 21:53 ` Timothy Miller
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=20040709182638.GA11310@elte.hu \
--to=mingo@elte.hu \
--cc=arjanv@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox