From: Adrian Hunter <adrian.hunter@intel.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Andy Lutomirski <luto@amacapital.net>,
linux-kernel@vger.kernel.org,
Stephane Eranian <eranian@google.com>,
Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH V2] perf: x86: Improve accuracy of perf/sched clock
Date: Fri, 21 Aug 2015 09:46:57 +0300 [thread overview]
Message-ID: <55D6C961.9040303@intel.com> (raw)
In-Reply-To: <alpine.DEB.2.11.1508202130440.3873@nanos>
On 20/08/15 22:31, Thomas Gleixner wrote:
> On Wed, 29 Jul 2015, Adrian Hunter wrote:
>> @@ -239,6 +239,8 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int cpu)
>> unsigned long long tsc_now, ns_now;
>> struct cyc2ns_data *data;
>> unsigned long flags;
>> + u64 mult;
>> + u32 shft = 32;
>>
>> local_irq_save(flags);
>> sched_clock_idle_sleep_event();
>> @@ -256,12 +258,17 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int cpu)
>> * time function is continuous; see the comment near struct
>> * cyc2ns_data.
>> */
>> - data->cyc2ns_mul =
>> - DIV_ROUND_CLOSEST(NSEC_PER_MSEC << CYC2NS_SCALE_FACTOR,
>> - cpu_khz);
>> - data->cyc2ns_shift = CYC2NS_SCALE_FACTOR;
>> + mult = (u64)NSEC_PER_MSEC << 32;
>> + mult += cpu_khz / 2;
>> + do_div(mult, cpu_khz);
>> + while (mult > U32_MAX) {
>> + mult >>= 1;
>> + shft -= 1;
>> + }
>
> This is an open coded variant of clocks_calc_mult_shift(). Can we
> please use that one?
Sure. clocks_calc_mult_shift() does a division on each shift which is a bit
slower (avoids a 1-bit rounding error but that will never be more than 1 in
2^32 in this case), and the 'maxsec' functionality is not needed because
mul_u64_u32_shr() is used to avoid 64-bit overflow.
I will send V3.
next prev parent reply other threads:[~2015-08-21 6:49 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-28 21:14 [PATCH V2] perf: x86: Improve accuracy of perf/sched clock Adrian Hunter
2015-08-17 7:34 ` Adrian Hunter
2015-08-17 9:56 ` Peter Zijlstra
2015-08-20 19:31 ` Thomas Gleixner
2015-08-21 6:46 ` Adrian Hunter [this message]
2015-08-21 9:05 ` [PATCH V3] " Adrian Hunter
2015-09-01 8:36 ` Adrian Hunter
2015-09-01 8:57 ` Peter Zijlstra
2015-09-13 11:08 ` [tip:perf/core] perf/x86: " tip-bot for Adrian Hunter
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=55D6C961.9040303@intel.com \
--to=adrian.hunter@intel.com \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=eranian@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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.