GNU/Linux >> Linux Esercitazione >  >> Linux

Netfilter si aggancia al sistema multi-core

Il problema non è di netfilter, è il modo in cui il tuo kernel gestisce gli interrupt.

Per impostazione predefinita, le vecchie versioni di APIC inviano tutti gli interrupt alla CPU0.

Puoi controllare se questo è il tuo problema con:

cat /proc/interrupts

Puoi vedere se gli interrupt della NIC (e ricorda che gli hook di netfilter vengono eseguiti su un RX o TX SoftIRQ) sono gestiti da un singolo Core.

Nelle versioni più recenti del kernel, c'è un'opzione di compilazione (CONFIG_HOTPLUG_CPU), che bilancia gli IRQ sui core esistenti.

Oppure, se non puoi aggiornare la versione o ricompilare il kernel, puoi aggiornare l'affinità SMP (con una maschera che gestisce più di un CPUid) per cercare di bilanciare tra diversi core. Oppure vai in ACPI e configurazione corretta (qui non posso aiutarti di più).

Qui puoi trovare tutto su questa roba (affinità SMP e corretta gestione dell'IRQ)


Un problema potrebbe essere che la tua scheda NIC ha un solo interrupt. Alcuni NICS più recenti hanno diversi interrupt (i cosiddetti NIC multiqueue) che consentono di distribuire il carico tra più thread.

Per i NIC a coda singola sono disponibili alcune funzionalità software nei kernel più recenti che è possibile configurare per distribuire il carico. Vedi ad es. http://www.spinics.net/lists/linux-doc/msg02975.html per una panoramica di ciò che è disponibile.


Linux
  1. Il problema della mandria tonante esiste più su Linux?

  2. Interrompe in Beaglebone

  3. Valore di ritorno di x =os.system(..)

  4. File system multipiattaforma

  5. Cos'è uno spazio dei nomi UTS?

Comando Fsck in Linux

Linux è un sistema operativo o un kernel?

Documentare il tempo di attività del sistema in Linux

Ora di sistema

Come correggere l'errore "Rilevato problema del programma di sistema" su Ubuntu

Come aggiornare Ubuntu 18.04 a Ubuntu 20.04