Freq experiments 1
Equipment
- Usual computer clock stability 32768 Khz quarts is 2.78 ppm (6 seconds in 25 days)
This also means 10ms per hour or 1ms per 6.25 minutes.
Latest results
Two servers, one in Lebanon, one in Germany, Saarbrücken. Uplink from Lebanon over crappy Lebanese ISP's, downlink over DVB-S2 Newtec 32APSK link. Downlink is QoS'ed on Linux.
System clocks (runtime is pretty unstable, battery one is much better") should synchronized and drift should be corrected by adjtimex. Sure it is much better to use as clock source low latency GPS (without FIFO, and better even over some proper "hardware" bus like SPI/I2C/..., not over RS232, who is accessed over some unknown quality chip, and this chip connected also over some other bus). But we have just "bios clock".
Example:
home ~ # adjtimex -c
--- current --- -- suggested --
cmos time system-cmos error_ppm tick freq tick freq
1264420100 7199.649196
1264420110 7199.649267 7.2 10000 0
1264420120 7199.649340 7.3 10000 0 9999 6075475
1264420130 7199.649414 7.4 10000 0 9999 6070787
1264420140 7199.649486 7.2 10000 0 9999 6084850
1264420150 7199.649558 7.3 10000 0 9999 6077037
1264420160 7199.649633 7.5 10000 0 9999 6064537
1264420170 7199.649709 7.7 10000 0 9999 6052037
Adjusting tick to 9999
home ~ # adjtimex -c
--- current --- -- suggested --
cmos time system-cmos error_ppm tick freq tick freq
1264420466 7199.651822
1264420476 7199.650893 -92.8 9999 0
1264420486 7199.649969 -92.4 9999 0 9999 6056250
1264420496 7199.649043 -92.6 9999 0 9999 6071875
1264420506 7199.648116 -92.6 9999 0 9999 6070312
Adjusting frequency
home ~ # adjtimex -c
--- current --- -- suggested --
cmos time system-cmos error_ppm tick freq tick freq
1264420517 7199.647232
1264420527 7199.647226 -0.6 9999 6071875
1264420537 7199.647225 -0.1 9999 6071875 9999 6081250
1264420547 7199.647225 0.1 9999 6071875 9999 6067188
Result is much better.
Here is downlink results (downlink loaded 90-95% from maximum capacity) Note: Jitter measured for 1way, over my own program. Algo is simple, in few words: Each host send "tick" packet, record in packet local timestamp, final destination receive it and get diff. Next packet he check timestamp in packet, diff with previous and real diff he receive. Here we catch jitter and latency delta.
Jan 25 15:59:12 <link5x> 5 max jitter, last 4, max_rtt 318 Jan 25 15:59:13 <link5x> 5 max jitter, last 1, max_rtt 318 Jan 25 15:59:14 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:15 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:16 <link5x> 5 max jitter, last 1, max_rtt 318 Jan 25 15:59:17 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:18 <link5x> 5 max jitter, last 1, max_rtt 318 Jan 25 15:59:19 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:20 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:21 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:22 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:23 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:24 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:25 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:26 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:27 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:28 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:29 <link5x> 5 max jitter, last 1, max_rtt 318 Jan 25 15:59:30 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:31 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:32 <link5x> 5 max jitter, last 0, max_rtt 318 Jan 25 15:59:33 <link5x> 5 max jitter, last 0, max_rtt 318
Means average jitter on link is 1-2ms, maximum jitter 5ms. 5ms can be latency of system, it is just Linux without preemption and both servers is loaded.