doc/en_US.ISO8859-1/articles/leap-seconds/article.xml
2015-06-29 16:41:41 +00:00

119 lines
4.8 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="leapseconds">
<info>
<title>&os; Support for Leap Seconds</title>
<pubdate>$FreeBSD$</pubdate>
</info>
<sect1 xml:id="leapseconds-definition">
<title>Introduction</title>
<para>A <emphasis>leap second</emphasis> is an ad-hoc one-second
correction to synchronize atomic timescales with Earth rotation.
This article describes how &os; interacts with leap
seconds.</para>
<para>As of this writing, the next leap second will occur at
2015-Jun-30 23:59:60 UTC. This leap second will occur during a
business day for North and South America and the Asia/Pacific
region.</para>
<para>Leap seconds are announced by <link
xlink:href="http://datacenter.iers.org/"><acronym>IERS</acronym></link>
on <link
xlink:href="http://datacenter.iers.org/web/guest/bulletins/-/somos/5Rgv/product/16">Bulletin
C</link>.</para>
<para>Standard leap second behavior is described in <link
xlink:href="https://tools.ietf.org/html/rfc7164#section-3">RFC
7164</link>. Also see &man.time2posix.3;.</para>
</sect1>
<sect1 xml:id="leapseconds-posix">
<title>Default Leap Second Handling on &os;</title>
<para>The easiest way to handle leap seconds is with the
<acronym>POSIX</acronym> time rules &os; uses by default,
combined with <link
xlink:href="&url.books.handbook;/network-ntp.html"><acronym>NTP</acronym></link>.
When &man.ntpd.8; is running and the time is synchronized with
upstream <acronym>NTP</acronym> servers that handle leap seconds
correctly, the leap second will cause the system time to
automatically repeat the last second of the day. No other
adjustments are necessary.</para>
<para>If the upstream <acronym>NTP</acronym> servers do not handle
leap seconds correctly, &man.ntpd.8; will step the time by one
second after the errant upstream server has noticed and stepped
itself.</para>
<para>If <acronym>NTP</acronym> is not being used, manual
adjustment of the system clock will be required after the leap
second has passed.</para>
</sect1>
<sect1 xml:id="leapseconds-cautions">
<title>Cautions</title>
<para>Leap seconds are inserted at the same instant all over the
world: <acronym>UTC</acronym> midnight. In Japan that is
mid-morning, in the Pacific mid-day, in the Americas late
afternoon, and in Europe at night.</para>
<para>We believe and expect that &os;, if provided correct and
stable <acronym>NTP</acronym> service, will work as designed
during this leap second, as it did during the previous
ones.</para>
<para>However, we caution that practically no applications have
ever asked the kernel about leap seconds. Our experience is
that, as designed, leap seconds are essentially a replay of the
second before the leap second, and this is a surprise to most
application programmers.</para>
<para>Other operating systems and other computers may or may not
handle the leap-second the same way as &os;, and systems without
correct and stable <acronym>NTP</acronym> service will not know
anything about leap seconds at all.</para>
<para>It is not unheard of for computers to crash because of
leap seconds, and experience has shown that a large fraction
of all public <acronym>NTP</acronym> servers might handle and
announce the leap second incorrectly.</para>
<para>Please try to make sure nothing horrible happens because of
the leap second.</para>
</sect1>
<sect1 xml:id="leapseconds-testing">
<title>Testing</title>
<para>It is possible to test whether a leap second will be used.
Due to the nature of <acronym>NTP</acronym>, the test might work
up to 24 hours before the leap second. Some major reference
clock sources only announce leap seconds one hour ahead of the
event. Query the <acronym>NTP</acronym> daemon:</para>
<screen>&prompt.user; <userinput>ntpq -c 'rv 0 leap'</userinput></screen>
<para>Output that includes <literal>leap_add_sec</literal>
indicates proper support of the leap second. Before the 24
hours leading up to the leap second, or after the leap second
has passed, <literal>leap_none</literal> will be shown.</para>
</sect1>
<sect1 xml:id="leapseconds-conclusion">
<title>Conclusion</title>
<para>In practice, leap seconds are usually not a problem on &os;.
We hope that this overview helps clarify what to expect and how
to make the leap second event proceed more smoothly.</para>
</sect1>
</article>