BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Facebook、より精度が高くスケーラブルなNTPサービスのためntpdからchronyへ切り替える

Facebook、より精度が高くスケーラブルなNTPサービスのためntpdからchronyへ切り替える

原文(投稿日:2020/03/22)へのリンク

Facebookのエンジニアリングチームが、ntpdをchronyと多層アーキテクチャで置き換えることで、どのように精度が高くスケーラブルなNTP (Network Time Protocol) サービスを構築しているのかブログに書いた。

Facebookがntpdからchronyに切り替えたのは、ntpdよりも「精度が高くスケーラブル」だとわかったためだ。彼らのテストで「10ミリ秒から100ミリ秒」改善されたという。分散データベースおよびロギングシステムをサポートするため、彼らのテストはマイクロ秒からナノ秒の範囲で同期の精度を向上させることを目的としていた。彼らはテスト結果の検証プロセスについても公開した。多くのクラウドおよびコンテンツ配信ネットワークプロバイダーは、誰でも使えるパブリックNTPサーバーを提供している。

Network Time Protocolは1985年以前からあり、コンピュータ間で時計を同期させるためのスタンダードだ。NTPの実装は、通常6月30日か12月31日に余分な秒数を導入することで、地球の自転の不規則性を考慮するうるう秒を扱う必要がある。その方法の一つが "Smearing" であり、この増加分を一定期間にわたって分散させる。SmearingはGoogleAWS、FacebookのNTPサーバーで使用されているが、Cloudflareのサーバーはこれを実装していない。時計を同期させるサーバーでは、ntpd(NTPのリファレンス実装)が広く使われている。chronyは、NTPおよびExtended NTPの別の実装だ。Extended NTPは「NTPサーバーがクライアントやピアにより正確な送信タイムスタンプを提供することを可能にする」ものだ。

Facebookの多層タイムサーバーアーキテクチャは、最上位層を精密な原子時計を持つ衛星で構成する。Facebook自身の原子時計はこれらの一つと同期し、第2層を形成する。これらと同期するNTPサーバーのプールがその次の層を形成する。Smearingはここに実装されている。最後の層は多数のサーバーから構成されており、より多くのトラフィックに対応し、Smearingされた時間だけを扱うことができる。

Facebookのテスト測定は、2つのコンピュータの時計が同期するときの推定誤差の測定を含んでいた。chronyの推定誤差(マイクロ秒単位)は、ntpdに比べて(ミリ秒単位)小さいことが示されたという。こうした測定では、ネットワークトポロジーやハードウェア特性にある仮定を前提としている。彼らは専用のハードウェアテスト機器でもテストしたという。ハードウェアのタイムスタンプ(一部のネットワークカードに搭載されている)を使用することで、CPUスケジューリングやホストアドレス解決によって起こり得る遅延を回避することができる。Facebookは専用の内部ネットワークでテストを実行してから、パブリックネットワークで他のパブリックタイムサーバーに対してもテストを実行したという。

FacebookのパブリックNTPサーバーは、彼らのグローバルインフラの5つの異なる場所に設置されている。

この記事に星をつける

おすすめ度
スタイル

BT