gpt4 book ai didi

c# - 使用系统时钟测量广播消息延迟,好主意?

转载 作者:行者123 更新时间:2023-11-30 22:40:56 28 4
gpt4 key购买 nike

我想测量 1GB LAN 上消息代理的广播消息延迟。

消息以 pub sub 方式传输,一个发布者,多个消费者。生产者使用系统时钟(C# 中的 DateTime.Now)为每条消息加上时间戳,消费者通过从 DateTime.Now 中减去消息上的时间戳来测量延迟。

 double latency = (DateTime.Now - msg.NMSTimestamp).TotalMilliseconds;

我们 LAN 上的所有盒子都通过 NTP 每小时同步一次时间,但我看到明显的延迟,甚至在 +/- 1 秒的范围内出现负时间。我读到 NTP 应该在 LAN 环境中提供 ~5ms 的精度。

我的衡量策略是否存在根本性缺陷?对于负延迟还有其他解释吗?如果我只看到较大的延迟,我会怀疑我们的消息队列很慢,但消极的延迟确实让我感到困惑。

最佳答案

以毫秒为单位的负值是多少?如您所知,如果它在 5 毫秒以内,这对于 NTP 来说是正常的。如果一台计算机比真实时间提前 5 毫秒而另一台计算机落后 5 毫秒,则计算机之间甚至可能存在高达 10 毫秒的差异。不仅如此,我猜测您的系统中存在一些舍入错误、前瞻/后视错误或同步错误。有许多您无法控制的硬件和实现细节可能会导致不准确。通常,当 DateTime.Now 轮询时,系统时钟在毫秒级足够准确,但许多硬件细节(如负载下的 CPU 节流、管道、缓存抖动等)可能会引入足够多的错误,在毫秒级非常重要。

如果可能,将您的计算机设置为与 NTP 服务器同步,彼此至少间隔一秒。如果所有计算机都尝试在每小时整点同步,NTP 服务器将被淹没,由于拥挤和数据包调度而增加报告正确时间的不准确性。我认为这是发生这种情况的最可能原因。此外,通过减少电缆线路(300 英尺是理论上的最大值,在 EMI 嘈杂的环境中,短至 40 英尺的线路可能会导致严重问题)、用交换机替换集线器以及尽量减少无线线路,确保您的网络尽可能高效网络使用。

关于c# - 使用系统时钟测量广播消息延迟,好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4995413/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com