• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] - "High resolution timers not available"

suse11

Newbie
Hallo Allerseits,

ich habe ein Problem mit der Implementierung des Preempt-Patch im Linux-Kernel bzw. dem Ergebnis, welches mir der anschließend durchgeführte "Cyclictest" (rt-tests-0.27) liefert. Dieser meldet mir nach dem Aufruf:

“WARNING : High resolution timers not available“

und führt anschließend den Test durch. Die dabei vom gepatchten Kernel erreichten Zeiten entsprechen denen eines ungepatchten Kernels (habe meine Ergebnisse mit denen auf http://rt.wiki.kernel.org/index.php/Cyclictest#Installation dargestellten verglichen). Sie liegen etwas besser als die dort für den normalen Kernel dargestellten Zeiten, was daran liegen kann, dass mein Rechner (P3-700MHz) schneller ist als der dort verwendete P3-400MHz.

Kurz zur Vorgeschichte:

Ich arbeite mit Suse 11 und habe die auf der OSADL-Seite (http://www.osadl.org/Latest-Stable.latest-stable-realtime-linux.0.html) dargestellte letzte stabile Kombination aus Kernel (2.6.24.7) & Preempt-Patch (patch-2.6.24.7-rt17) nach deren Anleitung (HOWTO) implementiert. Ein Problem dabei taucht bereits im Konfigurationsmenü des gepatchten Kernels auf, in dem ich unter anderen folgende Einstellungen getroffen habe:

# make menuconfig
Processor type and features
Timer frequency
[*] 1000 Hz
Preemption Mode
[*] Complete Preemption (Real-Time)
Kernel hacking
[*] Preemption-off Latency Tracer
[*] Scheduling Latency Tracer
[*] Interruptst off critical timings histogram
[*] Preempt off critical timings histogram
[*] Kernel Fubction Tracer (New)
[*] Interrupts-off Latency Tracer (New)

[*] wakeup latencies histogram
[ ] Check for stack overflows

Unter dem Punkt „Kernel hacking“ fehlten aber die beiden Optionen
[ ] Wakeup latency timing
[ ] Latency tracing,
welche ich dementsprechend auch nicht aktivieren konnte. Sind diese Optionen für die Echtzeitfähigkeit unbedingt notwendig, oder gibt es die Einstellungen u.U. auch unter einer anderen Bezeichnung? Könnte das Fehlen dieser Optionen die oben genannte Fehlermeldung bei der Durchführung des "Cyclictest" auslösen?
Welche anderen Möglichkeiten kommen in Frage, um das Problem der nicht ereichbaren „High resolution timers“ zu beheben?

Vielen Dank im Vorraus!
 

Appleonkel

Hacker
Ich denke der Fehler kam bloss von der Timer Frequency
Code:
Processor type and features  --->
[*] High Resolution Timer Support
und Complete Preemption hast du ja auf Real-Time gesetzt, du musst danach eigentlich bloss dem Programm erlauben RT zu benutzen. (root darf alles)
Die dir fehlenden Optionen tauchen bei mir aber auch nicht auf, aber ich kann sagen das ich eine wesentlich bessere Latenz unter openSUSE-11.0 mit dem 2.6.24.7-rt17 habe als mit dem Standardkernel.
 
OP
S

suse11

Newbie
Danke Dir für den Ratschlag, dass war auch mein erster Gedanke aber die "High Resolution Timer Support"-Option ist aktiv, ich hatte nur verpennt sie in meiner ersten Nachricht mit hin zu schreiben...
Was meinst Du denn mit "dem Programm erlauben RT zu benutzen" - ich habe alle Tests als root gemacht - oder muß ich auch als root noch irgendwas aktivieren ?
 

Appleonkel

Hacker
Hier ein Beispiel wie es mit Audio funktioniert:
http://en.opensuse.org/JackLab/Assigning_real-time_priorities_with_PAM
aber als root sollte es generell funktionieren.
Bei mir funktioniert es
Code:
sudo ./cyclictest -t 1 -p 80 -n -i 10000 -l 10000
0.12 0.26 0.27 1/282 24771

T: 0 (24771) P:80 I:10000 C:  10000 Min:      3 Act:    5 Avg:    5 Max:      20
Ich habe dir mal meine kernel-config hochgeladen, aber aufpassen die ist für 64bit
apple_wink.gif
 
OP
S

suse11

Newbie
Ich habe jetzt mal den Cyclictest genauso durchgeführt wie Du es getan hast (./cyclictest -t 1 -p 80 -n -i 10000 -l 10000) und zwar zum Vergleich einmal beim ungepatchten Kernel (2.6.25.5-1.1) und beim gepatchten Preempt-Kernel (2.6.24.7-rt17). Natürlich kam wieder bei beiden Varianten die Warnung "High resolution timers not available" - hier trotzdem die Ergebnisse:
Kernel OHNE Patch: Min: 35 Avg: 2036 Max: 4082
Kernel MIT Preempt-Patch: Min: 87 Avg: 599 Max: 1196

Man kann zwar erkennen das eine Verbesserung um den Faktor 3,x vorliegt, aber die Zeiten liegen meilenweit über denen die auf (http://rt.wiki.kernel.org/index.php/Cyclictest#Installation) dargestellten Zeiten. Dort wird für einen P3 400MHz folgendes angegeben:
Kernel 2.6.16 (OHNE Patch): Min: 24 Avg: 1989 Max: 4043 (-> stimmt ziemlich genau mit meinem Standard-Kernel überein)
Kernel 2.6.16-rt12 (MIT Patch): Min: 6 Avg: 10 Max: 40

Ich denke das der Preempt-Patch an sich funktioniert, aber aus irgend einem Grund die "High resolution timer"(HRT) nicht erkannt/aufgerufen werden. Daher stelle ich mir die Frage ob irgendwo/ irgendwie noch bestimmte Biblioteken geladen/ Pakete installiert werden müssen um den HRT zugänglich zu machen, oder der Cyclictest in einem bestimmten Ordner gestartet werden muss? Vielleicht muß auch irgend eine Einstellung bzgl. des Schedulers getroffen werden?
 
OP
S

suse11

Newbie
Leider wird kein hres angezeigt:

Code:
grep hres /proc/timer_list
  .hres_active   : 0

Den von Dir genannten Kernel habe ich noch nicht getestet. Ich denke aber auch das es nur noch eine Kleinigkeit ist die mir bei meiner jetzigen Lösung fehlt, denn der Patch funktioniert ja, er wird halt durch den inaktiven hres gebremmst...
 

Appleonkel

Hacker
Und du bist sicher das High Resolution Timer im laufenden Kernel aktiviert ist?
Code:
zgrep HIGH_RES /proc/config.gz
CONFIG_HIGH_RES_TIMERS=y
Vielleicht hat jemand anders noch eine andere Idee?
 
OP
S

suse11

Newbie
Ja da bin ich mir sicher, da ich einerseits diese Option im Configmenü aktiviert habe und andererseits bei der Eingabe Deiner Befehlszeile genau CONFIG_HIGH_RES_TIMERS=y als Reaktion kommt...
 
Oben