主要区别是什么?
中断合并(ethtool -C eth1 rx-usecs 0
) -合并来自不同连接的已接收数据包,即增加bandwitdh,但增加接收的延迟
Nagle算法(socket options = TCP_NODELAY
) -合并来自同一连接的已发送数据包,即增加bandwitdh,但增加发送的延迟
中断合并关系到网络驱动程序:其想法是避免每次出现网络数据包时都重新调用中断处理程序。而是在接收到数据包后,NIC会一直等到接收到M个数据包或经过N微秒后再生成中断。然后,驱动程序可以一次处理许多数据包。(否则,使用现代的千兆位和10千兆位适配器,处理器将需要每秒处理数十万或数百万个中断,这可能会阻止系统完成其他工作。)正如您的链接所指出的那样, (或至少可能是)额外延迟的成本,因为OS不会在最早可能的时刻开始处理接收到的数据包。
Nagle算法集中在减少数通过从多个分组合并的有效载荷数据为一个发送的分组。经典示例是telnet会话。如果没有Nagle,则每次按一个键时,系统都必须创建一个新的数据包(以太网上至少64个字节)以发送一个字节。
因此,中断合并的目的是支持更大的带宽利用率,而Nagle算法的目的实际上是产生较低的带宽(通过发送更少的数据包)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句