From: Balbir Singh <bsingharora@gmail.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>,
Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: arnd@arndb.de, linux-pm@vger.kernel.org, rjw@rjwysocki.net,
David.Laight@ACULAB.COM, anton@samba.org,
"Shreyas B. Prabhu" <shreyas@linux.vnet.ibm.com>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v4] cpuidle: Fix last_residency division
Date: Fri, 01 Jul 2016 22:41:13 +1000 [thread overview]
Message-ID: <1467376873.12509.1.camel@gmail.com> (raw)
In-Reply-To: <577624A3.2000406@linaro.org>
On Fri, 2016-07-01 at 10:06 +0200, Daniel Lezcano wrote:
> On 06/30/2016 05:37 PM, Nicolas Pitre wrote:
> >
> > On Thu, 30 Jun 2016, Daniel Lezcano wrote:
> [ ... ]
>
> >
> > >
> > > >
> > > > + if (likely(nsec < DIV_APPROXIMATION_THRESHOLD)) {
> > > > + u32 usec = nsec;
> > > > +
> > > > + usec += usec >> 5;
> > > > + usec = usec >> 10;
> > > > +
> > > > + /* Can safely cast to int since usec is < INT_MAX */
> > > > + return usec;
> > > > + } else {
> > > > + u64 usec = div_u64(nsec, 1000);
> > > > +
> > > > + if (usec > INT_MAX)
> > > > + usec = INT_MAX;
> > > > +
> > > > + /* Can safely cast to int since usec is < INT_MAX */
> > > > + return usec;
> > > > + }
> > > > +}
> > >
> > > What bothers me with this division is the benefit of adding an extra ultra
> > > optimized division by 1000 in cpuidle.h while we have already ktime_divns
> > > which is optimized in ktime.h.
> > It is "optimized" but still much heavier than what is presented above as
> > it provides maximum precision.
> >
> > It all depends on how important the performance gain from the original
> > shift by 10 was in the first place.
> Actually the original shift was there because it was convenient as a
> simple ~div1000 operation. But against all odds, the approximation
> introduced a regression on a very specific use case on PowerPC.
>
> We are not in the hot path and I think we can live with a ktime_divns
> without problem. That would simplify the fix I believe.
>
I would tend to agree with this and there are better ways to do
multiplicative inverses if we care
Balbir Singh.
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
WARNING: multiple messages have this Message-ID (diff)
From: Balbir Singh <bsingharora@gmail.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>,
Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: "Shreyas B. Prabhu" <shreyas@linux.vnet.ibm.com>,
rjw@rjwysocki.net, linux-pm@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, anton@samba.org,
mpe@ellerman.id.au, David.Laight@ACULAB.COM, arnd@arndb.de
Subject: Re: [PATCH v4] cpuidle: Fix last_residency division
Date: Fri, 01 Jul 2016 22:41:13 +1000 [thread overview]
Message-ID: <1467376873.12509.1.camel@gmail.com> (raw)
In-Reply-To: <577624A3.2000406@linaro.org>
On Fri, 2016-07-01 at 10:06 +0200, Daniel Lezcano wrote:
> On 06/30/2016 05:37 PM, Nicolas Pitre wrote:
> >
> > On Thu, 30 Jun 2016, Daniel Lezcano wrote:
> [ ... ]
>
> >
> > >
> > > >
> > > > + if (likely(nsec < DIV_APPROXIMATION_THRESHOLD)) {
> > > > + u32 usec = nsec;
> > > > +
> > > > + usec += usec >> 5;
> > > > + usec = usec >> 10;
> > > > +
> > > > + /* Can safely cast to int since usec is < INT_MAX */
> > > > + return usec;
> > > > + } else {
> > > > + u64 usec = div_u64(nsec, 1000);
> > > > +
> > > > + if (usec > INT_MAX)
> > > > + usec = INT_MAX;
> > > > +
> > > > + /* Can safely cast to int since usec is < INT_MAX */
> > > > + return usec;
> > > > + }
> > > > +}
> > >
> > > What bothers me with this division is the benefit of adding an extra ultra
> > > optimized division by 1000 in cpuidle.h while we have already ktime_divns
> > > which is optimized in ktime.h.
> > It is "optimized" but still much heavier than what is presented above as
> > it provides maximum precision.
> >
> > It all depends on how important the performance gain from the original
> > shift by 10 was in the first place.
> Actually the original shift was there because it was convenient as a
> simple ~div1000 operation. But against all odds, the approximation
> introduced a regression on a very specific use case on PowerPC.
>
> We are not in the hot path and I think we can live with a ktime_divns
> without problem. That would simplify the fix I believe.
>
I would tend to agree with this and there are better ways to do
multiplicative inverses if we care
Balbir Singh.
next prev parent reply other threads:[~2016-07-01 12:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-30 14:34 [PATCH v4] cpuidle: Fix last_residency division Shreyas B. Prabhu
2016-06-30 14:57 ` Daniel Lezcano
2016-06-30 14:57 ` Daniel Lezcano
2016-06-30 15:37 ` Nicolas Pitre
2016-06-30 15:37 ` Nicolas Pitre
2016-07-01 8:06 ` Daniel Lezcano
2016-07-01 12:41 ` Balbir Singh [this message]
2016-07-01 12:41 ` Balbir Singh
2016-07-01 13:02 ` Nicolas Pitre
2016-07-01 13:02 ` Nicolas Pitre
2016-07-01 13:00 ` Nicolas Pitre
2016-07-01 13:00 ` Nicolas Pitre
2016-07-01 14:16 ` Shreyas B Prabhu
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=1467376873.12509.1.camel@gmail.com \
--to=bsingharora@gmail.com \
--cc=David.Laight@ACULAB.COM \
--cc=anton@samba.org \
--cc=arnd@arndb.de \
--cc=daniel.lezcano@linaro.org \
--cc=linux-pm@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=nicolas.pitre@linaro.org \
--cc=rjw@rjwysocki.net \
--cc=shreyas@linux.vnet.ibm.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 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.