【问题标题】:TCP_NODELAY parameter implication on MSS and CPU utilisationTCP_NODELAY 参数对 MSS 和 CPU 利用率的影响
【发布时间】:2021-03-15 06:49:28
【问题描述】:

当我尝试使用 netperf 编写测试套件时,我必须通过 manual 在下面的行中遇到选项 -D

如果使用 -D 设置 TCP_NODELAY 会影响发送大小 (-m) 大于 MSS 的测试的吞吐量和/或服务需求,则表明 TCP/IP 堆栈实现 Nagle 算法可能 被破坏,也许是逐段解释 Nagle 算法,而不是按用户发送的正确用户发送

我的问题是 - 设置 TCP_DELAY 及其对吞吐量的影响如何确定 nagle 实现被破坏?有人可以帮助我对此进行合乎逻辑的解释吗?

【问题讨论】:

    标签: linux sockets unix tcp nagle


    【解决方案1】:

    从广义上讲,Nagle 是这样的:

    1. 是本次发送中的数据量,添加到任何排队等待的数据中 要发送,大于此的最大段大小 (MSS) 联系?如果答案是肯定的,那么现在发送数据,这么久 因为发送没有其他限制,例如拥塞 窗口或接收方的广告窗口。如果答案是否定的, 然后考虑下一步:

    2. 连接是否“空闲”?其他 换句话说,网络上是否没有未确认的数据。如果是这样的话, 然后立即发送用户发送中的数据。如果连接不 空闲,排队数据并等待。我们知道三个中的一个或多个 事情会发生导致数据被发送:

      应用程序将继续进行发送调用,我们将获得一个 MSS 价值的数据来发送。

      对于当前未确认的数据,将从远程收到确认,使连接再次“空闲”。

      未确认数据的重传计时器将到期,我们可能会在重传时捎带此数据。

    Nagle 的要点应该是在逐个用户发送的基础上进行评估。如果禁用它会导致更高的吞吐量且发送大小大于 MSS,则意味着该堆栈的 Nagle 实现正在逐个 TCP 段地执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2019-11-22
      • 2019-08-23
      • 2022-07-15
      • 1970-01-01
      • 2013-09-30
      相关资源
      最近更新 更多