[time-nuts] Is using TAI in Unix/Linux system clocks working in 2019?

jimlux jimlux at earthlink.net
Thu Aug 8 14:50:13 UTC 2019


On 8/8/19 2:51 AM, Tim Dunker wrote:
> Dear Ralph
> 
> I keep all our GNU/Linux machines on UTC (i.e., <<Etc/UTC>>). Our
> timezone is off by one or two hours, but the actual offset does not
> matter to me. What matters to me is to have all systems using the same
> timezone, and for our purposes, nobody cares about our local time.
> 
>>> Can the same thing be done in practice with TAI?
> 
> Yes, I guess so, but you have to go to much greater lengths to get it to
> work. Red Hat has a nice article [1] on their website on leap second
> handling in the kernel and clients like ntpd and chronyd. You have
> probably also read a thread on superuser.com [2], where ntpd and chronyd
> problems are discussed.
> 
>>> TAI would probably be the more logical way to store and do
> calculations with time, only including leap seconds when formatting time
> for human consumption. Or am I wrong in this?
> 
> Maybe I am just dumb, but I personally see no advantage of doing this
> extra work. Is TAI a logical choice while UTC is not? Hm. We know when a
> leap second is inserted (or removed, even though it has yet to happen),
> so for all human-readable stuff (log files, data analysis, ...), I am
> happy to have everything on UTC.
> 
> That being said, TAI is very nice if you acquire data continuously and
> leap second handling is not ideal on the instrument in question. But as
> long as you do not do that, it seems easier to me to go the other way
> around: keep everything on UTC, but convert to TAI when necessary.
> 

If you're setting up events that have to occur at some time in the 
future, relative to a time now, TAI is your friend, because you don't 
have to worry about crossing a leapsecond boundary.

If it's June 29th, and I want to schedule an event to occur on July 3rd, 
exactly 400,000 seconds from now, it's nice to not have to worry about 
whether anyone is counting leap seconds.

Likewise, if you are processing a stream of data, it's nice to be able 
to just subtract time1 from time2, and not have to worry if the 
timedelta needs an adjustment.

Historically, in the space business, spacecraft measured their own time 
in terms of clock ticks, and you'd uplink commands in terms of clock 
ticks, for that spacecraft. Some folks on the ground keep track of time 
correlation, and adjusting for tick rates, earth received time, etc. so 
that data collections, trajectory correction burns, etc. all happen at 
the right time.

Fine if your one spacecraft is Cassini and you have a team of dozens to 
manage it. Or even a Mars rover and a Mars Orbiter that need to 
communicate with each other - there's folks on the ground who can figure 
it out, and you can manually avoid doing transfers or activities across 
a leap second. We actually did this with ops on SCaN Testbed on ISS - we 
shut down before midnight UTC, waited until around 00:30 UTC, just to 
make sure the leap second had propagated around, including any 
"smearing", and started ops back up to finish the experiment.


Not so fine if you have 100 spacecraft, each with different clocks, 
communication schedules, etc.

Do the calculations and data storage/retrieval in a monotonically 
increasing, constant rate (or at least continuous rate for the first 
couple derivatives) time scale, and convert to whatever you want for 
human interpretation.  This is especially true if there's more than one 
system involved, because then you don't have to worry if the two systems 
agree on their interpretations.







More information about the Time-nuts_lists.febo.com mailing list