大幅に時間がズレてるときの ntpd の動き

VMware Player の上で CentOS 6 を使っています。これはずっと起動しているわけではなく、必要時に時々起動するという使い方で、普段はサスペンドさせています。サスペンドとなると復帰時に時計がズレてることがおおいわけです。こういうときに ntp サービスが非常に便利なわけです。時計のズレをうまいこと合わせてくれます。

今回使っているのは、CentOS 6 付属の ntp-4.2.4 のパッケージです。yum install ntp で導入です。/etc/ntp.confインターネットマルチフィード時刻情報サービス for Public のアドレスを列挙しておきます。

さてサスペンドから復帰した直後は大幅に時間がズレている状態です。例えばこんな感じ。40分ほど遅れてますね。(offset のところ。単位は msec)

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp1.jst.mfeed. 210.173.176.251  2 u   25   64    1    9.030  2404434   0.000
 ntp2.jst.mfeed. 210.173.160.86   2 u   24   64    1    9.016  2404434   0.000
 ntp3.jst.mfeed. 210.173.176.251  2 u   23   64    1    6.811  2404433   0.000

しばらく(2~3分かな)待っていると、これだけの大幅なズレがあるとSTEP モードに変わります。

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp1.jst.mfeed. .STEP.          16 u  102   64    0    0.000    0.000   0.000
 ntp2.jst.mfeed. .STEP.          16 u  267   64    0    0.000    0.000   0.000
 ntp3.jst.mfeed. .STEP.          16 u  299   64    0    0.000    0.000   0.000

/var/log/messages を見てると 一気に時間をリセットしたよという表記が。

Feb 26 22:45:11 centos6 ntpd[13849]: synchronized to 210.173.160.57, stratum 2
Feb 26 22:45:11 centos6 ntpd[13849]: time reset +2404.444053 s

通常動作に戻っています。

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp1.jst.mfeed. 210.173.160.86   2 u   54   64   37   10.174   16.646  11.606
+ntp2.jst.mfeed. 210.173.160.86   2 u   41   64   37    7.742   15.760   8.738
+ntp3.jst.mfeed. 210.173.160.56   2 u   49   64   37   11.076   15.496   8.732

というわけで、本来の時間よりも大幅に時間がズレている場合(128msec以上)、一気に時間合わせを行います。128msec 以内のズレであればじわじわと合わせていきます。なるほどよく考えられていますね。