All of lore.kernel.org
 help / color / mirror / Atom feed
From: santosh.shilimkar@ti.com (Santosh Shilimkar)
To: linux-arm-kernel@lists.infradead.org
Subject: One of these things (CONFIG_HZ) is not like the others..
Date: Tue, 22 Jan 2013 20:35:30 +0530	[thread overview]
Message-ID: <50FEAABA.6050307@ti.com> (raw)
In-Reply-To: <20130122145113.GK23505@n2100.arm.linux.org.uk>

On Tuesday 22 January 2013 08:21 PM, Russell King - ARM Linux wrote:
> On Tue, Jan 22, 2013 at 03:44:03PM +0530, Santosh Shilimkar wrote:
>> Sorry for not being clear enough. On OMAP, 32KHz is the only clock which
>> is always running(even during low power states) and hence the clock
>> source and clock event have been clocked using 32KHz clock. As mentioned
>> by RMK, with 32768 Hz clock and HZ = 100, there will be always an
>> error of 0.1 %. This accuracy also impacts the timer tick interval.
>> This was the reason, OMAP has been using the HZ = 128.
>
> Ok.  Let's look at this.  As far as time-of-day is concerned, this
> shouldn't really matter with the clocksource/clockevent based system
> that we now have (where *important point* platforms have been converted
> over.)
>
> Any platform providing a clocksource will override the jiffy-based
> clocksource.  The measurement of time-of-day passing is now based on
> the difference in values read from the clocksource, not from the actual
> tick rate.
>
> Anything _not_ providing a clock source will be reliant on jiffies
> incrementing, which in turn _requires_ one timer interrupt per jiffies
> at a known rate (which is HZ).
>
> Now, that's the time of day, what about jiffies?  Well, jiffies is
> incremented based on a certain number of nsec having passed since the
> last jiffy update.  That means the code copes with dropped ticks and
> the like.
>
> However, if your actual interrupt rate is close to the desired HZ, then
> it can lead to some interesting effects (and noise):
>
> - if the interrupt rate is slightly faster than HZ, then you can end up
>    with updates being delayed by 2x interrupt rate.
> - if the interrupt rate is slightly slower than HZ, you can occasionally
>    end up with jiffies incrementing by two.
> - if your interrupt rate is dead on HZ, then other system noise can come
>    into effect and you may get maybe zero, one or two jiffy increments per
>    interrupt.
>
> (You have to think about time passing in NS, where jiffy updates should
> be vs where the timer interrupts happen.)  See tick_do_update_jiffies64()
> for the details.
>
> The timer infrastructure is jiffy based - which includes scheduling where
> the scheduler does not use hrtimers.  That means a slight discrepency
> between HZ and the actual interrupt rate can cause around 1/HZ jitter.
> That's a matter of fact due to how the code works.
>
> So, actually, I think the accuracy of HZ has much overall effect _provided_
> a platform provides a clocksource to the accuracy of jiffy based timers
> nor timekeeping.  For those which don't, the accuracy of the timer
> interrupt to HZ is very important.
>
> (This is just based on reading some code and not on practical
> experiments - I'd suggest some research of this is done, trying HZ=100
> on OMAP's 32kHz timers, checking whether there's any drift, checking
> how accurately a single task can be woken from various select/poll/epoll
> delays, and checking whether NTP works.)
>
Thanks for expanding it. It is really helpful.

> And I think further discussion is pointless until such research has been
> done (or someone who _really_ knows the time keeping/timer/sched code
> inside out comments.)
>
Fully agree about experimentation to re-asses the drift.
 From what I recollect from past, few OMAP customers did
report the time drift issue and that is how the switch
from 100 --> 128 happened.

Anyway I have added the suggested task to my long todo list.

Regards,
Santosh

WARNING: multiple messages have this Message-ID (diff)
From: Santosh Shilimkar <santosh.shilimkar@ti.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Arnd Bergmann <arnd@arndb.de>, Tony Lindgren <tony@atomide.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Matt Sealey <matt@genesi-usa.com>,
	LKML <linux-kernel@vger.kernel.org>, Ben Dooks <ben@simtec.co.uk>,
	Ingo Molnar <mingo@redhat.com>,
	John Stultz <john.stultz@linaro.org>,
	Linux ARM Kernel ML <linux-arm-kernel@lists.infradead.org>
Subject: Re: One of these things (CONFIG_HZ) is not like the others..
Date: Tue, 22 Jan 2013 20:35:30 +0530	[thread overview]
Message-ID: <50FEAABA.6050307@ti.com> (raw)
In-Reply-To: <20130122145113.GK23505@n2100.arm.linux.org.uk>

On Tuesday 22 January 2013 08:21 PM, Russell King - ARM Linux wrote:
> On Tue, Jan 22, 2013 at 03:44:03PM +0530, Santosh Shilimkar wrote:
>> Sorry for not being clear enough. On OMAP, 32KHz is the only clock which
>> is always running(even during low power states) and hence the clock
>> source and clock event have been clocked using 32KHz clock. As mentioned
>> by RMK, with 32768 Hz clock and HZ = 100, there will be always an
>> error of 0.1 %. This accuracy also impacts the timer tick interval.
>> This was the reason, OMAP has been using the HZ = 128.
>
> Ok.  Let's look at this.  As far as time-of-day is concerned, this
> shouldn't really matter with the clocksource/clockevent based system
> that we now have (where *important point* platforms have been converted
> over.)
>
> Any platform providing a clocksource will override the jiffy-based
> clocksource.  The measurement of time-of-day passing is now based on
> the difference in values read from the clocksource, not from the actual
> tick rate.
>
> Anything _not_ providing a clock source will be reliant on jiffies
> incrementing, which in turn _requires_ one timer interrupt per jiffies
> at a known rate (which is HZ).
>
> Now, that's the time of day, what about jiffies?  Well, jiffies is
> incremented based on a certain number of nsec having passed since the
> last jiffy update.  That means the code copes with dropped ticks and
> the like.
>
> However, if your actual interrupt rate is close to the desired HZ, then
> it can lead to some interesting effects (and noise):
>
> - if the interrupt rate is slightly faster than HZ, then you can end up
>    with updates being delayed by 2x interrupt rate.
> - if the interrupt rate is slightly slower than HZ, you can occasionally
>    end up with jiffies incrementing by two.
> - if your interrupt rate is dead on HZ, then other system noise can come
>    into effect and you may get maybe zero, one or two jiffy increments per
>    interrupt.
>
> (You have to think about time passing in NS, where jiffy updates should
> be vs where the timer interrupts happen.)  See tick_do_update_jiffies64()
> for the details.
>
> The timer infrastructure is jiffy based - which includes scheduling where
> the scheduler does not use hrtimers.  That means a slight discrepency
> between HZ and the actual interrupt rate can cause around 1/HZ jitter.
> That's a matter of fact due to how the code works.
>
> So, actually, I think the accuracy of HZ has much overall effect _provided_
> a platform provides a clocksource to the accuracy of jiffy based timers
> nor timekeeping.  For those which don't, the accuracy of the timer
> interrupt to HZ is very important.
>
> (This is just based on reading some code and not on practical
> experiments - I'd suggest some research of this is done, trying HZ=100
> on OMAP's 32kHz timers, checking whether there's any drift, checking
> how accurately a single task can be woken from various select/poll/epoll
> delays, and checking whether NTP works.)
>
Thanks for expanding it. It is really helpful.

> And I think further discussion is pointless until such research has been
> done (or someone who _really_ knows the time keeping/timer/sched code
> inside out comments.)
>
Fully agree about experimentation to re-asses the drift.
 From what I recollect from past, few OMAP customers did
report the time drift issue and that is how the switch
from 100 --> 128 happened.

Anyway I have added the suggested task to my long todo list.

Regards,
Santosh




  reply	other threads:[~2013-01-22 15:05 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-21 20:01 One of these things (CONFIG_HZ) is not like the others Matt Sealey
2013-01-21 20:01 ` Matt Sealey
2013-01-21 20:41 ` Arnd Bergmann
2013-01-21 20:41   ` Arnd Bergmann
2013-01-21 21:00   ` John Stultz
2013-01-21 21:00     ` John Stultz
2013-01-21 21:12     ` Russell King - ARM Linux
2013-01-21 21:12       ` Russell King - ARM Linux
2013-01-21 22:18       ` John Stultz
2013-01-21 22:18         ` John Stultz
2013-01-21 22:44         ` Russell King - ARM Linux
2013-01-21 22:44           ` Russell King - ARM Linux
2013-01-22  8:27           ` Arnd Bergmann
2013-01-22  8:27             ` Arnd Bergmann
2013-01-21 22:20       ` Matt Sealey
2013-01-21 22:20         ` Matt Sealey
2013-01-21 22:42         ` Russell King - ARM Linux
2013-01-21 22:42           ` Russell King - ARM Linux
2013-01-21 23:23           ` Matt Sealey
2013-01-21 23:23             ` Matt Sealey
2013-01-21 23:49             ` Russell King - ARM Linux
2013-01-21 23:49               ` Russell King - ARM Linux
2013-01-22  0:09               ` Matt Sealey
2013-01-22  0:09                 ` Matt Sealey
2013-01-22  0:26                 ` Matt Sealey
2013-01-22  0:26                   ` Matt Sealey
2013-01-21 21:14     ` Matt Sealey
2013-01-21 21:14       ` Matt Sealey
2013-01-21 22:36       ` John Stultz
2013-01-21 22:36         ` John Stultz
2013-01-21 22:49         ` Russell King - ARM Linux
2013-01-21 22:49           ` Russell King - ARM Linux
2013-01-21 22:54         ` Matt Sealey
2013-01-21 22:54           ` Matt Sealey
2013-01-21 23:13           ` Russell King - ARM Linux
2013-01-21 23:13             ` Russell King - ARM Linux
2013-01-21 23:30             ` Matt Sealey
2013-01-21 23:30               ` Matt Sealey
2013-01-22  0:02               ` Russell King - ARM Linux
2013-01-22  0:02                 ` Russell King - ARM Linux
2013-01-22  0:38           ` John Stultz
2013-01-22  0:38             ` John Stultz
2013-01-22  0:51           ` John Stultz
2013-01-22  0:51             ` John Stultz
2013-01-22  1:06             ` Matt Sealey
2013-01-22  1:06               ` Matt Sealey
2013-01-22  1:18               ` Russell King - ARM Linux
2013-01-22  1:18                 ` Russell King - ARM Linux
2013-01-22  1:56                 ` Matt Sealey
2013-01-22  1:56                   ` Matt Sealey
2013-01-22  1:31               ` John Stultz
2013-01-22  1:31                 ` John Stultz
2013-01-22  2:10                 ` Matt Sealey
2013-01-22  2:10                   ` Matt Sealey
2013-01-31 21:31                   ` Thomas Gleixner
2013-01-31 21:31                     ` Thomas Gleixner
2013-01-21 21:02   ` Matt Sealey
2013-01-21 21:02     ` Matt Sealey
2013-01-21 22:30     ` Arnd Bergmann
2013-01-21 22:30       ` Arnd Bergmann
2013-01-21 22:45       ` Russell King - ARM Linux
2013-01-21 22:45         ` Russell King - ARM Linux
2013-01-21 23:01         ` Matt Sealey
2013-01-21 23:01           ` Matt Sealey
2013-01-21 21:03   ` Russell King - ARM Linux
2013-01-21 21:03     ` Russell King - ARM Linux
2013-01-21 23:23     ` Tony Lindgren
2013-01-21 23:23       ` Tony Lindgren
2013-01-22  6:23       ` Santosh Shilimkar
2013-01-22  6:23         ` Santosh Shilimkar
2013-01-22  9:31         ` Arnd Bergmann
2013-01-22  9:31           ` Arnd Bergmann
2013-01-22 10:14           ` Santosh Shilimkar
2013-01-22 10:14             ` Santosh Shilimkar
2013-01-22 14:51             ` Russell King - ARM Linux
2013-01-22 14:51               ` Russell King - ARM Linux
2013-01-22 15:05               ` Santosh Shilimkar [this message]
2013-01-22 15:05                 ` Santosh Shilimkar
2013-01-28  6:08                 ` Santosh Shilimkar
2013-01-28  6:08                   ` Santosh Shilimkar
2013-01-29  0:01                   ` John Stultz
2013-01-29  0:01                     ` John Stultz
2013-01-29  6:43                     ` Santosh Shilimkar
2013-01-29  6:43                       ` Santosh Shilimkar
2013-01-29 10:06                       ` Russell King - ARM Linux
2013-01-29 10:06                         ` Russell King - ARM Linux
2013-01-29 18:43                       ` John Stultz
2013-01-29 18:43                         ` John Stultz
2013-01-22 17:31               ` Arnd Bergmann
2013-01-22 17:31                 ` Arnd Bergmann
2013-01-22 18:59               ` John Stultz
2013-01-22 18:59                 ` John Stultz
2013-01-22 21:52                 ` Tony Lindgren
2013-01-22 21:52                   ` Tony Lindgren
2013-01-23  5:18                   ` Santosh Shilimkar
2013-01-23  5:18                     ` Santosh Shilimkar

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=50FEAABA.6050307@ti.com \
    --to=santosh.shilimkar@ti.com \
    --cc=linux-arm-kernel@lists.infradead.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.