日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

JavaScriptを有効にし、Cookieを受け入れ、以下のブラウザを使うことで完全なコンテンツが楽しめます。
Mozilla Firefox 3.0(Get Firefox)・Opera 9.6・Safari 3.2・Lunascape 4/5(Gecko)・Lunascape 5(WebKit)
Internet Explorer 7/8とそれを使うIEコンポーネントブラウザ(Lunascape・Sleipnirなど)

うるう秒で1秒ズレてる!

みなさま明けましておめでとうございます。

正月の朝起きて、雑煮を作って、あらかじめ作っておいた料理を出して、とやるのはいいけど、餅を買いすぎたことに気づく。

雑煮にぜんざいと食べた程度ではまだまだたくさん残ってる。3日を過ぎてもしばらく正月は続きそうだ。


今日の9時を迎える前にうるう秒が挿入されたということで、この地域では少し話題になった。

というのも日本標準時を作っている情報通信研究機構(NICT)が小金井市にあるから。

以前、武蔵小金井駅で降りたときに標準時を作っていることをアピールする時計が置かれていたから、そうかと気づいたんだけど。

NICT本部や小金井駅でうるう秒の挿入を見守る人たちがいたそうである。

なお、NICTの最寄り駅は小金井駅のお隣、国分寺駅である。

小金井市・小平市・国分寺市の市境が交錯しているところにあるのでこうなる。


うるう秒のことはこのBlogでも8年前の正月に取り上げているな。

お正月だというので時計を見てみた

地球の自転が厳密に24時間ではないので、それを調整するために1秒挿入するのがうるう秒だと。

ゆえに今日は1秒だけ長い1日ということになる。


あまりうるう秒挿入の実感がないかもしれないが、PCの時計を調べてみると気づくかも。

JST Clock

厳密な時間合わせができるわけではないが、1秒ぐらいの精度は十分出そう。

確かに昨日見たときには0.1秒進んでいるとの表示だったが、今見ると1.2秒進んでいるとなる。

1秒進んでいるというのは、標準時は8時59分60秒を数えているけど、PCの時計はこれを数える9時00分00秒になったという意味。

電波時計の腕時計の秒針を見てみると、これもちょうど1秒ズレている。

一方で、電波時計の置き時計、これは普段は窓から離れたところに置いてるから、標準電波を拾うことはないのだけど

今、窓際において手動で合わせに行ったら、PCの時計や腕時計より1秒遅い時間にセットされた。

こちらはうるう秒反映後の標準時を拾ったから、こちらは正確にセットされたわけである。


普通の時計はうるう秒に対応していないので、このようなズレが発生する。

とはいえ、普通の時計はそんなに精度が出ないから、定期的に時刻合わせをするので、そこで吸収すれば実用上の問題はないと考えられる。

腕時計は今晩、電波を拾えれば時刻合わせができるし、PCも1週間以内にNICTのNTPサーバーに時刻合わせに行くから大丈夫と。

でも世の中にはうるう秒に対応したシステムってのもある。

例えばLinuxのntpd、NTPサーバーからうるう秒情報を取得して、それに応じて時刻を調整している。

logを見てみるとこんなのが残ってた。

Jan  1 08:59:59 gmo kernel: Clock: inserting leap second 23:59:60 UTC
Jan  1 09:00:00 gmo ntpd[1482]: 0.0.0.0 061b 0b leap_event
Jan  1 09:06:54 gmo ntpd[1482]: kernel reports leap second has occurred

8時59分59秒にleap second挿入ということで、59秒を2回数え、9時00分00秒を迎えていると。

あら、あまり考えてなかったけど、この方式だったのか。

一応、うるう秒には対応しているが、8時59分60秒の存在は認められないので、59秒を2回数えるという方法で対応している。


よく使われるのは1秒の長さを伸ばして少しずつ吸収する方式だと聞いてたのだが、

標準設定ではドカンと1秒戻して対応するという方式になってたんだな。

時計合わせにおいて、ドカンと指定した時間に合わせる方式をstepモード、少しずつ調整する方式はslewモードと言うそう。

slewモードであれば時間が飛んだり重複したりしないので、他への影響は小さく抑えられるが、少しずつ合わせるから時間がかかる。

というわけで、調整する時間の長短で使い分けているのだが、この閾値は標準では128msなので、うるう秒ではこれを超えてしまうわけである。

だからstepモードで調整されちゃったわけだけど、うるう秒ぐらいはslewモードで対処してよというのが一般的な考え方。

というわけでこれはntpdの起動オプションまたはntpd.confで設定すればよい。

ntpd.confで設定する場合だと、例えばこう。

tinker step 1200

これで1200msまでの時刻合わせはslewモードで、それ以上はstepモードでって意味になる。

0にしておくと必ずslewモードで合わせるという意味になる。

なお、slewモードは1秒あたり0.5ms延長・短縮することで調整する方式で、1秒のズレを吸収するには33分かかる。

このケースにおいては9時00分00秒に1秒進んだと認識して、そこから33分間かけて1秒のズレを吸収すると。こっちの方がいいよね。


まさかうるう秒にこんなことが起きてたとは気づかず。とはいえ、特に問題はなかったけど。

1月のうるう秒は正月休み中だからトラブルが起きないように回避できるかどうかが全てを決めることになる。

まぁ1回設定してしまえばなんとでもなるんですけどね。

うるう秒がゆえに平穏な元日が訪れなかった技術者も世の中にはいるのだろう。残念な事だ。


Author : hidemaro
Date : 2017/01/01(Sun) 18:28
Linux・Net・Web | Comment | trackback (0)

Tools