Masalahnya bukan dari netfilter, adalah cara kernel Anda mengelola interupsi.
Secara default APIC versi lama mengirimkan semua interupsi ke CPU0.
Anda dapat memeriksa apakah ini masalah Anda dengan:
cat /proc/interrupts
Anda dapat melihat apakah interupsi NIC (dan ingat bahwa netfilter hook dijalankan melalui RX atau TX SoftIRQ) ditangani oleh satu Core.
Di versi kernel yang lebih baru, ada opsi kompilasi (CONFIG_HOTPLUG_CPU), yang menyeimbangkan IRQ dengan inti yang ada.
Atau jika Anda tidak dapat memperbarui versi atau mengkompilasi ulang kernel, Anda dapat memperbarui afinitas SMP (dengan topeng yang menangani lebih dari CPUid) untuk mencoba menyeimbangkan antara Core yang berbeda. Atau buka ACPI dan konfigurasi yang tepat (Di sini saya tidak dapat membantu lebih lanjut).
Di sini Anda dapat menemukan semua tentang hal ini (afinitas SMP dan penanganan IRQ yang tepat)
Masalahnya mungkin NIC Anda hanya memiliki satu interupsi. Beberapa NICS yang lebih baru memiliki beberapa interupsi (disebut NIC multiantrean) yang memungkinkan beban tersebar di antara banyak utas.
Untuk NIC antrean tunggal, ada beberapa fitur perangkat lunak yang tersedia di kernel baru yang dapat Anda konfigurasikan untuk menyebarkan beban. Lihat mis. http://www.spinics.net/lists/linux-doc/msg02975.html untuk ikhtisar tentang apa yang tersedia.