今度が本命のグラフ作りです。自作中のGPS時計に追加予定で、ntpdのオフセット値をグラフにします。
loopstats を元にグラフを描画するのですが、GPSユニットから1PPSが出力されないと、このログファイルは更新されないようです。なので、衛星をロストして外のNTPサーバーに同期している時は、グラフを描画出来ません。取り敢えず、こんな時は画面中央に「GPS LOST」と表示する事にしました。でもまぁ〜、同じディレクトリにある peerstats ならNTPサーバー同期中のオフセット値もあるんですけど。
↓ 実際どんな物かと、タイムラプス動画にして見れるようにしました。この動画は150倍速です。実際のグラフ更新間隔は16秒なので、本当はアニメーションのように表示されません。
↓ グラフエリアは118×49ドット(黄色エリア)で、この中に点描画します。三角や四角に上下のラインは含みません。
ntpdのログファイル loopstats を最終行から118行を元にオフセット値を点描画します。グラフの更新間隔は16秒。ログファイルも私の環境では16秒間隔で記録されています。118行×16秒=1888秒なので、このグラフの横軸幅は31分28秒くらいです。最新の変化を確認するだけなら十分でしょう。
↑ 【5.0】は縦軸の倍率のようなもので、横軸に影響はありません。これはプロットが枠内に収まるように調整する時の数値で、5.0から0.1の範囲で変化します。
5.0 → 1ドット = 0.2μ秒
1.0 → 1ドット = 1μ秒
0.1 → 1ドット = 10μ秒
5.0を上限に設定、下限は0.1に設定。5.0の時が一番拡大された表示。0.1の場合は一番縮小されて表示されます。0.1でも収まらない場合は、断念して Out of rengeと画面中央に表示する仕掛けです。
↑ 【PPS】はGPSの1PPSに同期している印です。勝手に表示させているのでは無く、ntpq -crvのコマンドで得たものにsync_ppsの文字列がある場合に表示させています。
↑ 【0.772us】はオフセット値です。グラフ表示の為に /var/log/ntpstats/loopstats を読み込みます。その時、最終行(最新)のオフセット値を表示させています。同時に【三角マーク】はこの値を示します。
↑ 右端の【白四角】はグラフのゼロの位置を意味します。あの白四角より上ならプラス。下ならマイナスです。