GNU/Linux >> Tutoriales Linux >  >> Linux

Netfilter se engancha en un sistema multinúcleo

El problema no es de netfilter, es la forma en que su núcleo gestiona las interrupciones.

Por defecto, las versiones antiguas de APIC envían todas las interrupciones a la CPU0.

Puedes comprobar si este es tu problema con:

cat /proc/interrupts

Puede ver si las interrupciones de la NIC (y recuerde que el gancho de netfilter se ejecutan sobre un RX o TX SoftIRQ) son manejadas por un solo núcleo.

En las versiones más nuevas del kernel, existe una opción de compilación (CONFIG_HOTPLUG_CPU), que equilibra las IRQ sobre los núcleos existentes.

O si no puede actualizar la versión o recompilar el kernel, puede actualizar la afinidad de SMP (con una máscara que maneja más que un CPUid) para intentar equilibrar entre diferentes núcleos. O vaya a ACPI y la configuración adecuada (aquí no puedo ayudar más).

Aquí puede encontrar todo sobre estas cosas (afinidad SMP y manejo adecuado de IRQ)


Un problema podría ser que su NIC tenga solo una interrupción. Algunos NICS más nuevos tienen varias interrupciones (los llamados NIC multicola) que permiten que la carga se distribuya entre muchos subprocesos.

Para las NIC de cola única, hay algunas características de software disponibles en los kernels más nuevos que puede configurar para distribuir la carga. Véase, por ejemplo. http://www.spinics.net/lists/linux-doc/msg02975.html para obtener una descripción general de lo que está disponible.


Linux
  1. Registros del sistema NG

  2. ¿El problema del rebaño atronador existe más en Linux?

  3. Valor de retorno de x =os.system(..)

  4. Cambiar hora temporalmente

  5. ¿Qué es un espacio de nombres UTS?

Comando Fsck en Linux

¿Linux es un sistema operativo o un kernel?

Documentación del tiempo de actividad del sistema en Linux

Hora del sistema

Cómo reparar el error "Problema del programa del sistema detectado" en Ubuntu

Cómo actualizar Ubuntu 18.04 a Ubuntu 20.04