Hi Hal,
On 30/01/2017 22:45, Hal Murray wrote:
h...@blemings.org said:
If it would be of help I've a couple of friends who still do Linux/PowerPC
kernel work, might be able to prod them about a fix at least for upstream
if we have a simple to demonstrate test case and are confident it's in the
kernel.
Thanks.
I think that would be a big help.
My goal was to get our code running on a big-endian system to make sure we
had all the byte swaps in the right place. We can do that even if the kernel
doesn't keep good time so fixing this is not high priority. I could use some
help in tracking this down and/or I'm willing to help if anybody is
interested in investigating.
Yep I'm happy to help and work with you :)
I'm a geek, but know nothing about the PowerPC and close to nothing about
debugging kernels.
I know virtually nothing about NTP but am somewhat handy with the other
two and know people who ware very handy with them, so I reckon we can
sort this :)
We may not actually need to dig deep into the kernel code - it might
well be sufficient to flag the nature of the problem and provide a test
case to the kernel folk. I believe what you have below will get pretty
close :)
I think I found the timekeeping code in the kernel. It's using a cycle
counter like I expect. I think it is using the clock frequency from Open
Firmware. Do you know anything about Open Firmware on the Mac mini? I found
a web page that said to hold down Command+Option+o+f at power up but I
couldn't get that to work. Maybe I don't know my keys.
That sounds right for getting into OpenFirware - but for what we're
digging into you shouldn't need to putz with it.
Time for sleep.
:)
-----------
I'm reasonably confident that the system doesn't keep reasonable time when
ntpd isn't running.
Here is my test case:
assuming you have a working ntp setup
add "disable ntp" to ntp.conf
make sure you are logging loopstats:
statsdir /var/log/ntp or ntpstats or ...
filegen loopstats type day link
reboot the system to start clean
You will get things like this in loopstats.
57783 14135.823 0.684044126 0.000 0.000000954 0.000000 6
57783 14137.823 0.688713522 0.000 0.000000954 0.000000 6
57783 14139.823 0.692100011 0.000 0.000000954 0.000000 6
...
57783 16640.823 6.663863776 0.000 0.000000954 0.000000 6
57783 16692.823 6.743695119 0.000 0.000000954 0.000000 6
57783 16708.823 6.823918338 0.000 0.000000954 0.000000 6
The second column is the seconds this day.
The 3rd column is the offset from the servers you are using.
It should be changing slowly. If it is slow enough, ntpd will correct it by
adjusting the drift.
You can calculate the drift as
(offset2-offset1)*1000000/(time2 - time1)
$ dc
16708.823 14135.823 - p
2573.000
6.823918338 0.684044126 - p
6.139874212
1000000 * p
6139874.212000000
2573.000 / p
2386
That's 2386 ppm. "slow enough" is under 500 ppm. Sane numbers are under
100. (either sign)
Without the "disable ntp", the 4th column will be the drift. It should vary
with temperature. Ballpark change is 1 ppm per C.
Great stuff - I think this will give some useful context.
When you have a chance, please give the output of
$ cat /proc/cpuinfo
and
$ cat /proc/cmdline
From memory this will give the last few bits of info needed.
Thanks again Hal!
Cheers,
Hugh
_______________________________________________
devel mailing list
devel@ntpsec.org
http://lists.ntpsec.org/mailman/listinfo/devel