いまこそ「うるう秒」を過去のものにするときだ
(engineering.fb.com)- うるう秒(Leap Second)は、地球の自転速度によって生じる UT1(世界時)と UTC の差を補正するために導入された
- これにより UTC を天体観測などさまざまな目的に使えるようになるため、主に科学者や天文学者にとって有益だった
- UTC を修正しなければ、天文観測のために UTC と同期するレガシー機器やソフトウェアを補正する必要がある
- うるう秒が提案されてから現在までに、UTC は合計 27 回修正されている
- うるう秒は 1972 年当時、科学界と通信業界の双方を満足させる受け入れ可能な解決策だったが、現在では UTC にとってもデジタルアプリケーションにとっても、そして科学者にとっても望ましくない
→ 彼らはしばしば TAI(International Atomic Time、国際原子時)や UT1 を選択する - Meta は、今後のうるう秒導入を停止し、現在の 27 秒という水準を維持するための業界の取り組みを支援している
- 新たなうるう秒を導入することは、利益より不利益のほうが大きい危険な慣行であり、これに代わる新しい技術を導入すべき時だと考えている
Leap of Faith
- 地球の自転の不規則性に寄与する多くの要因の 1 つが、世界でもっとも高い山々の万年雪が溶けたり再び凍ったりし続けていることだ
- これは回転するフィギュアスケーターを思い浮かべると簡単にイメージできる
- これまでは正のうるう秒しかなかったため、23:59:59 と 00:00:00 の間に 23:59:60 という追加の 1 秒を入れるだけでよかったが、
地球の自転パターンが変化するにつれて、将来のある時点では負のうるう秒が発生する可能性が高い
そうなると 23:59:58 の次が 00:00:00 にならなければならない。 - この負のうるう秒がもたらす影響は大規模にテストされたことがなく、タイマーやスケジューラに依存するソフトウェアには致命的な影響を与える可能性がある
Smearing
- より最近では、単に時計を遅らせたり進めたりして、うるう秒を徐々に「適用する(Smear)」のが慣行になっている
- これを実施する普遍的な方法はないが、Meta では 00:00:00 から 17 時間かけてうるう秒を Smear する
- 数百台の NTP サーバーが一緒に Stratum 2 で実施するため、Smearing を大きくやりすぎると NTP クライアントが異常と判断して Quorum から外してしまい、これは Outage につながる可能性がある
- 00:00:00 に開始すること自体も標準化されておらず、複数の選択肢があり得る
→ たとえば、ある企業は 12:00:00 UTC に開始して 24 時間かけて実施するかもしれない - また、Smearing 自体にも別のアルゴリズムがある:カーネルのうるう秒補正、Linear Smearing、Quadratic(Meta が使用)
- これらすべてには、Meta 独自の Time Appliance をはじめとする重要な変換ロジックが必要になる
- この Smearing 期間中に NTP サーバーが再起動すると、"Old" と "New" の時刻がクライアントに送られ、Outage が発生する可能性がある
The negative impact of Leap Seconds
- うるう秒とそのオフセットは、業界全体で問題を引き起こす
- Outage が発生するもっとも簡単な原因は、時間は常に前に進むものだと想定してコードを書くことだ
start := time.Now()
// do something
spent := time.Now().Sub(start)
- 上の
spentは、その使い方によってはうるう秒の期間中に負の値になる可能性がある - Reddit は 2012 年にうるう秒が原因で大規模な障害を起こし、サイトは 30〜40 分間アクセス不能になった
- Cloudflare は 2017 年に、自社のパブリック DNS への影響について 詳細な記事 を公開した
Moving beyond the leap second
- うるう秒イベントは業界全体で問題を引き起こし、今もなお多くのリスクを内包している
- 現場では、うるう秒が導入されるたびに問題に直面する
- しかも非常にまれな出来事であるため、発生するたびにコミュニティは大きな打撃を受ける
- あらゆる産業分野で時計の精度に対する需要が高まるなか、うるう秒は今や利益より不利益のほうが大きく、Outage を引き起こす
- Meta のエンジニアとして、私たちは今後のうるう秒導入を停止し、次の千年にわたって十分だと考えられる現在の 27 秒という水準を維持するために強く支持している
5件のコメント
わあ、とても面白いテーマですね! でも、うーん… うるう秒を入れるのが大仕事だというのは分かるのですが、27秒を維持するためにどんな大きな努力をしているのかは理解できませんでした。
おそらくこういうものを指しているのだと思います
https://ja.news.hada.io/topic?id=1752
記事のタイトルがどこかおかしいです
TwitterボットやSlackボットが送ったメッセージのタイトルは正常なのに、サイトで見るとおかしいですね
あっ、何かおかしかったようです。修正しました。