@ponponpoko (Takeshi Sakiyama)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【chrony】smoothtime パラメータについて

解決したいこと

chronyの設定ファイル(/etc/chrony.conf)には、「smoothtime max-freq max-wander [leaponly]」というパラメータを設定することができる。このパラメータは、主にNTPサーバーとして動作する設定ファイルに使用されます。設定することで、NTPサーバーを参照するクライアントがslewモードで動作できない場合でも、うるう秒に対応できるようになるとのこと。

しかし、公式の設定ドキュメントを参照しても、このパラメータの詳細な使い方を理解することができませんでした。(ネットで検索しても特に情報はない。)

どなたか、このパラメータの詳細な使い方がわかる方教えていただけますでしょうか。

引数「max-freq」が理解できません。
引数「max-wander」は、オフセットの修正速度の上限を設定する項目ということは分かりました。

【サンプル】
smoothtime 400 0.001024 leaponly

時間の進む速度を修正するパラメータ・・・?

何時間考えてもわかりませんでした・・・。

0 likes

2Answer

時刻を補正する平滑化プロセスに使用するパラメタですね。
自分も理解できていませんが、下記サイトに少し詳しい説明があります。
(うるう秒の補正方法の説明の中で、smoothtimeのパラメタに触れています)

ppmという単位はparts per millionの略のようです。

1Like

Comments

  1. @ponponpoko

    Questioner

    情報ありがとうございます!

私は内容を理解できませんが、 chrony の smooth.c に以下の図解がありました。

  Time smoothing determines an offset that needs to be applied to the cooked
  time to make it smooth for external observers.  Observed offset and frequency
  change slowly and there are no discontinuities.  This can be used on an NTP
  server to make it easier for the clients to track the time and keep their
  clocks close together even when large offset or frequency corrections are
  applied to the server's clock (e.g. after being offline for longer time).

  Accumulated offset and frequency are smoothed out in three stages.  In the
  first stage, the frequency is changed at a constant rate (wander) up to a
  maximum, in the second stage the frequency stays at the maximum for as long
  as needed and in the third stage the frequency is brought back to zero.

              |
    max_freq  +-------/--------\-------------
              |      /|        |\
        freq  |     / |        | \
              |    /  |        |  \
              |   /   |        |   \
           0  +--/----+--------+----\--------
              | /     |        |    |    time
              |/      |        |    |

        stage     1       2      3

  Integral of this function is the smoothed out offset.  It's a continuous
  piecewise polynomial with two quadratic parts and one linear.

smooth.c の中では、設定ファイルから読み込まれた max-freq1e-6 を掛けて(ppm=百万分率で表された値を実数に変換しているものでしょう) static 変数 max_freq に格納されます。そこからある程度アルゴリズムが追えると思います。


chrony はオフセットを修正するために、内部で保持する真の時間(できる限りの推測値)とは進み方が異なる時間をクライアントに提供する。修正を開始するときは、単位時間あたり最大 max-wander のペースで徐々に提供する時間の刻みの速さを変え、 max-freq で指定した比率(真の時間が1秒過ぎる間に提供する時間は 1 + max-freq/1,000,000 秒過ぎる(プラマイ逆かも))に達したらそこで速さを維持し、修正を終えるときは max-freq のペースで刻みの速さを元に戻す、ということかな。

1Like

Comments

  1. @ponponpoko

    Questioner

    情報ありがとうございます!

Your answer might help someone💌