ユーザ用ツール

サイト用ツール


raspberrypi:log20141230_ntp_stratum_1_verification

文書の過去の版を表示しています。


Raspberry Pi で NTP Stratum-1 Server を作る(検証編)

http://tosihisa.postach.io/raspberry-pi-de-ntp-stratum-1-server-wozuo-ru で,Raspberry Pi を使って NTP Stratum 1 構築記録を記載しています.

この NTP Stratum 1 サーバは,その後,pool.ntp.org に参加し,2014年12月末で約6ヶ月経過しました.

ここで一度,この Raspberry Pi NTP Stratum 1 サーバが,どの程度実用的なのかを考えるために,以下の観点で検証してみます.

  1. どれくらいの精度を持っているか.
  2. pool.ntp.org に参加してどれくらいのCPU負荷,トラフィック負荷になっているか.

どれくらいの精度を持っているか.

精度を調べるために,リファレンスサーバ(GPS)との時間差を調べてみます.

http://www.ntp.org/ntpfaq/NTP-s-trouble.htm#Q-TRB-MON-STATFIL によれば,ntpd の loopstats ログの第3番目がそのオフセットのようです.

ntpd の loopstats ログの例を以下に示します.

loopstats
57020 7.407 -0.000000121 -24.621 0.000004441 0.003173 4
57020 23.407 -0.000000214 -24.621 0.000000742 0.002968 4
57020 39.407 -0.000000042 -24.621 0.000004961 0.002776 4
...

この検証では,loopstats は 2014-06-01 から 2014-12-29 までを検証します. (2014-12-30 のデータも少しだけ入っています)

リファレンスサーバとのオフセットを視覚的に確認するために,loopstats の offset でヒストグラムを作成します.

マイクロ秒単位での精度検証

まずは,マイクロ秒単位の精度でヒストグラムを作成してみました.結果を以下に示します.

殆ど 1マイクロ秒未満で同期できているようです.ヒストグラムではなく±1マイクロ秒未満に入っている割合を計算すると,2014-06-01 から 2014-12-29 までの間,88.81% は 1マイクロ秒未満で同期できていた ようです.

Network_Time_Protocol によると,Stratum 1 は誤差±1マイクロ秒未満との事で,この結果を見る限り,100% とは行きませんが,88%以上は NTP Statum-1 の要件を満たしていると考えます.Raspberry Pi は, NTP Stratum 1 専用設計では当然ありませんが,それでも 88% 以上は NTP Stratum-1 の要件を満たしていると言えるのはすごいと考えています.

10ナノ秒単位での精度検証

次に,±1マイクロ秒未満で同期している部分の中から,10ナノ秒単位でどれくらいの精度を持っているかを調べます.マイクロ秒単位と同様に,10ナノ秒単位でヒストグラムを作成してみました.

10ナノ秒単位にしたのは,いきなり1ナノ秒単位にすると,ヒストグラムが広がりすぎてしまうと考えたので,まずは10ナノ秒単位でヒストグラムを作成してみました.

マイクロ秒単位の時は突出した山型分布の傾向がありましたが,10ナノ秒単位では,二山型の分布にも見えます.

このヒストグラムは10ナノ秒単位なのですが,一番多いところは,±10ナノ秒未満のところです.

ナノ秒単位での精度検証

±10ナノ秒未満で同期している部分をナノ秒単位にしたヒストグラムを以下に示します.

0ナノ秒で同期している時もあるようですが,個人的には俄には信じがたいです.もう少し検証が必要かもしれません.

どれくらいの精度を持っているか:結論

Raspberry Pi での NTP Stratum-1 Server は,100% とは行かないが,88% 以上 NTP STratum 1 の要件を果たす.

pool.ntp.org に参加してどれくらいのCPU負荷,トラフィック負荷になっているか.

この NTP Strasum 1 サーバは,ntp.netfort.gr.jp と言うホスト名で pool.ntp.org に参加しています.

http://www.pool.ntp.org/ja/scores/60.56.214.78 にアクセスすることで,現在のスコアが分かります.

2014-12-30 現在のスコアは 20.0 満点のようです.

また,この ntp.netfort.gr.jp は,Zabbix で運用監視しています.

ここでは,Zabbix のグラフから,pool.ntp.org に参加した場合のCPU負荷,トラフィック負荷を調べてみます.

なお,この NTP Stratum 1 サーバの Zabbix 監視は 2014-12-01 から開始したので,おおよそ1ヶ月間の記録になります.

CPU 負荷

グラフは二つ示します.一つはロードアベレージ,もう一つは CPU 利用率です.

負荷としては,ロードアベレージとしては低いとは言い難いですが,高いわけでもなく,十分に動けているようです.

トラフィック負荷

以下にグラフを示します.Zabbix のトラフィックは,eth0 全体のトラフィックであるため,純粋に NTP のトラフィックは測ることは出来ていませんが,一応でも参考に出来ると考えています.

http://www.pool.ntp.org/ja/join.html によると,

分かりやすく言えば、少なくとも384~512kbpsの(双方向の)帯域幅が必要と言うことです。

上記の帯域幅が必要だとの事で,Outgoing の平均が 273.85Kbps なので,記載の帯域幅よりは平均としては低いです.

しかし,最大で 7Mbps ほどの帯域が使われているようです.これは Zabbix Agent プログラムを NTP Stratum 1 に送り,何度か設定した時?と考えていますが定かではありません.

CPU負荷,トラフィック負荷:結論

これまでの結果を見る限りでは,CPU負荷,トラフィック負荷ともに,Raspberry Pi で十分に対応できる処理量だと考えています.

raspberrypi/log20141230_ntp_stratum_1_verification.1419953192.txt.gz · 最終更新: 2014-12-31 00:26 by tosihisa@netfort.gr.jp