【问题标题】:How to reduce UDP sendto delay in Linux?如何减少 Linux 中的 UDP sendto 延迟?
【发布时间】:2016-10-07 08:28:24
【问题描述】:

我们正在通过 10Gb 以太网以高数据速率从 Linux PC 传输 udp 数据包。我们正在用 C++ 编写代码。

当我们调用 sendto() 来发送一个 udp 数据包时,我们可以对传输的实际延迟(即数据包实际发送的速度)进行任何优化吗?

刷新的概念是否适用于 UDP 发送缓冲区,还是 UDP 数据包总是立即发送?

【问题讨论】:

    标签: sockets network-programming


    【解决方案1】:

    UDP 数据包通常仅在传出接口出现拥塞时才被缓冲。您可以通过以下方式减少负载下的延迟:

    • 减小套接字缓冲区的大小 (setsockopt(SO_SNDBUF));
    • 减小与接口关联的缓冲区大小 (tc qdisc change);
    • 减少驱动程序内部缓冲区的大小(特定于驱动程序)。

    请注意,这样做会通过丢弃数据包而不是缓冲它们来减少负载下的延迟,因此,根据您的更高层协议,它实际上可能增加应用程序延迟,例如通过增加应用层重传。

    【讨论】:

      猜你喜欢
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多