我有一台运行Linux 2.6.x的4核机器。该机器是单宿(即,具有1个NIC)。Linux网络堆栈是否在多核机器上并行运行?
在这台机器上,我运行4个进程(或者1个进程中的4个线程),它们执行网络中4个不同主机的网络I/O。
问题:这4个网络I/O线程能够并行运行吗?我能否假定TCP/IP堆栈(包括NIC设备驱动程序)是可以利用多个核心完全并行运行的并发代码?在它们的网络I/O的任何阶段,这些线程是否会阻止尝试获取TCP/IP堆栈中的某些共享资源,从而导致部分堆栈 - 因此导致4个应用程序级别的线程处于顶部 - 部分顺序和不完全平行?
添加多个NIC(或具有多个端口的单个NIC)可能会更好,因为您可以将每个端口/ IRQ绑定到不同的CPU。 – Marcin 2011-05-25 11:33:39
感谢您的提示。 +1。 – Harry 2011-05-29 08:01:43