mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@timesys.com>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Andrew Morton <akpm@osdl.org>, john stultz <johnstul@us.ibm.com>,
	Ingo Molnar <mingo@elte.hu>, Con Kolivas <kernel@kolivas.org>
Subject: [PATCHSET] Announce: High-res timers, tickless/dyntick and dynamic HZ
Date: Sun, 18 Jun 2006 17:10:26 +0200	[thread overview]
Message-ID: <1150643426.27073.17.camel@localhost.localdomain> (raw)

We are pleased to announce the 2.6.17 based release of our high-res 
timers kernel feature, upon which we based a tickless kernel (dyntick) 
implementation and a 'dynamic HZ' feature as well:

http://www.tglx.de/projects/hrtimers/2.6.17/

The easiest way to try these features is to apply the combo patch to 
vanilla 2.6.17. The patching order is:

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2
http://www.tglx.de/projects/hrtimers/2.6.17/patch-2.6.17-hrt-dyntick1.patch


A broken out patch series is available too:

http://www.tglx.de/projects/hrtimers/2.6.17/patch-2.6.17-hrt-dyntick1.patches.tar.bz2


The high-res timers feature (CONFIG_HIGH_RES_TIMERS) enables POSIX 
timers and nanosleep() to be as accurate as the hardware allows (around 
1usec on typical hardware). This feature is transparent - if enabled it 
just makes these timers much more accurate than the current HZ 
resolution. It is based on the Generic Time Of Day patchset from John 
Stultz and it in essence finishes what we started with the 
kernel/hrtimers.c code in 2.6.16.
 
The tickless kernel feature (CONFIG_NO_HZ) enables 'on-demand' timer 
interrupts: if there is no timer to be expired for say 1.5 seconds when 
the system goes idle, then the system will stay totally idle for 1.5 
seconds. This should bring cooler CPUs and power savings: on our (x86) 
testboxes we have measured the effective IRQ rate to go from HZ to 1-2 
timer interrupts per second.

This feature is implemented by driving 'low res timer wheel' processing 
via special per-CPU high-res timers, which timers are reprogrammed to 
the next-low-res-timer-expires interval. This tickless-kernel design is 
SMP-safe in a natural way and has been developed on SMP systems from
the 
beginning.

Note: while our code should be similar in behavior to the existing 
dynticks kernel patch from Con, it is a fundamentally different design 
(being based on the high-res timers support and APIs) and is thus a 
different implementation. We reused one area of dynticks: we integrated 
and improved the 'timer top' profiling tool (CONFIG_TIMER_INFO).

When running the kernel then there's a 'timeout granularity' 
runtime tunable parameter as well, under:

   /proc/sys/kernel/timeout_granularity

it defaults to 1, meaning that CONFIG_HZ is the granularity of timers. 

For example, if CONFIG_HZ is 1000 and timeout_granularity is set to 10, 
then low-res timers will be expired every 10 jiffies (every 10 msecs), 
thus the effective granularity of low-res timers is 100 HZ. Thus this 
feature implements nonintrusive dynamic HZ in essence, without touching 
the HZ macro itself.

Supported platforms: high-res timers and tickless works on x86 (x86_64,
PPC and ARM port are in the works). Other platforms should still work
fine with the usual HZ frequency timer tick.

Naturally, we'd like these features to be integrated into the upstream 
kernel as well.

Bugreports and suggestions are welcome,
 
	Thomas, Ingo



             reply	other threads:[~2006-06-18 15:09 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-18 15:10 Thomas Gleixner [this message]
2006-06-18 16:35 ` Michal Piotrowski
2006-06-18 18:28   ` Ingo Molnar
2006-06-19 16:35     ` Michal Piotrowski
2006-06-19 19:51       ` Thomas Gleixner
2006-06-25 13:06         ` Steven Rostedt
2006-06-25 14:26           ` Thomas Gleixner
2006-06-18 19:50   ` Thomas Gleixner
2006-06-19 12:09     ` Con Kolivas
2006-06-19 12:31       ` Thomas Gleixner
2006-06-19 13:05         ` Con Kolivas
2006-06-19 13:10           ` Thomas Gleixner
2006-06-19 21:58         ` mark gross
2006-06-19 22:19           ` Thomas Gleixner
2006-06-21 12:54             ` Felix Oxley
2006-06-21 13:07               ` Thomas Gleixner
2006-06-18 23:47 ` Roman Zippel
2006-06-19 12:50   ` Ingo Molnar
2006-06-19 13:47     ` Roman Zippel
2006-06-19  5:21 ` Con Kolivas
2006-06-19  5:24   ` Con Kolivas
2006-06-19 12:26   ` Ingo Molnar
2006-06-19 14:03     ` Con Kolivas
2006-06-19 20:06       ` Thomas Gleixner
2006-06-19 20:57         ` ACPI C-States algorithm updates for dyn-tick Dominik Brodowski
2006-06-19 21:28           ` [1/4] ACPI C-States: accounting of sleep states Dominik Brodowski
2006-06-19 21:29             ` [2/4] ACPI C-States: bm_activity improvements Dominik Brodowski
2006-06-19 21:31               ` [3/4] ACPI C-States: only demote on current bus mastering activity Dominik Brodowski
2006-06-19 21:33                 ` [4/4 -- only for discussion] ACPI C-States: dyn-ticks-improvements (for -ck implementation) Dominik Brodowski

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=1150643426.27073.17.camel@localhost.localdomain \
    --to=tglx@timesys.com \
    --cc=akpm@osdl.org \
    --cc=johnstul@us.ibm.com \
    --cc=kernel@kolivas.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    /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

Powered by JetHome