我有一臺運行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