Debian@玄箱/HGのntpdが頻繁(1時間に3?4回)にsynchronisation lostして使い物にならない。色々調査するとどうやら玄箱のRTCの精度が悪く、ずれまくってntpdが停止する模様。PCのRTCなんかも結構適当だが、玄箱のそれはもっと極端らしい。
情報源 → 1 2 3
LAN内PCやRD-XS53の時刻合わせは自宅サーバのntpdを使っているので、とりあえずなんとかすることにする。
方法としてはadjtimexを使ってTICK値を変動幅が最小になるように調整、その後ntpdを起動する。adjtimerx本体はapt-getにてインストールした。
ひとまずntpdを停止させ、ntpdateとadjtimexを使って変動幅をチェックする。参照先ntpサーバはntp1.jpix.ad.jp を使用する。基本は、
# adjtimex --tick xxxxx
# ntpdate ntp1.jpix.ad.jp
を繰り返し、ntpdateのoffset値が0近傍かつ変動幅が少なくなるまでtick値を追い込む。tick値は10000から始め、数値の増減をみながら増減させて繰り返し試行。
結果、自宅環境ではtick値=10036 9980 となった。
初期設定ファイル /etc/adjtimex.conf を、
FREQ=0
TICK=9980
と変更。また再起動した場合を考えて /etc/rc2.d に /etc/init.d/adjtimex のシンボリックリンクを作成。
# cd /etc/rc2.d
# ln -s ../init.d/adjtimex S20adjtimex
最後にntpdを起動させておしまい。
ntpd再起動して3時間後の状態。
$ ntpq -p
remote refid st t when poll reach delay offset jitter
*ntp1.jpix.ad.jp ntp0.jpix.ad.jp 2 u 21 128 377 19.129 242.784 64.835
+news.jpix.ad.jp ntp0.jpix.ad.jp 2 u 25 128 377 19.551 155.491 51.159
jitterが51?64。まだ大きいが、synchronisation lostの間隔が10?15分から1時間半程度にのびた。もうしばらく様子をみる予定。
—
追記。
結局小手先の修正ではどうにもならないようなので、こちらの記事を参考に改良することとした。基本的にはadjtimexの力技修正方法そのまま。ntpdateを1時間おきに実行し、内蔵タイマのずれから正しいDecrementerカウンタの修正値を出そうというもの。ただし修正スクリプト中のadjtimexのオプション指定に問題がある為、それぞれ –tick 及び –frequency と修正した。
修正したスクリプトのファイル名を adjust-clock とし、/etc/rc.boot に放り込んで shutdown -r now として再起動。半日放置した後のntpq。
$ ntpq -p
remote refid st t when poll reach delay offset jitter
+ntp2.jst.mfeed. fs-monntp2.mfee 2 u 653 1024 365 20.720 -1.229 0.261
*ntp3.jst.mfeed. fs-monntp2.mfee 2 u 594 1024 377 20.744 -1.320 0.270
+ntp1.jst.mfeed. fs-monntp2.mfee 2 u 604 1024 377 20.347 -1.219 0.358
す、素晴らしい…自宅で使うには申し分ない環境に。