SNTPを使用してDebianベースのシステムを同期しています。 SNTPには、クロックを設定する2つの方法があります。
-s, --settod Set (step) the time with settimeofday().
-j, --adjtime Set (slew) the time with adjtime().
Slewメソッドは、検出されたオフセットがゼロになるまでローカルシステムクロックを少しずつ調整します。旋回は主に、時間的に遅れた時計にひどく反応するプロセスを混乱させないために行われます。
ステップメソッドは、時計を瞬時に設定します。
時間の回転に関して、SNTPがこれを完了するのにどのくらいの時間がかかりますか?
システムをポーリングして、まだスルーが進行中であるというフィードバックを受け取る方法はありますか?
ステップメソッドは、時計を瞬時に設定します。 SNTPが回転を完了するのにどのくらいの時間がかかりますか?
私は[〜#〜] s [〜#〜] NTPソリューションの経験がないので、この点で本格的なNTP)と変わらないと仮定します。前者に関しては、2つのターンキー制限を使用します:128 msのステッピングと500 ppm(496から512 ppm)のロックとスルーイングです。つまり、128 msの最大許容オフセットは、最大スルーレート512 ppmで補正されます。 250秒(4.17分)の問題です。ただし、実際には、目標時間に近づくと旋回速度が徐々に低下し、計算された通常の補正速度まで低下するため、これにはおそらく少し時間がかかります。
システムをポーリングして、まだスルーが進行中であるというフィードバックを受け取る方法はありますか?
ストックntptime
ユーティリティを試してください。カーネルに直接クエリを実行し、ntpd
が実行されていない場合でも機能します。もちろん、adjtime()
が内部でntp_adjtime()
を呼び出すことを前提としています。
_man adjtime
.
.
.
If the adjustment in delta is positive, then the system clock is
speeded up by some small percentage (i.e., by adding a small amount of
time to the clock value in each second) until the adjustment has been
completed. If the adjustment in delta is negative, then the clock is
slowed down in a similar fashion.
_
したがって、カーネルは時間調整を毎秒管理し、調整のサイズはadjtime(3)
呼び出しに渡されるstruct
に渡される値のサイズに依存します。興味深い点は、LinuxがRFC1305(NTPバージョン3)に基づくadjtimex(3)
を使用していることです。セクション5では、このタイムスキューの管理方法について詳しく説明します。