時計がおかしい

ntp で設定できないサーバがあるというので調査。
で、ntpdate で強制的に同期したあとに ntpd を起動しても、しばらくしてから ntpq -p とかすると offset が 5000 とかになっている。なんで?
ちょっとプログラムを書いて実験。

#!/usr/bin/env python

import sys
import time

def main(args):
    now = time.time()
    base = float(args[0])
    print abs(now - base)

if __name__ == '__main__':
    main(sys.argv[1:])
import sys
import time
import subprocess
import optparse
import itertools

DEFAULT_REPEAT = 0
DEFAULT_INTERVAL = 10

def main(args, opts):
    server = args[0]

    if opts.n <= 0:
        it = itertools.count()
    else:
        it = xrange(opts.n)

    interval = opts.d

    for _ in it:    
        now = time.time()
        cmd = ['ssh', server, 'python', '~/tmp/time_diff.py', str(now)]
        subprocess.call(cmd)
        time.sleep(interval)

if __name__ == '__main__':
    from optparse import OptionParser

    parser = OptionParser()
    parser.add_option('-n', dest = 'n', help = 'repeat count', type = int, default = DEFAULT_REPEAT)
    parser.add_option('-d', dest = 'd', help = 'interval time', type = 'float', default = DEFAULT_INTERVAL)
    (opts, args) = parser.parse_args()
    
    main(args, opts)

精度よくとりたいなら ssh じゃなくてもっと Lightweight な仕組みを用意するべきだろうけど、とりあえず。
で結果。

% ssh-add
% python time_check.py -n 10 -d 10 server
190.698225021
190.980038881
191.252182961
191.522819996
191.792335987
192.057996988
192.313823938
192.596374035
192.894083977
193.153176069

なんだこれ。たった90秒で2.5秒近くずれているじゃねーか。ハードウェアの問題かなぁ。