Last updated on 19. August 2025
Wenn dein Linux-Server plötzlich eine ungewöhnlich hohe CPU-Auslastung zeigt – insbesondere durch den Prozess ksoftirqd/0 oder ksoftirqd/1 – dann ist das ein Hinweis auf ein zugrunde liegendes Interrupt-Problem. In diesem Beitrag analysieren wir, was ksoftirqd ist, warum er CPU-Probleme verursachen kann und welche Lösungsansätze es gibt.
Was ist ksoftirqd?
ksoftirqd ist ein Kernel-Thread, der Soft Interrupts (SoftIRQs) abarbeitet – insbesondere Netzwerk-Interrupts, I/O-Verarbeitung und Timer. Wenn zu viele Interrupts auftreten, versucht das System, diese über ksoftirqd in den Userspace auszulagern, um die Systemstabilität zu erhalten. Das Problem: Dadurch kann dieser Thread eine oder mehrere CPU-Kerne dauerhaft auslasten.
Symptome erkennen
- Ein CPU-Kern zeigt dauerhaft 100% Auslastung
- Der Prozess
ksoftirqd/Nist oben in dertop– oderhtop-Ausgabe - Langsame Netzwerkverbindung oder hoher Paketverlust
Diagnose
Um die Interrupt-Verteilung zu prüfen:
cat /proc/interrupts
Um die Prozesse zu beobachten:
top -H -p 2 # oder htop öffnen und nach ksoftirqd suchen
Mögliche Ursachen
- Hohe Netzwerklast auf einer einzelnen Netzwerkkarte
- Fehlende Lastverteilung der Interrupts auf mehrere CPU-Kerne
- Virtuelle Maschinen mit fest zugewiesenen Kernen
- Probleme mit Netzwerk-Treibern oder defekter Hardware
🔧 Lösungsansätze (aktualisiert)
1. irqbalance aktivieren ✅ (empfohlen)
Das Standard-Tool unter Linux, um Interrupts gleichmäßig auf alle Kerne zu verteilen.
sudo apt update sudo apt install irqbalance -y sudo systemctl enable --now irqbalance
➡️ In 90 % der Fälle reicht das völlig aus.
irqbalance läuft im Hintergrund und verteilt IRQs automatisch.
2. CPU-Affinität manuell setzen (optional, nur für Spezialfälle)
Manchmal will man eine bestimmte Netzwerkkarte oder einen Storage-IRQ an bestimmte Kerne binden (z. B. für Latenz-kritische Workloads).
a) IRQs der Netzwerkkarte finden
Die Schnittstelle mit ip link show herausfinden (z. B. eth0, ens18 …).
Dann zugehörige IRQs auflisten:
ls -1 /sys/class/net/<INTERFACE>/device/msi_irqs
Beispiel:
/sys/class/net/eth0/device/msi_irqs/ ├─ 27 ├─ 28 ├─ 29 └─ 30
b) CPU-Masken anpassen
Jeder IRQ hat eine Maske in /proc/irq/<NR>/smp_affinity.
- Inhalt ist eine Hexadezimal-Bitmaske:
1= CPU02= CPU14= CPU28= CPU3f= CPU0-3ff= CPU0-7
- Beispiel:
echo 2 > /proc/irq/27/smp_affinity
- → IRQ 27 läuft nur auf CPU 1.
⚠️ Diese Änderungen sind temporär (gehen nach Reboot verloren).
Für dauerhafte Settings → systemd-Script oder /etc/irqbalance/irqbalance.env.
3. Kernel-Parameter optimieren (nur für Experten)
Manchmal kann man über GRUB_CMDLINE_LINUX das Verhalten des Schedulers verbessern. Beispiele:
nohz=on→ Tickless-Kernel (reduziert Interrupts bei Idle).irqaffinity=0-7→ auf welche CPUs Interrupts verteilt werden dürfen.rcu_nocbs=...→ nützlich bei RT- oder HPC-Workloads, verschiebt RCU-Callbacks.
👉 Aber: für normale Web/DB-Server nicht nötig.
Falsche Werte können das System sogar langsamer machen oder Boot-Probleme verursachen.
Deshalb: nur setzen, wenn man wirklich messen und testen kann.
4. Empfehlung 🎯
- Default: Nur
irqbalanceaktivieren → fertig. - Optional: Manuelle Affinität nur, wenn man eine bestimmte Last gezielt auf CPUs pinnen will (z. B. DPDK, VoIP, NFV).
- Kernel-Parameter: Nur für Spezial-Umgebungen mit Benchmarking.
4. Zeit manuell synchronisieren (workaround)
Falls das Problem nach einem Suspend/Resume oder nach VM-Migration auftaucht:
sudo date -s "$(date)"
Das kann seltsame Kernel-Timer-Probleme temporär lösen.
Was, wenn nichts hilft?
Falls alle Software-Lösungen versagen, sollte ein Hardware-Defekt in Betracht gezogen werden – insbesondere bei älteren Netzwerk-Karten oder Mainboards. Auch ein BIOS-/Firmware-Update kann helfen. In seltenen Fällen hilft nur der Austausch der betroffenen Komponente.
Zusammenfassung
ksoftirqd-Last entsteht meist durch Interrupt-Flut- Lastverteilung mit
irqbalanceund manuelle Affinitäts-Anpassung sind effektive Gegenmaßnahmen - Hardwaredefekte oder VM-Konfigurationen können ebenfalls Ursachen sein
Mit diesem Guide hast du eine fundierte Grundlage, um hohe CPU-Auslastung durch ksoftirqd zu analysieren und zu beheben.
Hinweis:: Wenn dir dieser Beitrag gefallen oder geholfen hat, kannst du mich gerne mit einer kleinen Unterstützung motivieren 😊
₿/Ξ: Donate with Bitcoin
Address: bc1qt7wc6jfth4t2szc2hp6340sqp3y0pa9r3ywgrr
Schreib den ersten Kommentar