時計が狂う

2018年2月18日

この記事は最初の投稿日から19年経過しています。内容が古い可能性があります。

時計は、ntpd で合わせていますが、同期が安定しません。

time reset -0.517526 s

とか出まくりです。どうもおかしい…。

まずは、玄箱でやってた、adjtimex による tick の調整を試みました。

adjtimex -t 10000

の、10000 の部分を少しづつ変えながら、ntpdate で時刻同期サーバと時刻を合わせ、なるべくずれないように tick を調整していきます。

普通、「遅れがち」のであれば遅れがち、「進みがち」なのであれば進みがちというものだと思われますが、遅れたり、進んだりとわけのわからない動きをするため、tick 値が定まりません。

挙げ句の果てには、kernel ログに、

Losing too many ticks!
TSC cannot be used as a timesource.
Possible reasons for this are:
You're running with Speedstep,
You don't have DMA enabled for your hard disk (see hdparm),
Incorrect TSC synchronization on an SMP system (see dmesg).
Falling back to a sane timesource now.

てのまで出てきました。

これを手がかりに、ネットで情報を探して、kernel 2.6 の新しいやつだと、clock の供給元が、TSC になっているために時計が狂うハードウェアがあるとの話を見つけました。

そこで、kernel の boot のパラメータに、

clock=pmtmr

を追加してみましたが、まだ時計が安定しません。

ダメもとで、

clock=pit

もやったのですが、まだ安定しません。

さらにさがして、次の記述を見つけました。

Losing too many ticks! …. on a VIA epia board

同じように、clock=pmtmr を指定するように書いてあるように読めたのですが、気になる点が1つ。

カーネルコンパイルのオプションにて、

Power management options (ACPI, APM)  --->
ACPI (Advanced Configuration and Power Interface) Support  --->
Power Management Timer Support

というのがあります。Help を見ると、

So, if you see messages like 'Losing too many ticks!’ in the

kernel logs, and/or you are using this on a notebook which

does not yet have an HPET, you should say “Y" here.

とのこと。

このオプションを入れていなかったので、有効にしました。

同時に、新しいカーネルソース linux-2.6.11-gentoo-r9 が出ていたので、ついでにこちらでカーネルをコンパイル。

というところで、現在様子見なのですが、今のところは同期とれているようです。

# 一緒にカーネルソースまでかえちゃったので、直接要因がわからなくなってしまいましたが。

gentoo

Posted by toshyon