In modernen Multi-Thread- und Multi-Tenant-Umgebungen kann die Standard-CPU-Scheduler-Verteilung zu Latenzspitzen führen. Für Workloads, die niedrige Latenzen erfordern, wie z. B. Finanztransaktionen, Echtzeit-Datenverarbeitung oder High-Performance-Networking, ist CPU Pinning und Isolation unter Linux entscheidend. Dieser Artikel erklärt, wie Prozesse gezielt an bestimmte CPU-Kerne gebunden und isoliert werden, um deterministische Performance zu gewährleisten.
Grundlagen von CPU Pinning
CPU Pinning bedeutet, dass ein Prozess oder Thread explizit auf bestimmte CPU-Kerne gebunden wird. Standardmäßig verteilt der Linux-Scheduler Prozesse dynamisch über alle verfügbaren Kerne, was zu Cache-Invalidierungen und Scheduling-Latenzen führen kann. Pinning reduziert diese Effekte.
Prüfen der aktuellen CPU-Affinität
taskset -cp <PID>
Dieser Befehl zeigt, auf welchen CPUs ein Prozess derzeit ausgeführt wird. Standardmäßig ist die Affinität auf alle Kerne gesetzt.
Prozess an bestimmte CPUs binden
taskset -cp 0-3 <PID>
Der Prozess mit der angegebenen PID wird auf die CPUs 0 bis 3 beschränkt.
Isolierte CPU-Kerne für latency-sensitive Workloads
Um Interferenzen durch andere Prozesse zu vermeiden, können Kerne vom allgemeinen Scheduler isoliert werden.
Kernel Boot Parameter: isolcpus
GRUB_CMDLINE_LINUX="... isolcpus=4-7 nohz_full=4-7 rcu_nocbs=4-7"
isolcpus: entfernt die Kerne aus der normalen Scheduling-Poolnohz_full: aktiviert tickless Mode auf isolierten Kernenrcu_nocbs: verhindert RCU-Kernel-Threads auf diesen Kernen
Nach Änderung des GRUB-Bootparameters muss der Kernel neu gestartet werden.
cgroups v2 zur Steuerung und Pinning
cgroups v2 erlaubt die Definition von CPU-Zeitlimits und Affinitäten für Gruppen von Prozessen.
Beispiel: cgroup für isolierte Workloads
mkdir /sys/fs/cgroup/latency-sensitive
echo 4-7 > /sys/fs/cgroup/latency-sensitive/cpuset.cpus
echo 0 > /sys/fs/cgroup/latency-sensitive/cpuset.mems
echo <PID> > /sys/fs/cgroup/latency-sensitive/cgroup.procs
Die Prozesse in dieser cgroup werden nur auf CPUs 4 bis 7 ausgeführt und nutzen Memory Node 0.
systemd Service Units mit CPU-Affinität
Für Dienste, die über systemd gestartet werden, lassen sich Affinität und Isolierung direkt in der Unit definieren.
[Service]
ExecStart=/usr/bin/latency-app
CPUAffinity=4 5 6 7
CPUQuota=80%
TasksMax=200
Dies bindet den Service an die Kerne 4–7 und begrenzt CPU-Zeit auf 80%.
IRQ und Isolierung
Bei Netzwerk- oder Storage-Workloads sollten Interrupts ebenfalls auf isolierte Kerne umgeleitet werden, um Latenzspitzen zu vermeiden.
IRQ-Affinität setzen
cat /proc/irq/<IRQ_NUMBER>/smp_affinity
echo 0F > /proc/irq/<IRQ_NUMBER>/smp_affinity
Die Bitmaske 0F bindet IRQs an die ersten vier Kerne. Für isolierte Workloads sollten die isolierten Kerne verwendet werden.
Monitoring und Validierung
Nach Pinning und Isolation ist es wichtig, die CPU-Auslastung und Latenz zu überwachen.
Tools zur Überprüfung
htop: zeigt Core-spezifische Auslastungmpstat -P ALL 1: überwacht CPU-Auslastung je Core in Echtzeitperf stat -C 4-7 -p <PID>: Performance-Counters für isolierte Kerne
Best Practices
- Nur wirklich latency-sensitive Prozesse isolieren; zu viele isolierte Kerne verschlechtern die Gesamtauslastung
- Memory Nodes passend zu den CPU-Kernen zuweisen, um NUMA-Effekte zu vermeiden
- Interrupts und systemd-Dienste auf isolierte Kerne abstimmen
- Regelmäßiges Monitoring und Benchmarking durchführen
- Dokumentation aller Pinning- und Isolationsmaßnahmen für Audits
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

