Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re^3: Time::HiRes gettimeofday producing timestamps out of order

by BrowserUk (Pope)
on May 06, 2016 at 14:07 UTC ( #1162357=note: print w/replies, xml ) Need Help??

in reply to Re^2: Time::HiRes gettimeofday producing timestamps out of order
in thread Time::HiRes gettimeofday producing timestamps out of order

See above; I added to my post.

Perhaps something similar can happen on *nix? Eg. Perhaps the systems clock runs fast, and if NTP updates the time, making the clock step back between timestamps, you get the result you are seeing.

If that is the cause, you'd expect it to happen at most once per NTP update frequency. (Which should be checkable.)

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
In the absence of evidence, opinion is indistinguishable from prejudice.
  • Comment on Re^3: Time::HiRes gettimeofday producing timestamps out of order

Replies are listed 'Best First'.
Re^4: Time::HiRes gettimeofday producing timestamps out of order
by 1nickt (Abbot) on May 06, 2016 at 14:11 UTC

    Thanks again. Will look into it. I *thought* ntpd was careful to avoid large changes in updating the clock, but maybe not careful enough.

    Update: Ubuntu docs:

    The ntp daemon ntpd calculates the drift of your system clock and cont +inuously adjusts it, so there are no large corrections that could lea +d to inconsistent logs for instance.
    Hm. Define "large" ...

    The way forward always starts with a minimal test.
      so there are no large correction­s

      Less than 1 second is likely not considered "large" in a lot of contexts.

      But that paragraph is more about an ideal than some absolute guarantee. If ntpd is well configured and the hardware clock is relatively reliable / consistent and the network connection is pretty reliable and the reference servers are relatively reliable, then that paragraph will likely apply.

      If time drift is a serious problem for your systems, then you should switch to recording a timestamp for the first event and then recording durations for the gaps between events and measure those durations using the monotonic high-resolution clock. Or, you can get the timestamp for the first event and use the monotonic clock to measure the gap duration and then compute a timestamp for the event by adding the duration to the original timestamp. Of course, that may be impossible if all events don't get delivered to the same system.

      On our huge selection of Unix servers, time slips of a few seconds are fairly frequent and time slips of many seconds are not unheard of. We have actually resorted to replacing hardware because we found some hardware clocks were much worse than others.

      - tye        

      Timekeeping is messy; PC hardware sucks with errors >100 ppm not uncommon. You can configure ntpd to not discipline the kernel clock. Use adjtimex to manually check and compensate for drift, ntpdate to set the time. Or just enjoy the bumpy ride, network hiccups etc....

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1162357]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2021-01-26 22:49 GMT
Find Nodes?
    Voting Booth?