このためにFacebookは、サーバーに常駐して時間合わせを担う標準的なプログラム、nptdを新しいものに置き換えてテストしている。
結果、時刻同期を担う常駐プログラムをchronyに移行することにより、ズレを数十ミリ秒単位から数百マイクロ秒単位に改善できたという。
・NTPサービスを4層で構成
Facebookのブログ投稿では、時刻合わせにどれくらいの精度が必要かを説明するうえで、「うるう秒」の例を説明してくれている。地球の自転が不規則なのを補足するために秒単位の追加や削除が必要。ソフトウェアの動作では1秒消えるだけで処理に影響が出るため、うるう秒の増分または減分は、長時間にわたって細かく分散される。FacebookのNTPサービスは4層で構成されているという。まず、GPSなどで用いられる、グローバルナビゲーション衛星システム(GNSS)、次にこれと同期するFacebookの原子時計、そしてこれと同期するのがNTPサーバー群だ。この時点でうるう秒が修正されるらしい。最後に、データを扱う大規模サーバー群。これらはうるう秒を気にしなくてもよい。
・chronyへの置き換えで時刻同期の精度が向上
FacebookパブリックNTPサービス(time.facebook.com)の技術的基盤でもあるchronyという常駐プログラムを利用したところ、時間同期は、従来のものよりメモリ消費量がわずかに少なくて済み、精度に関しては100倍だったという。NPTではネットワークでの遅延を計算するために送信パケットにタイムスタンプが押されるが、これをOSでなくネットワークカードがパケット送信直前に行う(ハードウェアタイムスタンプ)ことで、精度がさらに2桁向上するとのこと。
GoogleやAppleなどはすでに独自のNTPサービス機能を持っており、同様に需要がありそうなFacebookが精度の高いNTPサービス機能を持つのも必然といえるだろう。
参照元:Building a more accurate time service at Facebook scale