linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: anish singh <anish198519851985@gmail.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>,
	linux-arm-msm@vger.kernel.org, Will Deacon <will.deacon@arm.com>,
	linux-kernel-mail <linux-kernel@vger.kernel.org>,
	arm@kernel.org, John Stultz <john.stultz@linaro.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCHv2 4/6] sched_clock: Add support for >32 bit sched_clock
Date: Mon, 10 Jun 2013 17:08:03 +0100	[thread overview]
Message-ID: <20130610160803.GW18614@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <CAK7N6vqao-O4hTLCNatu3LVC38OFR+L8MxZCc-gi1fikBSdYYA@mail.gmail.com>

On Mon, Jun 10, 2013 at 09:31:21PM +0530, anish singh wrote:
> On Mon, Jun 10, 2013 at 9:08 PM, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
> 
> Least I can do is to say "Thanks".
> > On Mon, Jun 10, 2013 at 08:46:36PM +0530, anish singh wrote:
> >> Probably a trivial question.I was wondering why this particular requirement
> >> exists in the first place.I looked into this commit 112f38a4a3 but couldn't
> >> gather the reason.
> >
> > You're looking at a commit introducing an implementation.  The requirement
> > isn't driven by the implementation.  It's driven by the code and the maths
> > in the core scheduler, and its been a requirement for years.
> >
> > sched_clock() needs to be monotonic, and needs to wrap at 64-bit, because
> > calculations are done by comparing the difference of two 64-bit values
> > returned from this function.
> 
> Yes, and this is the question.If it is 32 bit then also it can overflow but
> it will happen relatively fast.So I guess that is the reason why we use 64 bit
> and this will avoid recalculations for recalibration.

And that's why 112f38a4a3 is there - to ensure that we extend a 32-bit
or smaller counter all the way up to the full 64-bits.  This replaces
the previous generation code which only extended it to 63-bits.  Problems
were reported!

> > Let's take a trivial example - if you have a 16 bit counter, and you have
> > a value of 0xc000 ns, and next time you read it, it has value 0x0001 ns,
> > then what value do you end up with when you calculate the time passed
> > using 64-bit maths.
> >
> > That's 0x0000000000000001 - 0x000000000000c000.  The answer is a very big
> > number which is not the correct 16385.  This means that things like process
> > timeslice counting and scheduler fairness is compromised - I'd expect even
> 
> So you mean when counter overflows the scheduler doesn't handle it?

There is no handling of counter overflows at scheduler level because
the specification for sched_clock() is that this function _will_ return
a monotonically increasing 64-bit value from 0 to the maximum 64-bit
value.

The reason for this is that there are popular architectures around
which do this natively, so the powers that be do not want additional
useless code cluttering their architectures.

  reply	other threads:[~2013-06-10 16:08 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-02  6:39 [PATCHv2 0/6] Make ARM's sched_clock generic + 64 bit friendly Stephen Boyd
2013-06-02  6:39 ` [PATCHv2 1/6] ARM: sched_clock: Remove unused needs_suspend member Stephen Boyd
2013-06-02  6:39 ` [PATCHv2 2/6] ARM: sched_clock: Return suspended count earlier Stephen Boyd
2013-06-02  6:39 ` [PATCHv2 3/6] sched_clock: Make ARM's sched_clock generic for all architectures Stephen Boyd
2013-06-03  7:12   ` Baruch Siach
2013-06-03 19:50     ` Stephen Boyd
2013-06-04 17:56       ` John Stultz
2013-06-04 18:16         ` Russell King - ARM Linux
2013-06-21 15:45   ` Arnd Bergmann
2013-06-21 17:05     ` Stephen Boyd
2013-06-21 17:42       ` John Stultz
2013-06-24 22:45         ` Stephen Boyd
2013-06-24 22:54           ` John Stultz
2013-06-02  6:39 ` [PATCHv2 4/6] sched_clock: Add support for >32 bit sched_clock Stephen Boyd
2013-06-03  9:39   ` Russell King - ARM Linux
2013-06-03 21:11     ` Stephen Boyd
2013-06-03 22:12       ` Russell King - ARM Linux
2013-06-04  1:51         ` Stephen Boyd
2013-06-04 10:21           ` Russell King - ARM Linux
2013-06-10  4:12             ` Rob Herring
2013-06-14 17:17               ` Catalin Marinas
2013-06-10 15:16         ` anish singh
2013-06-10 15:38           ` Russell King - ARM Linux
2013-06-10 16:01             ` anish singh
2013-06-10 16:08               ` Russell King - ARM Linux [this message]
2013-06-02  6:39 ` [PATCHv2 5/6] ARM: arch_timer: Move to setup_sched_clock_64() Stephen Boyd
2013-06-02  6:39 ` [PATCHv2 6/6] arm64: Move to generic sched_clock infrastructure Stephen Boyd
2013-06-03  8:52 ` [PATCHv2 0/6] Make ARM's sched_clock generic + 64 bit friendly Baruch Siach
2013-06-04  0:19 ` John Stultz
2013-06-04 16:09   ` Will Deacon
2013-06-04 17:53     ` John Stultz
2013-06-16  9:45       ` Baruch Siach
2013-06-17 16:23         ` John Stultz
2013-06-17 18:02           ` Baruch Siach
2013-06-17 18:14             ` John Stultz

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=20130610160803.GW18614@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=anish198519851985@gmail.com \
    --cc=arm@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=john.stultz@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sboyd@codeaurora.org \
    --cc=tglx@linutronix.de \
    --cc=will.deacon@arm.com \
    /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).