gpt4 book ai didi

networking - TCP/UDP 的延迟是多少?

转载 作者:可可西里 更新时间:2023-11-01 02:33:35 29 4
gpt4 key购买 nike

请帮忙!我有一个需要尽可能接近实时处理的应用程序,并且我一直在使用 TCP 和 UDP 遇到这个不寻常的延迟问题。延迟像发条一样发生,并且总是相同的时间长度(主要是 15 到 16 毫秒)。它发生在传输到任何机器(甚至本地)和任何网络(我们有两个)时。

问题的快速总结:

我总是在 C++ 中使用 winsock,在 VS 2008 Pro 中编译,但我已经编写了几个程序来使用 TCP 和 UDP 以各种方式发送和接收。我总是使用以各种语言(MATLAB、C#、C++)编写的中间程序(在本地或远程运行)将信息从一个程序转发到另一个程序。两个 winsock 程序在同一台机器上运行,因此它们显示来自同一时钟的 Tx 和 Rx 的时间戳。我一直看到出现一种模式,在这种模式下,将传输一个数据包突发,然后在下一个突发之前有大约 15 到 16 毫秒的延迟,尽管没有编程延迟。有时每个数据包之间可能是 15 到 16 毫秒,而不是一阵数据包。其他时候(很少)我会有不同长度的延迟,例如 ~ 47 ms。我似乎总是在数据包传输后的一毫秒内收到返回的数据包,尽管在传输的突发事件之间表现出相同的延迟模式。

我怀疑 winsock 或 NIC 在每次传输之前缓冲数据包,但我还没有找到任何证据。我有一个千兆位连接到一个网络,该网络获得各种级别的流量,但在具有没有流量(至少来自用户)和 2 千兆位连接的专用网络的集群上运行中间程序时,我也遇到了同样的事情。我什至在使用发送和接收程序在本地运行中间程序时也会遇到这种延迟。

最佳答案

我今天早上在用 Java 重写服务器时发现了这个问题。我的 Windows 系统时钟的分辨率在 15 到 16 毫秒之间。这意味着每个显示与其传输时间相同毫秒的数据包实际上是在 16 毫秒间隔内以不同毫秒发送的,但我的时间戳仅每 15 到 16 毫秒递增一次,因此它们看起来相同。

我来这里是为了回答我的问题,我看到了关于提高我的程序优先级的回复。所以我启动了所有三个程序,进入任务管理器,将所有三个程序都提高到“实时”优先级(没有其他进程处于)并运行它们。我得到了相同的 15 到 16 毫秒间隔。

感谢您的回复。

关于networking - TCP/UDP 的延迟是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1631353/

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