Lv.的博客

使用w32tm / stripchart来判断两个Windows主机之间的时间差异是否可行?发现两个主机时间差异的更好方法是什么?

概述

使用w32tm.exe的选项条形图来判断两台主机的时间差异(在很小的误差范围内)是否可行?请注意,w32tm.exe的条带图功能与 Windows时间服务本身使用的算法是分开的. 如果没有,有什么替代方法? 谢谢, 马特 您的第一个问题的答案是“是的,w32tm.exe(Windows时间)能够在非常小的误差范围内(相对术语)测量两个网络主机的时间差异.” 第二个问题的答案是“是的,有更好的方法来,下方主要介绍关于使用w32tm / stripchart来判断两个Windows主机之间的时间差异是否可行?发现两个主机时间差异的更好方法是什么?的全文内容,希望对你有所帮助。
 
 
使用w32tm.exe的选项条形图来判断两台主机的时间差异(在很小的误差范围内)是否可行?请注意,w32tm.exe的条带图功能与 Windows时间服务本身使用的算法是分开的.

如果没有,有什么替代方法

 

 您的第一个问题的答案是“是的,w32tm.exe(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.我将铯钟直接连接到您的机器上,而不是使用先发制人的操作系统.

 

posted @ 2022-08-01 16:43  Avatarx  阅读(1304)  评论(0编辑  收藏  举报