今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

システムクロックに精度を期待してはいけないらしい

WindowsXP が動作しているパソコンで、システムクロックの進み方と実際の時刻を比較すると、わずか数分で1秒以上も狂ってくる個体がいくつもあった。そのまま放っておくと、1日で数分もずれてしまう。
以前、Windows2000 でシステムクロックが異常に進む問題について書いたことがあるけど、これは Windows2000 で ACPI を持っている機種に特有の問題だった。当時、WindowsXP でも現象が発生するかどうかを確認するために実験をしたけど、どのパソコンもそれほど大きく狂うことはなかった。だけど、今は WindowsXP でも同じような現象が発生している。
これらのことから分かるのは、システムクロックを信用してはいけないということだ。原因が特定し、対策を講じたとしても、また同じ問題が発生する可能性を否定できない。従って、時間が重要な意味を持つシステムでは、必ず NTP による時刻の同期をシステムに含める必要があるということだ。
例えば、何かのアプリケーションが原因でシステムクロックに狂いが生じることが分かっていたとして、そのアプリケーションの使用を禁止したとしても、他のアプリケーションが同じ問題を発生させる可能性は十分にある。
毎日電源を入れることが前提になっているパソコンなら、システム起動時に RTC から日時を読み出すので、それほど大きく狂うことはない。しかし、連続稼動するパソコンは、毎日のズレがリセットされるタイミングがないのでいずれは大きくズレてしまう。