From: Paul Mundt <lethal@linux-sh.org>
To: Linus Walleij <linus.ml.walleij@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>, Andrew Victor <linux@maxim.org.za>,
Haavard Skinnemoen <hskinnemoen@atmel.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-sh@vger.kernel.org,
peterz@infradead.org, linux-arm-kernel@lists.arm.linux.org.uk
Subject: Re: [PATCH] sched: Support current clocksource handling in fallback sched_clock().
Date: Tue, 26 May 2009 14:43:57 +0000 [thread overview]
Message-ID: <20090526144357.GA20577@linux-sh.org> (raw)
In-Reply-To: <63386a3d0905260731m655bfee3q82a6f52d71fa3cef@mail.gmail.com>
On Tue, May 26, 2009 at 04:31:58PM +0200, Linus Walleij wrote:
> 2009/5/26 Paul Mundt <lethal@linux-sh.org>:
>
> > */
> > unsigned long long __attribute__((weak)) sched_clock(void)
> > {
> > + /*
> > + * Use the current clocksource when it becomes available later in
> > + * the boot process, and ensure that it has a high enough rating
> > + * to make it suitable for general use.
> > + */
> > + if (clock && clock->rating >= 100)
> > + return cyc2ns(clock, clocksource_read(clock));
> > +
> > + /* Otherwise just fall back on jiffies */
> > return (unsigned long long)(jiffies - INITIAL_JIFFIES)
> > * (NSEC_PER_SEC / HZ);
> > }
>
> This seems like it would make the patch I sent the other day
> unnecessary (subject u300 sched_clock() implementation).
>
> It would also trim off this solution found in all OMAP platforms in
> arch/arm/plat-omap/common.c
>
> BUT Peter Zijlstra replied to my question about why this wasn't
> generic with:
>
Hum, you trimmed out my changelog which explains all the rationale for
precisely why this needs to be generic. Hopefully people that care will
go back and read that.
> [peterz]:
> > But that is the reason this isn't generic, non of the 'stable'
> > clocksources on x86 are fast enough to use as sched_clock.
>
> Does that mean clock->rating for these clocksources is
> for certain < 100?
>
The '100' thing is a bit arbitrary, this is what defines base level
usability. If we want to set a mandate that sched_clock() sources need to
start at 300 or 400 or whatever, that is fine with me, too. In the case
of x86 there are several < 100 ratings, but I don't know if those cover
all of the cases Peter is concerned about.
Regardless, the above cyc2ns() logic does make most of the
architecture-specific sched_clock() implementations redundant, so they
can of course be killed off incrementally. This might not be the case for
x86, but in those cases I expect a different sched_clock() to be
implemented anyways.
> Else you might want an additional criteria, like
> cyc2ns(1) (much less than) jiffies_to_usecs(1)*1000
> (however you do that the best way)
> so you don't pick something
> that isn't substantially faster than the jiffy counter atleast?
>
This rather defeats the purpose of sched_clock() being fast. If we want
to add a flag that means this in to the clocksource instead of consulting
the rating, that is fine with me too. I know which clocksources I prefer
to use for a sched_clock() and they are all better than jiffies. The
semantics of how we tell sched_clock() that are not so important. Rating
seemed like a good choice from the documentation in struct clocksource at
least.
WARNING: multiple messages have this Message-ID (diff)
From: Paul Mundt <lethal@linux-sh.org>
To: Linus Walleij <linus.ml.walleij@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>, Andrew Victor <linux@maxim.org.za>,
Haavard Skinnemoen <hskinnemoen@atmel.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-sh@vger.kernel.org,
peterz@infradead.org, linux-arm-kernel@lists.arm.linux.org.uk
Subject: Re: [PATCH] sched: Support current clocksource handling in fallback sched_clock().
Date: Tue, 26 May 2009 23:43:57 +0900 [thread overview]
Message-ID: <20090526144357.GA20577@linux-sh.org> (raw)
In-Reply-To: <63386a3d0905260731m655bfee3q82a6f52d71fa3cef@mail.gmail.com>
On Tue, May 26, 2009 at 04:31:58PM +0200, Linus Walleij wrote:
> 2009/5/26 Paul Mundt <lethal@linux-sh.org>:
>
> > */
> > unsigned long long __attribute__((weak)) sched_clock(void)
> > {
> > + /*
> > + * Use the current clocksource when it becomes available later in
> > + * the boot process, and ensure that it has a high enough rating
> > + * to make it suitable for general use.
> > + */
> > + if (clock && clock->rating >= 100)
> > + return cyc2ns(clock, clocksource_read(clock));
> > +
> > + /* Otherwise just fall back on jiffies */
> > return (unsigned long long)(jiffies - INITIAL_JIFFIES)
> > * (NSEC_PER_SEC / HZ);
> > }
>
> This seems like it would make the patch I sent the other day
> unnecessary (subject u300 sched_clock() implementation).
>
> It would also trim off this solution found in all OMAP platforms in
> arch/arm/plat-omap/common.c
>
> BUT Peter Zijlstra replied to my question about why this wasn't
> generic with:
>
Hum, you trimmed out my changelog which explains all the rationale for
precisely why this needs to be generic. Hopefully people that care will
go back and read that.
> [peterz]:
> > But that is the reason this isn't generic, non of the 'stable'
> > clocksources on x86 are fast enough to use as sched_clock.
>
> Does that mean clock->rating for these clocksources is
> for certain < 100?
>
The '100' thing is a bit arbitrary, this is what defines base level
usability. If we want to set a mandate that sched_clock() sources need to
start at 300 or 400 or whatever, that is fine with me, too. In the case
of x86 there are several < 100 ratings, but I don't know if those cover
all of the cases Peter is concerned about.
Regardless, the above cyc2ns() logic does make most of the
architecture-specific sched_clock() implementations redundant, so they
can of course be killed off incrementally. This might not be the case for
x86, but in those cases I expect a different sched_clock() to be
implemented anyways.
> Else you might want an additional criteria, like
> cyc2ns(1) (much less than) jiffies_to_usecs(1)*1000
> (however you do that the best way)
> so you don't pick something
> that isn't substantially faster than the jiffy counter atleast?
>
This rather defeats the purpose of sched_clock() being fast. If we want
to add a flag that means this in to the clocksource instead of consulting
the rating, that is fine with me too. I know which clocksources I prefer
to use for a sched_clock() and they are all better than jiffies. The
semantics of how we tell sched_clock() that are not so important. Rating
seemed like a good choice from the documentation in struct clocksource at
least.
next prev parent reply other threads:[~2009-05-26 14:43 UTC|newest]
Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-26 6:15 [PATCH] sched: Support current clocksource handling in fallback sched_clock() Paul Mundt
2009-05-26 6:15 ` Paul Mundt
2009-05-26 14:31 ` [PATCH] sched: Support current clocksource handling in fallback Linus Walleij
2009-05-26 14:31 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Linus Walleij
2009-05-26 14:38 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-26 14:38 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 20:17 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-26 20:17 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-26 23:08 ` Paul Mundt
2009-05-26 23:08 ` Paul Mundt
2009-05-26 23:13 ` Paul Mundt
2009-05-26 23:13 ` Paul Mundt
2009-05-26 23:25 ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-26 23:25 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-26 23:44 ` Paul Mundt
2009-05-26 23:44 ` Paul Mundt
2009-05-27 0:18 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-27 0:18 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-27 0:22 ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-27 0:22 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-27 0:26 ` Paul Mundt
2009-05-27 0:26 ` Paul Mundt
2009-05-27 1:09 ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-27 1:09 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-27 0:27 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-27 0:27 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-26 23:49 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-26 23:49 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-27 0:15 ` Paul Mundt
2009-05-27 0:15 ` Paul Mundt
2009-05-27 16:25 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-27 16:25 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 8:44 ` Paul Mundt
2009-05-28 8:44 ` Paul Mundt
2009-05-28 9:19 ` Paul Mundt
2009-05-28 9:19 ` Paul Mundt
2009-05-28 9:34 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-28 9:34 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-28 11:09 ` Paul Mundt
2009-05-28 11:09 ` Paul Mundt
2009-05-28 12:22 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 12:22 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 12:40 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-28 12:40 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-28 12:42 ` Paul Mundt
2009-05-28 12:42 ` Paul Mundt
2009-05-28 12:53 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 12:53 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 12:59 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-28 12:59 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-28 13:20 ` Paul Mundt
2009-05-28 13:20 ` Paul Mundt
2009-05-28 16:13 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 16:13 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 16:32 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-28 16:32 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-28 16:40 ` Paul Mundt
2009-05-28 16:40 ` Paul Mundt
2009-05-28 16:52 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 16:52 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 16:58 ` Paul Mundt
2009-05-28 16:58 ` Paul Mundt
2009-05-28 17:38 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 17:38 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 17:46 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 17:46 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 17:53 ` Paul Mundt
2009-05-28 17:53 ` Paul Mundt
2009-05-28 18:10 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 18:10 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 18:27 ` Paul Mundt
2009-05-28 18:27 ` Paul Mundt
2009-05-28 19:04 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 19:04 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 19:34 ` Paul Mundt
2009-05-28 19:34 ` Paul Mundt
2009-05-28 19:41 ` [PATCH] sched: Support current clocksource handling in Daniel Walker
2009-05-28 19:41 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Daniel Walker
2009-05-28 23:37 ` Paul Mundt
2009-05-28 23:37 ` Paul Mundt
2009-05-28 18:44 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 18:44 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 17:00 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-28 17:00 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-28 17:07 ` [PATCH] sched: Support current clocksource handling in John Stultz
2009-05-28 17:07 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() John Stultz
2009-05-26 20:23 ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-26 20:23 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-26 20:30 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-26 20:30 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 20:40 ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-26 20:40 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-26 20:55 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-26 20:55 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 23:00 ` [PATCH] sched: Support current clocksource handling in john stultz
2009-05-26 23:00 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() john stultz
2009-05-26 23:24 ` [PATCH] sched: Support current clocksource handling in fallback Mangalampalli, JayantX
2009-05-26 23:24 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Mangalampalli, JayantX
2009-05-27 0:04 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-27 0:04 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-26 23:39 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-26 23:39 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-27 6:58 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-27 6:58 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 20:39 ` [PATCH] sched: Support current clocksource handling in fallback Thomas Gleixner
2009-05-26 20:39 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Thomas Gleixner
2009-05-26 14:43 ` Paul Mundt [this message]
2009-05-26 14:43 ` Paul Mundt
2009-05-26 14:50 ` [PATCH] sched: Support current clocksource handling in Peter Zijlstra
2009-05-26 14:50 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Peter Zijlstra
2009-05-26 14:53 ` Paul Mundt
2009-05-26 14:53 ` Paul Mundt
2009-05-26 15:02 ` [PATCH] sched: Support current clocksource handling in fallback Matthieu CASTET
2009-05-26 15:02 ` [PATCH] sched: Support current clocksource handling in fallback sched_clock() Matthieu CASTET
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=20090526144357.GA20577@linux-sh.org \
--to=lethal@linux-sh.org \
--cc=akpm@linux-foundation.org \
--cc=hskinnemoen@atmel.com \
--cc=linus.ml.walleij@gmail.com \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux@maxim.org.za \
--cc=mingo@elte.hu \
--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 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.