Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:linux:cyclictest:start [2017-01-18 15:04] grafsoftware:linux:cyclictest:start [2019-10-22 14:33] (aktuell) graf
Zeile 2: Zeile 2:
 //Cyclictest// startet mehrere Tasks, welche periodisch aufgerufen werden. Die effektive Periodendauer wird gemessen und der Jitter wird angezeigt. //Cyclictest// startet mehrere Tasks, welche periodisch aufgerufen werden. Die effektive Periodendauer wird gemessen und der Jitter wird angezeigt.
  
-  * [[https://rt.wiki.kernel.org/index.php/Cyclictest | Projektwebseite]]+  * [[https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start?s[]=cyclictest | Projektwebseite]]
  
 Ein Vortrag von der "//Embedded Linux Conference 2013//" bietet einen guten Einstieg für die Benutzung des Cyclictest. Der Vortrag kann auf [[https://www.youtube.com/watch?v=f_u4r6ehZKY | Youtube]] angeschaut werden. Die PPT Folien stehen {{:software:linux:cyclictest:cyclictest_frank_rowand_ppt.pdf | hier}} zum Download bereit. Ein Vortrag von der "//Embedded Linux Conference 2013//" bietet einen guten Einstieg für die Benutzung des Cyclictest. Der Vortrag kann auf [[https://www.youtube.com/watch?v=f_u4r6ehZKY | Youtube]] angeschaut werden. Die PPT Folien stehen {{:software:linux:cyclictest:cyclictest_frank_rowand_ppt.pdf | hier}} zum Download bereit.
  
 ===== Installation ===== ===== Installation =====
-Siehe [[https://rt.wiki.kernel.org/index.php/Cyclictest#Installation Projektwebseite#Installation]]+Siehe [[https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/rt-tests#compile-and-install RT-Tests]]
  
-Bei der Compile-Fehlermeldung "src/cyclictest/rt_numa.h:23:18: fatal error: numa.h: No such file or directory" siehe [[https://rt.wiki.kernel.org/index.php/Cyclictest#Compile_failure_because_numa.h_can.27t_be_found Projektwebseite]]+Bei der Compile-Fehlermeldung "src/cyclictest/rt_numa.h:23:18: fatal error: numa.h: No such file or directory" siehe [[https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/rt-tests#compile-and-install Compile and install]]
  
 ==== Crosscompilieren für MPC 5200 ==== ==== Crosscompilieren für MPC 5200 ====
Zeile 32: Zeile 32:
 ==== Schnelle Messung ==== ==== Schnelle Messung ====
 <code>sudo ./cyclictest -p 80 -t5 -n</code> <code>sudo ./cyclictest -p 80 -t5 -n</code>
-Erzeugt 5 Threads mit höchster Priorität von **-**80 (-p) mit der Verwendung von nano_sleep() (-n). Genauere Informationen siehe [[https://rt.wiki.kernel.org/index.php/Cyclictest#Run_it | Projektwebseite#Run_it]]+Erzeugt 5 Threads mit höchster Priorität von **-**80 (-p) mit der Verwendung von nano_sleep() (-n). Genauere Informationen siehe [[https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start?s%5b%5d=cyclictest | Projektwebseite]]
  
 ==== Histogramm ==== ==== Histogramm ====
Zeile 53: Zeile 53:
  
 ==== Optionen ==== ==== Optionen ====
-Die vollständige Dokumentation über die Optionen findet sich auf der [[https://rt.wiki.kernel.org/index.php/Cyclictest#Run_it | Webseite]] des Cyclictest. Die wichtigsten Optionen werden in der folgenden Liste beschrieben:+Die vollständige Dokumentation über die Optionen findet sich auf der [[https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start?s%5b%5d=cyclictest | Webseite]] des Cyclictest. Die wichtigsten Optionen werden in der folgenden Liste beschrieben:
  
 | -n          |use clock_nanosleep; clock_nanosleep wird von den meisten RT-Anwendungen verwendet| | -n          |use clock_nanosleep; clock_nanosleep wird von den meisten RT-Anwendungen verwendet|
Zeile 63: Zeile 63:
 | -m          |Der Cyclictest reserviert sich den benötigten Speicher zu beginn. Der Speicher muss nicht dynamisch zugewiesen werden.| | -m          |Der Cyclictest reserviert sich den benötigten Speicher zu beginn. Der Speicher muss nicht dynamisch zugewiesen werden.|
  
-===== Zu erwartende Ergebnisse ===== +===== Messungen =====
-Neben den unten stehenden Messungen können auch die Messungen von [[https://www.osadl.org | Open Source Automation Development Lab]] als Referenz verwendet werden. Das OSADL hat ein QA Rack, in dem diverse Prozessoren bezüglich Latenz ausgemessen werden. Die [[https://www.osadl.org/Hardware-overview.qa-farm-hardware.0.html | Hardwareübersicht]] zeigt alle Prozessoren, die gerade gemessen werden. Zu beachten ist noch, dass die von OSADL verwendeten Kernel speziell gepatched sind. Die Patches sind aber veröffentlicht.+
  
 ==== MPC 5200 ==== ==== MPC 5200 ====
Zeile 74: Zeile 73:
 and ARM boards for embedded systems]] sogar noch bessere Ergebnisse auf. Laut diesem Paper ist der maximale Jitter gerade mal 45us. Allerdings wird nicht genau beschrieben, wie die Messung gemacht wurde. Solche Ergebnisse konnten in der NTB auch nicht reproduziert werden. and ARM boards for embedded systems]] sogar noch bessere Ergebnisse auf. Laut diesem Paper ist der maximale Jitter gerade mal 45us. Allerdings wird nicht genau beschrieben, wie die Messung gemacht wurde. Solche Ergebnisse konnten in der NTB auch nicht reproduziert werden.
  
-=== Messungen === +Die folgenden Messungen werden teilweise mit künstlicher Last wie //CacheCalibrator// oder //dd// durchgeführt. Mehr dazu unter [[software:linux:stresstests:start|Künstliche Belastungen für ein RT-System]].
-Die folgenden Messungen werden teilweise mit künstlicher Last wie //CacheCalibrator// oder //dd// durchgeführt. Mehr dazu unter [[software:linux:preempt_rt:kuenstlichelast|Künstliche Belastungen für ein RT-System]]+
 == Nur Cyclictest, ohne zusätzliche Last == == Nur Cyclictest, ohne zusätzliche Last ==
 <code># ./cyclictest -p 80 -t5 -n</code> <code># ./cyclictest -p 80 -t5 -n</code>
Zeile 110: Zeile 108:
  
 Dank der hohen Priorität des Cyclictest von -80 wird er vom dd-Prozess, der eine Priorität von +20 hat, nicht beeinflusst. Dank der hohen Priorität des Cyclictest von -80 wird er vom dd-Prozess, der eine Priorität von +20 hat, nicht beeinflusst.
- 
  
 ==== x86 ==== ==== x86 ====
 Für folgende Tests wurde ein Laptop mit folgenden Kenndaten verwendet: Für folgende Tests wurde ein Laptop mit folgenden Kenndaten verwendet:
-  * 4x Intel Core i7-4600 CPU @ 2.1GHz+  * 4x Intel Core i7-4600U CPU @ 2.1GHz
   * 16GB RAM   * 16GB RAM
   * Linux Mint 17.3 Rosa   * Linux Mint 17.3 Rosa
Zeile 120: Zeile 117:
 Linux Mint 17.3 Rosa wird mit einem 3.19 Kernel ausgeliefert. Für den 3.19 Kernel existiert aber kein RT-Patch. Für die RT-Tests wurde deshalb ein 3.18 Kernel verwendet. Mit dem 3.18 Kernel funktionierte das System aber nicht mehr einwandfrei. Es konnte zum Beispiel keine Netzwerkverbindung mehr aufgebaut werden. Linux Mint 17.3 Rosa wird mit einem 3.19 Kernel ausgeliefert. Für den 3.19 Kernel existiert aber kein RT-Patch. Für die RT-Tests wurde deshalb ein 3.18 Kernel verwendet. Mit dem 3.18 Kernel funktionierte das System aber nicht mehr einwandfrei. Es konnte zum Beispiel keine Netzwerkverbindung mehr aufgebaut werden.
  
-=== Messungen === 
 == 3.19.0-32-generic; Idle == == 3.19.0-32-generic; Idle ==
 <code>./cyclictest -p 80 -t5 -n</code> <code>./cyclictest -p 80 -t5 -n</code>
Zeile 152: Zeile 148:
 Das Histogramm zeigt, dass die meisten Latenzen kleiner als 250us sind. Allerdings hat es auch einige Ausreisser  von bis zu 900us zu erkennen. Die Latenzen von 40us bis 250us sind vermutlich auf die // SMIs//, welche typisch für x86 Architekturen sind, zurückzuführen. Um die Ausreisser zu erklären sind weitere Untersuchungen notwendig. Das Histogramm zeigt, dass die meisten Latenzen kleiner als 250us sind. Allerdings hat es auch einige Ausreisser  von bis zu 900us zu erkennen. Die Latenzen von 40us bis 250us sind vermutlich auf die // SMIs//, welche typisch für x86 Architekturen sind, zurückzuführen. Um die Ausreisser zu erklären sind weitere Untersuchungen notwendig.
  
-=== Schlussfolgerung === +===== Diskussion ===== 
-Die Messungen scheinen nicht auf eine brauchbare RT-Performance schliessen zu lassen. Besonders die sporadisch auftretenden Ausreisser stören. +Neben den ausgeführten Messungen können auch die Messungen von [[https://www.osadl.org | Open Source Automation Development Lab]] als Referenz verwendet werden. Das OSADL hat ein QA Rack, in dem diverse Prozessoren bezüglich Latenz ausgemessen werden. Die [[https://www.osadl.org/Hardware-overview.qa-farm-hardware.0.html | Hardwareübersicht]] zeigt alle Prozessoren, die gerade gemessen werden. Zu beachten ist noch, dass die von OSADL verwendeten Kernel speziell gepatched sind. Die Patches sind aber veröffentlicht. 
- +Unsere Messungen der x86 Plattform scheinen nicht auf eine brauchbare RT-Performance schliessen zu lassen. Besonders die sporadisch auftretenden Ausreisser stören. Die Messungen von OSADL zeigen aber, dass auch i7-Prozessoren eine gute RT-Performance haben können. Der {{:software:linux:cyclictest:intel_r_core_tm_i7-3820qm_cpu_2.70ghz_linux_3.18.11-rt7.gif?linkonly | Latency Plot }} von OSADL des [[https://www.osadl.org/Profile-of-system-in-rack-9-slot-2.qa-profile-r9s2.0.html?shadow=0|i7-3615QE]] zeigt zum Beispiel eine viel bessere RT-Performance. Dies liegt vermutlich an den von OSADL verwendeten Patches und Kernelkonfiguration. Der oben gemessene Prozessor hat möglicherweise aber auch eine schlechtere RT-Performance, weil es sich beim i7-4600U um einen //Ultra-low power// Prozessor handelt (siehe [[http://www.intel.com/content/www/us/en/processors/processor-numbers.html|Externer Link]]). Ein //Ultra-low power// Prozessor wurde von OSADL nicht gemessen. 
-Die Messungen von OSADL scheinen aber zu zeigen, dass auch i7-Prozessoren eine gute RT-Performance haben können. Der {{:software:linux:cyclictest:intel_r_core_tm_i7-3820qm_cpu_2.70ghz_linux_3.18.11-rt7.gif?linkonly | Latency Plot }} von OSADL des [[https://www.osadl.org/Profile-of-system-in-rack-9-slot-2.qa-profile-r9s2.0.html?shadow=0|i7-3615QE]] zeigt zum Beispiel eine viel bessere RT-Performance. Dies liegt vermutlich an den von OSADL verwendeten Patches und Kernelkonfiguration. Der oben gemessene Prozessor hat möglicherweise aber auch eine schlechtere RT-Performance, weil es sich beim i7-4600U um einen //Ultra-low power// Prozessor handelt (siehe [[http://www.intel.com/content/www/us/en/processors/processor-numbers.html|Externer Link]]). Ein //Ultra-low power// Prozessor wurde von OSADL nicht gemessen. +