使用w32tm / stripchart来判断两个Windows主机之间的时间差异是否可行?发现两个主机时间差异的更好方法是什么?
概述
如果没有,有什么替代方法?
第二个问题的答案是“是的,有更好的方法来衡量两个主机之间的时间差异.微软说得对here.他们指向NIST,其中列出了一大堆其他软件(和硬件).可能比w32tm.exe好.我相信很多都是,因为微软显然不支持w32tm.exe作为超高精度工具.“
windows时间(和w32tm.exe)符合RFC 1305(NTPv3),包括补偿网络延迟.补偿网络延迟是网络时间协议的基本特征之一. (参见Marzullo的算法,这是NTPv3使用的算法.)
让我对你的问题感到沮丧的是,高精度对你来说非常重要,但是你没有给出任何关于你需要精确精度的提示. 1秒? 1毫秒? 1纳秒?通用计算机的时钟分辨率与处理器接收的时钟中断频率相关,通常由运行在32.768 KHz(功率为2)的晶体振荡器控制,但这对温度,电压等敏感. .典型windows机器上的HAL默认配置实时时钟每15.6毫秒启动一次,或大约每秒64次.但是,您仍然可以将RTC调低至1ms,您还可以通过软件将该15.6毫秒时间片细分为更小的片段,以实现高性能应用.无论如何,NTP时间戳本身是一个64位无符号定点数,因此理论上的限制大约为232皮秒的精度,但windows时间实现甚至没有接近. windows时间显示的NTP精度为-6,并且不支持某些最新和最好的NTP算法,因此实际上它可能永远不会产生比一个硬件时钟滴答或正负16毫秒更精确的精度.
通用操作系统不是非常好的时钟,特别是如果在用户模式下实现时间保持算法,其中执行线程不断被抢占.高精度时钟很贵.
上图是系统上时钟中断的频率.请注意,即使是时钟中断(32位windows上的IRQL 28和64位windows上的IRQL 13)也可以被更高的中断(例如处理器间中断)抢占,并且即使是通过纳秒.
所以回到NTP.
w32tm / stripchart /computer:10.0.1.8是测试一台windows机器与另一台机器之间的时间差异的完美有效方法.它确实考虑了网络延迟,正如我们上面讨论的那样,它与NTPv3兼容.但是不要相信我的话.您可以在Wireshark跟踪(w32tm.exe发送到windows NTP服务器的客户端数据包)中查看自己的事务:
Microsoft不保证使用windows Time的亚秒精度,因为他们不需要支持它以使其任何产品都能正常工作.但是,这并不意味着w32tm.exe仍然不具备亚秒精度.
如果你确实需要比这更准确的时间,你可能会使用另一种使用稍微不同的算法的NTP实现额外的毫秒或10精度.但如果你真的需要更准确的时间,我个人根本不会建议NTP.我将铯钟直接连接到您的机器上,而不是使用先发制人的操作系统.