首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何测量低延迟环境中的延迟?

如何测量低延迟环境中的延迟?
EN

Stack Overflow用户
提问于 2009-08-05 21:28:02
回答 2查看 5.2K关注 0票数 18

这是设置..。您的系统正在接收包含离散消息的数据流(每条消息通常在32-128字节之间)。作为处理流水线的一部分,每个消息通过两个物理上分离的应用程序,这两个应用程序使用低延迟方法(如UDP上的消息传递)或RDMA交换数据,最后通过相同的机制传递到客户端。

假设您可以在任何级别注入自己,包括有线协议分析,您将使用什么工具和/或技术来测量系统的延迟。作为其中的一部分,我假设传递到系统的每条消息都会导致相应的(尽管不是等价的)消息被推送到系统并传递给客户端。

我在市场上看到的唯一这样的工具是TS-Associates TipOff。我确信,有了正确的访问权限,您可能可以使用网络分析工具(ala wireshark)和正确的解析器来测量相同的信息,但这是正确的方法吗?或者是否有任何我可以使用的商品解决方案?

EN

回答 2

Stack Overflow用户

发布于 2010-05-10 23:19:52

如果每条消息多几个字节对您来说不是一个过度杀伤力,我建议您只在源代码上使用完整的时间戳(64位)来标记消息,并在每一跳上添加条目/保留时间戳增量(每个戳一个字节)。通过分析双向流,您将找出机器之间的时钟偏差,然后您将能够获得完整的实时延迟信息,以供您考虑或发布到监控工具。

票数 1
EN

Stack Overflow用户

发布于 2009-08-05 21:59:07

这样做的问题与在太空中测量“速度”很相似:你必须询问相对于什么的延迟?如果您尝试在线路上测量它,您将错过交换或接收端的协议堆栈中的任何额外延迟。你不能真正端到端地测量它,因为计算机将有两个不同的时钟,几乎不可能在引入小误差的情况下协调它们(它们彼此偏移!)

真正有希望的唯一方法是测量往返延迟,假设您有从一端返回确认接收的消息。UDP堆栈中没有ACK,因此必须将它们编码到应用程序中的某个位置。您要做的是使用类似于x86的high-resolution timer来测量消息被发送到其响应出现之间的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1235861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档