ARMサーバーとしてマイクロコントローラーNTPを使用するローカルネットワークを使用しており、ubuntu 16.04 LTSをNTPクライアントとして実行するデスクトップコンピューターを使用しています。
次のntp設定ファイルで_ntpd -g -c /etc/ntp.conf
_を開始したら
_server 192.168.0.11 minpoll 4 maxpoll 4
_
Ntpdが時間を設定した後の最初のオフセットは、非常に良い結果、つまり1ms未満の値を示しています。 _ntpq -p
_でオフセット値を取得します。
ただし、オフセットは約55ms後にゆっくりと最大55msまで上昇します。 1000秒。この高いオフセットは私のアプリケーションには受け入れられません。しかし、オフセットが55ミリ秒に達した後、ntpd
は時間を再び設定するようになり、オフセットは十分に小さく安定します(<1ミリ秒)。 ntpd
がしばらくクロックをドリフトさせ、(あまりに)長い時間が経過した後、デーモンがNTPクライアントとNTPサーバーの間のクロックドリフトに対処するようです。
_ntpd -g -c /etc/ntp.conf -f /etc/ntp.drift
_を使用して_ntp.drift
_がntpd
によって生成された場合、オフセットは常に1ms未満に留まります。望ましい動作。
さて、私の問題:私のアプリケーションでは、しばらくしてntpd
を実行させて、長時間経過後のクロックドリフトを計算することはできません。NTPクライアントを起動してから数秒後に同期を行う必要があります。オフセットは安定している必要があります。
クロックのドリフトを正確に知らなくても、ntpd
で安定した小さなオフセットを取得するにはどうすればよいですか?
ntpd
でいくつかの異なるオプションを試しても、遅延が大きすぎるため、 chrony に切り替えました。私のNTPサーバーは変更されませんでした。chronyを使用すると、常に1ミリ秒未満のレイテンシが得られました。ポーリング時間を増やしたのは chronyが推奨 以下の構成ファイルがあるためです。
### chrony.conf
# Add server
server 192.168.0.11 iburst minpoll -6 maxpoll -6 filter 15 xleave
hwtimestamp eth0 minpoll -6
# Logging
logdir /var/log/chrony
log measurements statistics tracking
makestep 0.1 3
driftfile /etc/chrony.drift
そして、デーモンを./chronyd -f /etc/chrony.conf
driftfile
はローカルクロックの周波数を記録するため、正確に制御する必要があります。 Ubuntu /etc/ntp.conf
には、デフォルトでdriftfile
があります。
サーバー行にiburst
を追加すると、最初の同期時にいくつかのパケットが急速に送信されます。特に、最初の数パケットを数分間待たない場合に推奨されます。
NTPが同期されるまで、initスクリプトはアプリケーションの起動を遅らせる可能性があります。これは、ntp-wait
systemdユニットへの依存関係を使用して行います。または、ntpwait
スクリプトを直接使用します。
オフセットが増加してからそれ自体を修正するというレポートは、ntpdがそのステップしきい値を超えてから、時間を設定するのではなく、時間を設定するように聞こえます。
NTPサーバーのクロック時間と実際のUTC時間の間の関係の欠如が問題の原因である可能性があります。NTPサーバーが複数の実世界のソース(インターネットにあるか、ローカルネットワーク上のGPS、PPS、または原子ソースに関係なく)がある場合、それ自体のクロックの周波数誤差を決定できず、勝つその時計を効果的に統制することができない。
この理論が正しいかどうかは、次のようにサーバーとクライアントの両方で統計ログをオンにすることで解決できます。
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
次に、統計ファイルと設定をPastebinまたは同様のサイトに投稿してください。そうすれば、あなたが見ている行動に照らして分析できます。