IPTables是否可以利用多核处理器?


10

每个数据包是否由不同的核心处理?还是单线程进程?


2
我不知道为什么Chopper3关闭了这个问题。但是要回答这个问题:Iptables实际上只是Linux防火墙(netfilter)的用户空间前端。Netfilter实际上是内核中围绕数据包处理的挂钩系统。内核通过触发中断处理每个数据包。您的内核是否平衡多个CPU之间的中断取决于它的年龄。有关此信息,请参见StackOverflow上的该线程。stackoverflow.com/questions/7467688/...
JakePaulus

+1,因为我认为这是一个真正的问题。
2011年

@JakePaulus这种IRQ平衡永远不会为一个中断分配多个内核。因此,永远不会在单个线路上为每个数据包交换核心吗?
尼尔斯

从CPU内存缓存的角度来看,为单个连接切换内核没有多大意义-如果这些内核不共享同一缓存,则可能甚至减慢速度。但是你为什么要问这个问题?
尼尔斯

@Nils接口产生的中断可以重定向到另一个不那么忙的CPU。同样,多个接口可能会将其中断发送到不同的CPU,以分散负载。我认为您对来自单个接口的流量不能在每个数据包的基础上在各个CPU之间进行平衡是正确的。
JakePaulus 2011年

Answers:


6

iptables实际上只是Linux防火墙(netfilter)的用户空间前端。Netfilter实际上是内核中围绕数据包处理的挂钩系统。内核通过触发中断处理每个数据包。您的内核是否平衡多个CPU之间的中断取决于它的年龄。有关此信息,请参见StackOverflow上的该线程。/programming/7467688/netfilter-hooks-on-multi-core-system

正如Nils所提到的,这些中断不会在每个数据包的基础上得到平衡。它们会根据每个IRQ(每个接口)保持平衡,或者如果一个人变得太忙,则可能会全部移至其他CPU。


或者,您也可以限制中断或将中断与不同的内核关联。我已经看到,在某些情况下,它们将所有网络中断都分配给几个内核,以确保最少的数据包重新排序和跨内核的进程迁移。
chandank
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.