2010年8月4日水曜日

時間を少しずつずらす。

たまに、ntpdをかけ忘れたりとかで時間がかなり狂うことがありますが、それを「チョコっとずつ修正」する方法です。
adjtimexというパッケージを使います。

※CentOS (5.4)では adjtimex.(arch)というパッケージがありました。
 # yum install adjtimex
 でインストールできそうです。

使い方ですが、せっかちは人は以下のとおり。タブンrootユーザじゃないとダメです。
# adjtimex --tick (値)
現在の値を確認するときは次のとおり。
# adjtimex --print
値はデフォルト値が10000ですが、この値から大きくすると早く進んで、小さくすると遅れます。
早くしたい場合 : 10001以上
通常        : 10000
遅くしたい場合 : 9999以下
考え方は前の記事のURLを参照となりますが、Linuxの場合0.1μ秒毎に1回割り込みが発生し、この割り込みが10000回で1秒とカウントします。
ですので、上の値を+10とすれば、1ms/1secすすみ、+100とすれば10ms/1sec進ませることができます。
ただしこの割り込みの精度はあまりよくなさそうで、ロードアベレージが高かったりすると途端に狂いだします。
なので、調整するコマンドがあるんですかねぇ。

ハードウェアクロックはJST?UTC?

日本語のBlogなのでローカルタイムの基準はJSTでもいいでしょう(笑)
ハードウェアクロックについてLocalTimeがいいのかUTCがいいのかわからなかったのですが、LinuxのDocumentに書いてありました。

#電化製品のマニュアルは後で読む派なので。

http://www.linux.or.jp/JF/JFdocs/Clock/time-tracking.html

大まかにまとめると
・RTCにローカルタイムを求めるOSとデュアルブートしていればローカルタイム
・Linuxは基本はUTCにしたほうがいい。
・RTCにローカルタイム(上記URLだとDST:サマータイム)を設定すると1時間ずれる。

ふむふむ、OSがローカルタイムのRTCを見る必要があれば、RTCにする、Linuxしか乗っからない場合は、UTCにする。。。というようにとれますね。

上のURLのドキュメントを見ると、UTCが推奨だそうですが、実際のところハードウェアログを見るときに簡略化するために、ローカルタイムを設定していたりしていますかねぇ。。。

どちらにあわせる・・・というのはいろいろポリシーが分かれますが、やはり基本はUTCにあわせたほうがいい気がします。