コンピュータを再起動した後、時計が数秒遅くなるのはなぜですか?

コンピュータを再起動した後、時計が数秒遅くなるのはなぜですか?

マイコンピュータは年中無休で実行され、カーネル/systemd/glibcのアップグレードが完了すると夜に自動的に再起動します。 Fedoraでは、数日ごとにこれが起こります。

システムクロックはNTPプロトコルを使用して同期されますchrony。ハードウェアクロック同期:

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

一般的に、システム時間とハードウェア時計に違いはないと思います。

しかし、再起動後:

28.02.2021 00:34:08.657 chronyd: System clock wrong by -4.021024 seconds

または今夜:

mar 02 01:48:18 chronyd[990]: chronyd exiting
mar 02 01:48:18 systemd[1]: Stopped NTP client/server.
-- Reboot --
mar 02 01:49:37 systemd[1]: Starting NTP client/server...
mar 02 01:49:37 chronyd[989]: chronyd version 4.0 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
mar 02 01:49:37 chronyd[989]: Frequency -13.026 +/- 0.008 ppm read from /var/lib/chrony/drift
mar 02 01:49:37 chronyd[989]: Using right/UTC timezone to obtain leap second data
mar 02 01:49:37 systemd[1]: Started NTP client/server.
mar 02 01:49:51 chronyd[989]: Selected source 162.159.200.123 (hu.pool.ntp.org)
mar 02 01:49:51 chronyd[989]: Time smoothing activated (leap seconds only)
mar 02 01:49:51 chronyd[989]: System clock wrong by -9.232765 seconds
mar 02 01:49:42 chronyd[989]: System clock was stepped by -9.232765 seconds

手動で停止してchrony約2分待ってから再起動すると、期待どおりに問題は発生しません。

オンラインでたくさん検索し、たくさんの投稿を読んでいますが、まだ私が間違っていることを理解することはできません。

アップデート、出力timedatectl

               Local time: St 2021-03-03 14:11:27 CET    
           Universal time: St 2021-03-03 13:11:27 UTC    
                 RTC time: St 2021-03-03 13:11:27        
                Time zone: Europe/Bratislava (CET, +0100)
System clock synchronized: yes                           
              NTP service: active                        
          RTC in local TZ: no  

出力hwclock --verbose

hwclock from util-linux 2.36.1
System Time: 1614784382.362288
Trying to open: /dev/rtc0
Using the rtc interface to the clock.
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2021/03/03 15:13:03
Hw clock time : 2021/03/03 15:13:03 = 1614784383 seconds since 1969
Time since last adjustment is 1614784383 seconds
Calculated Hardware Clock drift is 0.000000 seconds
2021-03-03 16:13:02.344795+01:00

systemd-timesyncd無効になっており、非アクティブです。

答え1

コマンドを試す

timedatectl

RTCクロックが調整またはオフになっていることを確認してください。hwclockあるいは、同様のコマンドを使用することもできます。

現在廃止されており、多くの最新のディストリビューションで置き換えられたntpdサービスの場合は、シャットダウン時にディスクにドリフトファイルを記録し、ハードウェアクロックを正しい時刻に設定することがわかります。ドリフトファイルには、システムクロックの精度、終了時間、およびその他の情報に関する情報が含まれています。コンピュータの電源を入れると、ntpdはドリフトファイルを確認し、記録されたドリフトに基づいてシステムクロックを調整してより速く同期します。

chrony同期には現在、ハードウェアクロックを搭載した仮想マシンがますます必要になるため、ntpdよりはるかに高速です。 chronyがシャットダウン時にハードウェアクロックを調整するかどうか疑問に思います。多分、違いがますます広がっていることを確認する必要があります。この場合、少なくともシャットダウン時にハードウェアクロックを設定するか、システムがハードウェアクロックを調整しない理由を理解することをお勧めします。

たぶんハードウェアの問題があるかもしれません。私は数年前にコンピュータの時間が1分に約17秒間ずれている最も奇妙なケースの1つを見つけました。問題は多くのハードウェア割り込みでしたが、最初は特別なPCIカードが疑わしかったです。 KVMスイッチは、キーボードやマウスと同様に、USB経由で一種のサウンドストリーミングをサポートしていることがわかりました。 KVMスイッチなしですべてがうまく動作します。

関連情報