出力には、cat /sys/devices/system/clocksource/clocksource0/available_clocksource
使用可能なハードウェアクロックが一覧表示されます。
目立つ違いなしに時計を変えました。
sudo /bin/sh -c 'echo acpi_pm > current_clocksource'
ハードウェアの時計を変更すると、実際の効果は何ですか?利用可能な時計(または他の目に見える変形)の解像度を確認する方法はありますか?
答え1
まず、カーネルはCPUによって保存され、非常に高速なので(RDTSCとEDX:EAXを読む)、自動的に最良のもの、通常利用可能な場合はTSCを選択します。
しかし、これは必ずしもそうではありません。当初は、SMPシステムの多くが複数の独立したCPUで構築されている場合、CPUができるだけ「同じ」(モデル、速度、およびステッピングが完全に一致する)ことが非常に重要でした。しかし、それにもかかわらず、時には1つが他のものよりはるかに速いので、その時のTSCカウンターは「不安定」です。これがまさにこれを変更(または「notsc」カーネルパラメータを使用して無効にする)が許可される理由です。これらの制限にもかかわらず、TSCはまだ最高のソースですが、カーネルはマルチコアシステムで1つのCPUにのみ依存するように注意する必要があります。 (カウンタリセット)とCPU周波数スケーリング(一部のCPUモデルのTSCに影響を与えます)
SMPの初期には、一部の人々は異なる速度のCPU(新しいBIG.littleアーキテクチャに似ています)を使用してシステムを構築したが、これはタイミングの世界に大きな問題を引き起こしました。
どの解像度を持っているかを確認する方法はクロックゲット()例がありますか?ここ。
いくつかの追加リンクがあります:公式カーネル文書(このディレクトリには別の興味深いファイルがあります)ChromebookでTSCを再同期するさまざまなクロックソースを使用したいくつかのベンチマーク。
簡単に言えば、クロックソースを変更するときにユーザー空間で目に見える変化があってはなりません。ただ速度低下だけがあるだけです。一日の時間を取得します()。
答え2
ハードウェアクロックとは、マシンの電源が切れてもCPUで実行される制御プログラムとは独立して実行されるクロックのことです。
システム時間は、Linuxカーネルの内部時計に記録された時間です。
一部のプログラムとLinuxカーネルのエッジ部分(ファイルシステムなど)はカーネルタイムゾーン値を使用します。 vfat ファイルシステムがその例です。カーネルタイムゾーンの値が無効な場合、vfatファイルシステムはファイルに誤ったタイムスタンプを報告して設定します。
hwclockコマンドを使用すると、ハードウェアクロックの時刻を表示できます。hwclock --show
また、--systohcフラグと--hctosysフラグを使用して、システム時間をハードウェアクロック時間と同期させることも、その逆に同期させることもできます。