I am thinking (constantly) how to make my server be synchronised better than it is. I run some cheap app which syncs me with some stratum 2 server on the colo and drift is about 1-2 ms per 10 sec (when the box is not too busy). I want better precision and I want my own clock. But whatever you can buy from 'old style' companies costs more than I ever will afford.
However I just got a thought - is it possible to hook to a hi-tech graphic or sound card which should use some internal precision clocks?
any ideas? thoughts? advice?
EDIT: colo doesnt let me use GPS. they built GPS nntp server out of 30 bucks DIY kit, plugged it to a Linux machine and selling it for $2000 a month. yep.
EDIT EDIT. Guys I really appreciate all the advices. But I am looking for an internal card which doesnt need GPS and it has stable clock which doesnt drift more than say 1ns per 60 sec. I am not looking to buy an atomic clock and I cannot use Stratum/NTP solution (because I already am using it and I want better but cheap)..
EDIT EDIT EDIT. apparently there are clocks which can produce 5ns/sec drift with 100ns resolution which is much better than a Stratum 2 other the internet. I also surprised nobody mentioned IEEE 1588.
To the best of my knowledge, the timing in GPUs comes from the system; they don't have their own internal highly-stable clocks. There are products out there (affordable, last I checked) that'll pull high quality time from a couple of sources. Some pull it directly from GPS, though it does require the ability to
They act as Stratum 1 NTP sources.
A DIY method using off the shelf parts: http://time.qnan.org/
Those tend to be the most cost-effective solutions, since they don't require maintaining a highly stable oscillator.
Second to that are devices with highly stable oscillators, but they tend to be much more expensive.
A dedicated timing machine, even if low capability, can keep very, very accurate time. You just need to lock the NTP software in memory and give it the highest possible priority. It will take it a day or two to stabilize, in temperature, synchronization, and in measuring its own rate. But it's not difficult to get millisecond accuracy in a stratum 3.
The tricks are:
1) The machine should be dedicated to time keeping. No bursts of load from other sources. (You can also use it for very-low-impact services like as a backup name server.)
2) The NTP process should run at elevated priority and locked into memory.
3) Configure a few stratum 2 servers, ideally four. There are plenty of such public servers. Find the ones with the quickest NTP response time. (You can use 'ntpdate -q' to test, lower delays are better.)
4) It will take a day or so to fully stabilize.
5) Use an OS that has good NTP timekeeping integration with the kernel. Linux and FreeBSD are fine.
6) You can use a very cheap, low-end computer, even a $60 wireless router that can run Linux.
If you need better accuracy then buy a proper time clock. Messing around with clever ideas like the one you have there might be a lot of fun but if the time absolutely positively has to be accurate then I don't think its a good idea. What do you think your graphics card would sync to itself, if you tried something like that? Are you certain that any variance in the motherboard clock speed wouldn't affect the GPU?
We have fairly serious requirements for time sync so we ended up buying our own rack-mounted time server from galleon, which comes with its own GPS aerial and we've been very happy with the results and I know they also have systems that plug into the back of a pre-existing server, as will any competitors they have, I'm sure.
The drift is likely also due to the clock on your PC - they still aren't all that accurate. Try downloading the windows version of
ntpd
, configure it up, set your clock with ntpdate, and tell ntpd to run. Over time, it will figure our the rate of drift of your system's clock and over time yield accurate system time for programs. If you're synchronizing a bunch of computers, they should all be synced to the same time source, or preferably a local master which is itself synced to a Stratum 2 server.