当网络数据包在Linux x86_64内核3.16上被处理时,同一网络包是否可以在不同的CPU核心上执行硬的和软的IRQ?
这是否意味着:
read(,buf,)将数据从套接字缓冲区(mbuf)获取到CPU核心-K上的用户空间中的缓冲区。对吗?
当使用RPS时,可以在不同的核心上执行相同网络数据包的硬和软IRQ吗?
发布于 2021-09-24 08:36:14
我试着解释我的理解,然而,也许不正确。请帮助纠正我的答案。
首先,RPS和RSS一样工作,即通过散列将irq/packet映射到特定的CPU核心,例如4元组、V(X)LAN标记等,区别在于RPS是在软件上实现的,而RSS是在硬件上实现的,即NIC。因此,这个博客(http://balodeamit.blogspot.ru/2013/10/receive-side-scaling-and-receive-packet.html)中的声明可能是与自己签订的合同。
其次,RFS和aRFS还执行CPU指导。它们将irq/数据包映射到与上层应用程序相同的核心,以实现亲和力,例如,由同一个NUMA节点处理。aRFS是射频识别系统的硬件版本。有关更多细节,您可以参考本文(https://dl.acm.org/doi/abs/10.1145/3452296.3472888)。
在让步中,硬和软irq可以映射到相同的CPU核心,但是,具有不同的指导机制,例如RPS/RSS和RFS/aRFS。
https://stackoverflow.com/questions/45066524
复制相似问题