linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Matt Sealey <matt@genesi-usa.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: John Stultz <john.stultz@linaro.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Linux ARM Kernel ML <linux-arm-kernel@lists.infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>
Subject: Re: One of these things (CONFIG_HZ) is not like the others..
Date: Mon, 21 Jan 2013 19:56:08 -0600	[thread overview]
Message-ID: <CAKGA1bmXU-sGKPTvRXPmPXwzBOety=0DkSK8cp9RXLNHdNFB+Q@mail.gmail.com> (raw)
In-Reply-To: <20130122011808.GF23505@n2100.arm.linux.org.uk>

On Mon, Jan 21, 2013 at 7:18 PM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Mon, Jan 21, 2013 at 07:06:59PM -0600, Matt Sealey wrote:
>> On Mon, Jan 21, 2013 at 6:51 PM, John Stultz <john.stultz@linaro.org> wrote:
>> > On 01/21/2013 02:54 PM, Matt Sealey wrote:
>
> sched_clock() has nothing to do with time keeping, and that
> HZ/NO_HZ/HRTIMERS don't affect it (when it isn't being derived from
> jiffies).
>
> Now, sched_clock() is there to give the scheduler a _fast_ to access,
> higher resolution clock than is available from other sources, so that
> there's ways of accurately measuring the amount of time processes run
> for,

That depends on what you meant by timekeeping, right?

I'm really not concerned about the wallclock time, more about the
accuracy of the scheduler clock (tick?), preemption, accurate delays
(i.e. if I msleep(10) does it delay for 10ms or for 40ms because my
delay timer is inaccurate? I'd rather it was better but closer to
10ms), and whether the scheduler (the thing that tells my userspace
whether firefox is running now, or totem, or any other task) is using
the correct high resolution periodic, oneshot, repeatable (however it
repeats) timers *properly* given that this magic config item is
missing on ARM.

That magic config item being CONFIG_SCHED_HRTICK which is referenced a
bunch in kernel/sched/*.[ch] but *ONLY* defined as a Kconfig item in
kernel/Kconfig.hz.

Do we need to copy that Kconfig item out to arch/arm/Kconfig, that's
the question?

>  and other such measurements - and it uses that to determine how
> to schedule a particular task and when to preempt it.
>
> Not providing it means you get those measurements at HZ-based resolution,
> which is suboptimal for tasks which run often for sub-HZ periods (which
> can end up accumulating zero run time.)

Okay, and John said earlier:

John Stultz:
> So I'm actually not super familiar with SCHED_HRTICK details, but from my
> brief skim of it it looks like its useful for turning off the periodic timer
> tick, and allowing the scheduler tick to be triggered by an hrtimer itself
> (There's a number of these interesting inversions that go on in switching to
> HRT mode - for instance, standard timer ticks are switched to being hrtimer
> events themselves).
>
> This likely has the benefit of time-accurate preemption (well, long term, as
> if the timer granularity isn't matching you could be delayed up to a tick -
> but it wouldn't drift).
>
> I'm guessing Thomas would probably know best what the potential issues would
> be from running ((CONFIG_HRTIMER  || CONFIG_NO_HZ) && !CONFIG_SCHED_HRTICK).

If SCHED_HRTICK isn't enabled but setup_sched_clock has been given an
accessor for a real, hardware, fast, high resolution counter that
meets all the needs of sched_clock, what's going on? If it's enabled,
what extra is it doing that, say, my_plat_read_sched_clock doesn't?

--
Matt Sealey <matt@genesi-usa.com>
Product Development Analyst, Genesi USA, Inc.

  reply	other threads:[~2013-01-22  1:56 UTC|newest]

Thread overview: 48+ 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:41 ` Arnd Bergmann
2013-01-21 21:00   ` John Stultz
2013-01-21 21:12     ` Russell King - ARM Linux
2013-01-21 22:18       ` John Stultz
2013-01-21 22:44         ` Russell King - ARM Linux
2013-01-22  8:27           ` Arnd Bergmann
2013-01-21 22:20       ` Matt Sealey
2013-01-21 22:42         ` Russell King - ARM Linux
2013-01-21 23:23           ` Matt Sealey
2013-01-21 23:49             ` Russell King - ARM Linux
2013-01-22  0:09               ` Matt Sealey
2013-01-22  0:26                 ` Matt Sealey
2013-01-21 21:14     ` Matt Sealey
2013-01-21 22:36       ` John Stultz
2013-01-21 22:49         ` Russell King - ARM Linux
2013-01-21 22:54         ` Matt Sealey
2013-01-21 23:13           ` Russell King - ARM Linux
2013-01-21 23:30             ` Matt Sealey
2013-01-22  0:02               ` Russell King - ARM Linux
2013-01-22  0:38           ` John Stultz
2013-01-22  0:51           ` John Stultz
2013-01-22  1:06             ` Matt Sealey
2013-01-22  1:18               ` Russell King - ARM Linux
2013-01-22  1:56                 ` Matt Sealey [this message]
2013-01-22  1:31               ` John Stultz
2013-01-22  2:10                 ` Matt Sealey
2013-01-31 21:31                   ` Thomas Gleixner
2013-01-21 21:02   ` Matt Sealey
2013-01-21 22:30     ` Arnd Bergmann
2013-01-21 22:45       ` Russell King - ARM Linux
2013-01-21 23:01         ` Matt Sealey
2013-01-21 21:03   ` Russell King - ARM Linux
2013-01-21 23:23     ` Tony Lindgren
2013-01-22  6:23       ` Santosh Shilimkar
2013-01-22  9:31         ` Arnd Bergmann
2013-01-22 10:14           ` Santosh Shilimkar
2013-01-22 14:51             ` Russell King - ARM Linux
2013-01-22 15:05               ` Santosh Shilimkar
2013-01-28  6:08                 ` Santosh Shilimkar
2013-01-29  0:01                   ` John Stultz
2013-01-29  6:43                     ` Santosh Shilimkar
2013-01-29 10:06                       ` Russell King - ARM Linux
2013-01-29 18:43                       ` John Stultz
2013-01-22 17:31               ` Arnd Bergmann
2013-01-22 18:59               ` John Stultz
2013-01-22 21:52                 ` Tony Lindgren
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='CAKGA1bmXU-sGKPTvRXPmPXwzBOety=0DkSK8cp9RXLNHdNFB+Q@mail.gmail.com' \
    --to=matt@genesi-usa.com \
    --cc=arnd@arndb.de \
    --cc=john.stultz@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mingo@redhat.com \
    --cc=peterz@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).