rcu_preempt detected stall on CPU

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Soerensen
Beiträge: 10
Registriert: 29.03.2012 12:59:48

rcu_preempt detected stall on CPU

Beitrag von Soerensen » 10.05.2012 11:39:45

Hallo zusammen,
ich hoffe, dass der Beitrag jetzt im richtigen Forum steht...

Kurze Systembeschreibung:
Kernel: 3.2.15-rt26
CPU: i5-2400 mit 3,1 GHz (Quadcore)

Hintergrund:
Ich habe ein Programm geschrieben (hohe Echtzeitpriorität), dass relativ lange laufen kann und die CPU auch während der Laufzeit nicht freigibt. Ist soweit ich informiert bin bei einem Mehrkernsystem kein Problem, zumal ich das Programm an eine CPU (1) binde und auf dieser CPU von mir aus nichts anderes laufen muss.

Problembeschreibung:
Wenn das Programm "kurz" läuft funktioniert alles bestens. Lasse ich es länger laufen, so erhalte ich folgende Information:

Code: Alles auswählen

[  737.688699] INFO: rcu_preempt detected stall on CPU 1 (t=60000 jiffies)
Meinen Nachforschungen zu folge wird dieser Hinweis ausgegeben, wenn auf der CPU 1 ein Fehler aufgetretten ist, bei dem etwas "abgewürgt" wurde. Anschließend wird ein stack dump durchgeführt. (Die Ausgabe meines Programms bestätigt dies durch unrealistische Werte in den Ausgabevariablen.)

Fehlersuche:
Um dem Problem auf die Schliche zu kommen habe ich in /var/log/ die entsprechenden Zeilen der Logdatei rauskopiert:

Code: Alles auswählen

May 10 10:54:05 Optiplex990-149 kernel: [  737.688701] Pid: 1684, comm: meinprogramm Not tainted 3.2.15-rev02-rt26 #3
May 10 10:54:05 Optiplex990-149 kernel: [  737.688703] Call Trace:
May 10 10:54:05 Optiplex990-149 kernel: [  737.688707]  [<c107be33>] ? __rcu_pending+0x66/0x364
May 10 10:54:05 Optiplex990-149 kernel: [  737.688709]  [<c107c42c>] ? rcu_check_callbacks+0x10c/0x128
May 10 10:54:05 Optiplex990-149 kernel: [  737.688712]  [<c103d690>] ? update_process_times+0x2f/0x39
May 10 10:54:05 Optiplex990-149 kernel: [  737.688714]  [<c105710a>] ? tick_sched_timer+0x5b/0x88
May 10 10:54:05 Optiplex990-149 kernel: [  737.688716]  [<c10570af>] ? tick_nohz_handler+0xd2/0xd2
May 10 10:54:05 Optiplex990-149 kernel: [  737.688717]  [<c104d7f4>] ? __run_hrtimer+0xad/0x12f
May 10 10:54:05 Optiplex990-149 kernel: [  737.688719]  [<c104daf6>] ? hrtimer_interrupt+0x116/0x21b
May 10 10:54:05 Optiplex990-149 kernel: [  737.688722]  [<c101652f>] ? smp_apic_timer_interrupt+0x63/0x72
May 10 10:54:05 Optiplex990-149 kernel: [  737.688724]  [<c12b8251>] ? apic_timer_interrupt+0x31/0x38
May 10 10:54:05 Optiplex990-149 kernel: [  737.688727]  [<c12b007b>] ? early_init_intel+0x175/0x1bd
May 10 10:54:05 Optiplex990-149 kernel: [  737.688728]  [<c12b0000>] ? early_init_intel+0xfa/0x1bd
Leider bin ich in Linux nicht ganz so fit, so dass ich mit den Meldungen wenig bzw. nichts anfangen kann.

Mich würde interessieren, wie auf der CPU 1 etwas schief gehen kann, wenn nur ein Programm darauf zugreift und alle andern Aufgaben von den anderen drei Kernen übernommen werden könnten? Oder ob doch noch andere, nicht von mir gestartete, Programme auf alle CPUs zugreifen wollen und somit der Fehler auftritt. Welche sind das und wie kann ich dies unterbinden?

Vielen Dank für eure Hinweise.
Gruß Sören

Soerensen
Beiträge: 10
Registriert: 29.03.2012 12:59:48

Re: rcu_preempt detected stall on CPU

Beitrag von Soerensen » 11.05.2012 15:42:08

Ich habe die Hoffnung noch nicht ganz aufgegeben und noch weiter gesucht.

Unter http://www.lingrok.org/xref/linux-linus ... llwarn.txt findet man hilfreiche Infos zu dem Thema.
Da ich inzwischen durch verschiedene Programmläufe nachweisen konnte, dass die "stall detection" Ausgabe den Sinn meines Progs aushebelt, wollte ich die Warnungen testweise abschalten.
26 Stall-warning messages may be enabled and disabled completely via
27 /sys/module/rcutree/parameters/rcu_cpu_stall_suppress.
Ich habe also in /etc/default/grub den bootparameter rcu_cpu_stall_suppress=0 gesetzt. Und auch unter /sys/modules/rcutree/... wird mir in der Parameterdatei gesagt, dass der Parameter richtig übernommen wird.

Nur leider sind die Messages immer noch da. Wie kann das sein?

Gruße Sören

Gunman1982
Beiträge: 923
Registriert: 09.07.2008 11:50:57
Lizenz eigener Beiträge: MIT Lizenz

Re: rcu_preempt detected stall on CPU

Beitrag von Gunman1982 » 11.05.2012 16:30:49

Soerensen hat geschrieben: Ich habe also in /etc/default/grub den bootparameter rcu_cpu_stall_suppress=0 gesetzt. Und auch unter /sys/modules/rcutree/... wird mir in der Parameterdatei gesagt, dass der Parameter richtig übernommen wird.
Schon

Code: Alles auswählen

echo 1 > /sys/module/rcutree/parameters/rcu_cpu_stall_suppress
versucht? (Als root natürlich)

Soerensen
Beiträge: 10
Registriert: 29.03.2012 12:59:48

Re: rcu_preempt detected stall on CPU

Beitrag von Soerensen » 31.05.2012 10:51:54

Hallo,
genau so gehts! Ich habe den rcutree nicht beachtet...
Grüße Sören

Lunapark
Beiträge: 1
Registriert: 14.06.2016 14:53:09

Re: rcu_preempt detected stall on CPU

Beitrag von Lunapark » 14.06.2016 15:08:37

Hallo zusammen!

Ich bin neu in diesem Forum und auch kein großer Linux-Crack. Ich habe ein ähnliches Problem wie der TE;

Fast bei jedem Bootvorgang bekomme ich auch die o.g. stallwarnung. Da mein Debian (8 - Jessie) ansonsten einwandfrei funktioniert würde ich

echo 1 > /sys/module/rcutree/parameters/rcu_cpu_stall_suppress

auch gerne ausführen und es anschließend in die sysctl.config schreiben, da ich in einem Ubuntuforum von Jemanden gelesen habe, dass das möglich ist und so der Befehl jedes Mal beim booten ausgeführt wird;

http://ubuntuforums.org/showthread.php?t=2036462

Wenn ich aber echo 1 > /sys/module/rcutree/parameters/rcu_cpu_stall_suppress als root ausführe sagt er trotzdem "Keine Berechtigung". Warum? Wie führt man das jetzt aus bzw. trägt es fest als Bootparameter ein?

Ich wäre echt super dankbar wenn mir Jemand helfen könnte, da ich ansonsten sehr zufrieden mit dem Debian bin und alles gut läuft. Nur jedes Mal gefühlte 5 min warten bis ich mich einloggen kann ist echt nervig.

Antworten