我想知道大家是否知道准确度如何PTP http://en.wikipedia.org/wiki/Precision_Time_Protocol在 Windows Server 2008 上可以保证同步。
我知道这个线程:Windows 中进程的最短保证时间是多少? https://stackoverflow.com/questions/3558418/what-is-the-minimum-guaranteed-time-for-a-process-in-windows其中讨论了 Windows 的本地时间,是的,这根本不提供任何保证。
但是当谈到硬件解决方案(PTP)时呢?是否有任何限制无法保证
编辑1:我在标题中添加了“(与Linux相比)”,因为这最初是我关心的问题之一。
可以采取一些措施来获得 Windows Server 2008 上可靠的处理时间。
他们之中有一些是:
避免CPU负载过重。
安排代码的内存占用较小。
Set the 进程优先级 http://msdn.microsoft.com/en-us/library/windows/desktop/ms686219%28v=vs.85%29.aspx和线程优先级 http://msdn.microsoft.com/en-us/library/windows/desktop/ms686277%28v=vs.85%29.aspx高的。甚至可能高达REALTIME_PRIORITY_CLASS
and THREAD_PRIORITY_TIME_CRITICAL
分别。
Set the 线程关联掩码 http://msdn.microsoft.com/en-us/library/windows/desktop/ms686247%28v=vs.85%29.aspx以避免时间关键部分运行Core 0
。 Core 0 专用于一些系统服务。使用不同的代码可以避免依赖性。
Use of Sleep(0)
在适当的时候。 Sleep(0) 是一个异步服务,强制调度程序做出反应。这样您就可以触发调度程序,该调度程序将选择您的进程/线程立即获取 CPU,因为它具有最高优先级。
确保代码也为其他服务提供时间。最高优先级将导致所有其他线程基本上停止。 (不会处理任何鼠标事件或任何事件)
可以通过多媒体定时器 API 来增加系统中断频率。使用timeGetDevCaps http://msdn.microsoft.com/en-us/library/windows/desktop/dd757627%28v=vs.85%29.aspx查询系统允许的最大中断频率的函数并使用时间开始期间 http://msdn.microsoft.com/en-us/library/windows/desktop/dd757624%28v=vs.85%29.aspx with wPeriodMin
由返回timeBeginPeriod
in the TIMECAPS
结构。这将迫使您的系统以其最大中断频率运行。不要忘记通过调用来释放多媒体计时器资源时间结束期间 http://msdn.microsoft.com/en-us/library/windows/desktop/dd757626%28v=vs.85%29.aspx当你完成时。
当仔细遵循这些规则时,可以获得 10 微秒范围内的精确计时,且可靠性非常高。然而,上述所有因素的总和导致了一些复杂性。因此,永远无法提供保证。但即使在 RTOS 系统上也没有这样的保证。当编码没有正确完成时,无论操作系统被调用什么/如何调用,事情都不会按照预期的方式工作。可以找到更多注释和等效 .Net 服务的链接here https://stackoverflow.com/a/11537483/1504523.
综上所述,可以实现时间同步(精确时间协议 http://en.wikipedia.org/wiki/Precision_Time_Protocol)下降到几十微秒。
可以找到精确时间协议开发者常见问题解答here http://wiki.eclipse.org/PTP/sync-projects.
Linux 也被要求后编辑:有一些可用的软件包,例如this http://www.symmetricom.com/products/ntp-servers/ntp-network-appliances/PTP-Software-for-Linux/一。这里报告的典型精度也在 10 到 100 微秒范围内。
毫不奇怪,在可比较的标准硬件上运行时,Windows 和 Linux 的结果非常相似。两者都无法做出任何魔法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)