Symptome und Geltungsbereich
- Der Kernel meldet detected stalls on CPUs/tasks bei schlechter Reaktion.
- Wiederholte Berichte können dieselbe CPU-Spur oder einen ausgehungerten RCU-Thread zeigen.
Betroffene Umgebung
Linux mit RCU-Stall-Erkennung. Blockaden können in anderem Code, bei Echtzeit-Scheduling oder starker Instrumentierung entstehen.
Erkennbare Meldungen (synthetische Beispiele)
rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:Folgende CPU-/Aufgabenspuren vergleichen; die erkennende CPU ist nicht zwingend die blockierte CPU.
rcu: rcu_preempt kthread starved for 24000 jiffies! g700 f0x0 RCU_GP_WAIT_FQS(3)Echtzeit-Scheduling und Timer-Kontext prüfen; dies ist genauer, als jede RCU-Warnung als fehlerhafte Synchronisationsimplementierung zu deuten.
Mögliche Ursachen
Das sind mögliche Erklärungen, keine bestätigte Diagnose. Mehrere unabhängige Fehler können gleichzeitig vorliegen.
- Code kann keinen Ruhezustand erreichen, Interrupts zu lange abschalten oder einem RCU-Thread Rechenzeit entziehen.
- Timerfehler, ausführliche Konsolenausgabe und Tracing-Aufwand können wie ein RCU-Implementierungsfehler aussehen.
Sicher prüfen
Führe jeweils einen Befehl in der passenden Sitzung aus. Lies zuerst die Erklärung. Großgeschriebene Platzhalter brauchen deine Werte; Werkzeuge und Rechte unterscheiden sich je nach Distribution. Die Website zeigt Befehle an und führt sie niemals aus.
Prüfschritt 1
RCU- und CPU-Spurkontext lesen; Administratorzugriff kann nötig sein. Wiederholte Spuren statt nur einer Überschrift behalten.
journalctl -b -k --no-pager --grep='rcu|RCU|Call Trace|RIP:'Ergebnis einordnen: Gleichbleibende Stack-Frames, Softirq-Zähler und Timer-Meldungen zwischen Berichten vergleichen. Erkennende und verursachende CPU können verschieden sein.
Prüfschritt 2
RCU-Stall-Zeitlimit dieses Kernels lesen, sofern der Parameter existiert; während Beweissicherung nicht verändern.
cat /sys/module/rcupdate/parameters/rcu_cpu_stall_timeoutErgebnis einordnen: Ein sehr niedriger eigener Wert kann kurze Verzögerungen melden. Ein normaler Wert mit wiederholt gleicher Spur stützt die Untersuchung stockenden Fortschritts statt bloßen Zeitlimit-Tunings.
Nächste Schritte nach Befund
Ermittelten Scheduling- oder Tracing-Auslöser entfernen
Beginnen RCU-Warnungen nur mit optionaler Echtzeit-Arbeitslast oder starkem Tracer, dessen dokumentiertes Standard-Scheduling oder reduziertes Tracing vergleichen. Normale RCU-Fortschritte bei aktiver Fehlererkennung prüfen.
Vorsicht: Sicherheitsrelevante Echtzeit-Richtlinien nicht beiläufig ändern. Vorheriges Profil dokumentieren und nur die optionale auslösende Komponente ändern.
Wiederherstellung / Rücknahme: Dokumentiertes Profil bei Bedarf für ein isoliertes Minimalbeispiel wiederherstellen; bekannte blockierende Arbeitslast nicht in täglichen Betrieb zurückbringen.
Hat dir dieser Hinweis geholfen?
Quellen und Prüfung
Diese Anleitung basiert auf Originalquellen von Projekten oder Distributionen und wurde am genannten Datum redaktionell geprüft. Das ist eine Quellenprüfung, kein Nachweis einer auf deiner Hardware reproduzierten Lösung. Log-Beispiele sind synthetische Testdaten. Versionsabhängige Details müssen zur installierten Ausgabe passen.
- RCU CPU stall detector: causes and interpretation (Projekt- oder Distributionsdokumentation)
- Kernel RCU and watchdog command-line options (Projekt- oder Distributionsdokumentation)