All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Ed Cashin <ed.cashin@acm.org>
Cc: y2038@lists.linaro.org,
	Tina Ruchandani <ruchandani.tina@gmail.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [Y2038] [PATCH] aoe: Use 64-bit timestamp in frame
Date: Wed, 13 May 2015 10:04:26 +0200	[thread overview]
Message-ID: <8535976.TAdvFKB2bQ@wuerfel> (raw)
In-Reply-To: <5552A778.6070603@acm.org>

On Tuesday 12 May 2015 21:23:04 Ed Cashin wrote:
> On 05/12/2015 07:14 AM, Arnd Bergmann wrote:
> > On Tuesday 12 May 2015 11:44:21 Arnd Bergmann wrote:
> >> There are of course multiple ways to do this. One way would be to
> >> change the code to work on 32-bit nanoseconds instead of 32-bit
> >> microseconds. This requires proving that the we cannot exceed
> >> 4.29 seconds of round-trip time in calc_rttavg().
> >> Is that a valid assumption or not?
> >>
> >> If not, we could replace do_gettimeofday() with ktime_get_ts64().
> >> This will ensure we don't need a 64-bit division when converting
> >> the ts64 to a 32-bit microsecond value, and combined with the
> >> conversion is still no slower than do_gettimeofday(), and it
> >> still avoids the double bookkeeping because it uses a monotonic
> >> timebase that is robust against settimeofday.
> > Two other approaches that occurred to me later:
> >
> > - introduce common ktime_get_ms(), ktime_get_us(), ktime_get_real_ms()
> >    and ktime_get_real_is() interfaces, to match the other interfaces
> >    we already provide. These could be done as efficiently or better
> >    than what aoe does manually today.
> >
> > - change the timebase that is used for the computations in aoe to use
> >    scaled nanoseconds instead of microseconds. Using
> >
> >    u32 time = ktime_get_ns() >> 10;
> >
> >    would give you a similar range and precision as microseconds, but
> >    completely avoid integer division. You could also use a different
> >    shift value to either extend the range beyond 71 minutes, or the
> >    extend the precision to something below a microsecond. This would
> >    be the most efficient implementation, but also require significant
> >    changes to the driver.
> >
> 
> That is an interesting idea.  People do care about aoe_deadsecs being
> pretty accurate, so there would need to be a way to make that remain
> accurate.  The driver will fail outstanding I/O to the target and mark it
> as "down" after unsuccessfully retransmitting commands to the target
> for a number of seconds equal to aoe_deadsecs.
> 
> As to the efficient ktime_get_us idea, that sounds appealing since you
> mention that they would be efficient.
> 
> Thanks for the analysis.

Shall we do the ktime_get_us() approach then? It still requires a 
32-bit division like do_gettimeofday(), so it will not be as efficient
as the shifted nanoseconds.

As for the aoe_deadsecs computation, converting the aoe_deadsec
module parameter into scaled nanoseconds can be done at module
load time, and that way you also save the integer division you
currently do for each frame in rexmit_timer() to turn the
microseconds into seconds.

	Arnd

  reply	other threads:[~2015-05-13  8:04 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-11  2:35 [PATCH] aoe: Use 64-bit timestamp in frame Tina Ruchandani
2015-05-11 15:38 ` Arnd Bergmann
2015-05-11 15:59   ` Ed Cashin
2015-05-12  1:00 ` Ed Cashin
2015-05-12  9:44   ` Arnd Bergmann
2015-05-12 11:14     ` [Y2038] " Arnd Bergmann
2015-05-13  1:23       ` Ed Cashin
2015-05-13  8:04         ` Arnd Bergmann [this message]
2015-05-14  0:47           ` Ed Cashin
2015-05-12 11:21     ` Ed Cashin
2015-05-13  1:26     ` Ed Cashin

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=8535976.TAdvFKB2bQ@wuerfel \
    --to=arnd@arndb.de \
    --cc=ed.cashin@acm.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ruchandani.tina@gmail.com \
    --cc=y2038@lists.linaro.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.