On Thu, Jul 13, 2017 at 13:44 +1000, David Gwynne wrote: > > > On 13 Jul 2017, at 11:16 am, Scott Cheloha <scottchel...@gmail.com> wrote: > > > > Hi, > > > > The "real" elapsed time for time(1) and the ksh/csh time builtins is > > currently computed with gettimeofday(2), so it's subject to changes > > by adjtime(2) and, if you're really unlucky, clock_settime(2) or > > settimeofday(2). In pathological cases you can get negative values > > in the output. > > > > This seems wrong to me. I personally use these tools like a stopwatch, > > and I was surprised to see that the elapsed difference wasn't (more) > > immune to changes to the system clock. > > > > The attached patches change the "real" listing for time(1), ksh's time > > builtin, and csh's time builtin to use a monotonic clock, which I think > > more closely matches what the typical user and programmer expects. This > > interpretation is, near as I can tell, also compatible with the POSIX.1 > > 2008 description of the time(1) utility. In particular, the use of > > "elapsed," implying a scalar value, makes me think that this is the > > intended behavior. [1] > > > > NetBSD did this in 2011 without much fanfare, though for some reason they > > did it for time(1) and csh's builtin but not for ksh's builtin. [2] > > > > I've tested pathological cases in each of the three and these patches > > correct the result in said cases without (perceptibly) changing the > > result in the typical case. > > > > Thoughts? Feedback? > > this makes sense to me, id like to see it go in. >
Same here. I'm surprised to learn time(1) is not using CLOCK_MONOTONIC.