作者回复: RPS会对数据包重新计算hash, 然后把数据包重新分派到新的cpu对应的队列,之后还需要用IPI的中断通知新的cpu, 而在IPI中断之后,就需要再做一次softirq。这样对于高频率收包的情况下, softirq就会明显的增大。 在实际应用的时候,对于物理网络接口,如果已经有了RSS的情况,一般就不需要再打开RPS了。
作者回复: ovs和iptables的规则是独立的。 数据包在协议栈中传递的时候有专门的hook点来处理对应的规则,比如iptables规则在netfilter的pre, in, out等hooks点上处理,ovs规则在ovs相关的device上处理。
作者回复: @莫名, 其实除了RSS/RPS外,你还可以去看一下RFS的概念,这个和这一讲的关系不大,并且逻辑要更加复杂,就没有在文档中说明了。 你测试iperf3的环境是什么?如果改了veth的rps_cpus配置,没有效果,那么还要再分析有没有其他情况造成了快速重传。
作者回复: 现成的自动配置的方法我不知道。我们是在自己实现的cni模块里对veth的rps做配置的。
作者回复: 一个F是4个bits, 总共三个F, 那么是4 * 3 = 12
作者回复: 物理机上的网卡和驱动一般都有RSS, 一般不需要RPS。
作者回复: @LWW >1 对的,乱序重传,最终会影响到延时和吞吐量。 >2 RPS会对数据包重新计算hash, 然后把数据包重新分派到新的cpu对应的队列,之后还需要用IPI的中断通知新的cpu, 而在IPI中断之后,就需要再做一次softirq。这样对于高频率收包的情况下, softirq就会明显的增大。 在实际应用的时候,对于物理网络接口,如果已经有了RSS的情况,一般就不需要再打开RPS了。
作者回复: 可以根据节点上网络的情况来决定在哪一端配置rps.