POSIX Echtzeit: Kernel 2.6 und Preempt-RT



Ähnliche Dokumente
Architektur Verteilter Systeme Teil 2: Prozesse und Threads

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Dokumentation Schedulingverfahren

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Einführung in die Programmierung

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

SJ OFFICE - Update 3.0

Dämon-Prozesse ( deamon )

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Zeichen bei Zahlen entschlüsseln

Domänenanalyse Threadverwaltung/Scheduling

Windows 8 Lizenzierung in Szenarien

Professionelle Seminare im Bereich MS-Office

Algorithmen und Datenstrukturen

Anleitung zum Online-Monitoring für Installateure

Vorbereitung zur Prüfung Echtzeitbetriebssysteme

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Reporting Services und SharePoint 2010 Teil 1

CCI Swing Strategie. Cut your losers short and let your winners run

Updatehinweise für die Version forma 5.5.5

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Systeme 1. Kapitel 5. Scheduling

Internet online Update (Internet Explorer)

Veranstaltungsbelegung in QIS/LSF -- Leitfaden für BW-Studierende --

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Elternzeit Was ist das?

Fachhochschule Deggendorf Platzziffer:...

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Technische Informatik II

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Objektorientierte Programmierung

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

3.14 Die Programmieroberfläche Programmierung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Deutsches Forschungsnetz

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Die Post hat eine Umfrage gemacht

Programmierkurs Java

Anleitung zur Nutzung des SharePort Utility

Binärdarstellung von Fliesskommazahlen

Modernes Vulnerability Management. Christoph Brecht Managing Director EMEA Central

Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November

Du hast hier die Möglichkeit Adressen zu erfassen, Lieferscheine & Rechnungen zu drucken und Deine Artikel zu verwalten.

Fragen und Antworten zum Thema. Lieferanspruch

9 Auto. Rund um das Auto. Welche Wörter zum Thema Auto kennst du? Welches Wort passt? Lies die Definitionen und ordne zu.

Echtzeitanforderung und Linux

Tipps und Tricks zu Netop Vision und Vision Pro

SEP 114. Design by Contract

Statuten in leichter Sprache

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Windows XP Jugendschutz einrichten. Monika Pross Molberger PC-Kurse

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

32-Bit Microcontroller based, passive and intelligent UHF RFID Gen2 Tag. Zürcher Fachhochschule

Info zum Zusammenhang von Auflösung und Genauigkeit

Leichte-Sprache-Bilder

Übungen Programmieren 1 Felix Rohrer. Übungen

Datensicherung. Beschreibung der Datensicherung

Profi Care. Ihr Vorteil: 100% Leistung für 50% Beitrag! Profi Care Berufsunfähigkeitsversicherung mit Einsteigeroption

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Wichtiges Thema: Ihre private Rente und der viel zu wenig beachtete - Rentenfaktor

Letzte Krankenkassen streichen Zusatzbeiträge

Wann ist eine Software in Medizinprodukte- Aufbereitungsabteilungen ein Medizinprodukt?

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Eine Anwendung mit InstantRails 1.7

ARAkoll 2013 Dokumentation. Datum:

Whitebox-Tests: Allgemeines

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

Wie optimiert man die Werbungserkennung von Ad- Detective?

Was ist Sozial-Raum-Orientierung?

Zusatzmodul Lagerverwaltung

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Kundenbefragung als Vehikel zur Optimierung des Customer Service Feedback des Kunden nutzen zur Verbesserung der eigenen Prozesse

Bedienungsanleitung für den Online-Shop

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Was meinen die Leute eigentlich mit: Grexit?

Vorkurs C++ Programmierung

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Grundlagen für den erfolgreichen Einstieg in das Business Process Management SHD Professional Service

Ideen für die Zukunft haben.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

QR-FUNKTION. Informationen über zu erledigende Aufgaben an das Reinigungspersonal senden.

Konfigurationsbeispiel ZyWALL USG

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

proles-login. Inhalt [Dokument: L / v1.0 vom ]

Release Note: Agent

Marketing Funnel INSIDERWISSEN INSIDERWISSEN: MARKETING FUNNEL

Transkript:

POSIX Echtzeit: Kernel 2.6 und Preempt-RT Slide 1 - http://www.pengutronix.de - 21.01.2007

Echtzeit-Systemplanung Wenn das zeitliche Verhalten spezifiziert ist, kann auch spezifiziert werden, welche Applikationsteile Echtzeit verlangen und welche nicht Nicht alle anderen Teile der Applikation müssen ebenfalls Echtzeitverhalten besitzen, wenn es nur ein einzelner Teil erfordert! Aufteilung der Aufgaben in Bereiche, die Echtzeit erfordern und die ohne Echtzeit auskommen Verteilung der Aufgabe in Bereiche im Kernel und Userspace Die Aufteilung der Aufgaben im Userspace muss nicht zwangsläufig zu getrennten Prozessen führen, sondern kann mittels Threads auch in einem Prozess realisiert werden Systeminterne Aufgaben (z.b. Interrupts) müssen auf Echtzeittauglichkeit und richtige Prioritäten geprüft sein Slide 2 - http://www.pengutronix.de - 21.01.2007

POSIX: Scheduler Prioritäten vergeben Ändern der eigenen Priorität aus einem Programm heraus: struct sched_param param; [...] param.sched_priority = -20; pthread_setschedparam(thread, SCHED_OTHER, &param); Programme, die Prioritäten erhöhen, müssen als Root ausgeführt werden! Damit lassen sich Prioritäten unter der Fair Queueing Strategie festlegen Dieses Beispiel erhöht nur die Priorität, verwendet aber weiterhin das Fair Queueing Verfahren! Die möglichen Prioritäten liegen zwischen -20 (hoch) bis +19 (niedrig) ( Nice-Level ) Slide 3 - http://www.pengutronix.de - 21.01.2007

POSIX: Scheduling Strategie ändern Auf die gleiche Weise läßt sich die Scheduling Strategie ändern: struct sched_param param; [...] param.sched_priority = 50; pthread_setschedparam(thread, SCHED_RR, &param); Programme, die die Scheduler Strategie wechseln, müssen als Root ausgeführt werden! Dieses Beispiel erhöht die Priorität und wechselt in das Priority Queueing Verfahren (Round Robin) Echtzeit-Prioritäten liegen zwischen 1 (niedrig) und 99 (hoch) Slide 4 - http://www.pengutronix.de - 21.01.2007

Wie steuert man den zeitlichen Ablauf? POSIX bietet mehrere Möglichkeiten für zeitliche Steuerung: nanosleep(), clock_nanosleep() Interval Timer Datenstruktur zur Definition von Zeiten: struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }; Beobachtung: Die zeitliche Auflösung in POSIX beträgt 1 ns Das bedeutet aber nicht, daß man Verzögerungen mit dieser Genauigkeit auch realisieren kann! Slide 5 - http://www.pengutronix.de - 21.01.2007

Verzögerung mit clock_nanosleep() Hochauflösende Sleeps mit spezifizierter Clock: #include <time.h> int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); Mit flags=timer_abstime kann festgelegt werden, ob rqtp ein Intervall (0) oder die absolute Zeit einer Clock (1) spezifiziert Funktion kann durch Signal unterbrochen werden In rmtp steht nach Ausführung der Funktion der Wert bis zum wirklichen Erreichen der Ablaufzeit, falls nicht NULL übergeben wurde Return Value: 0: Zeit ist korrekt abgelaufen Slide 6 - http://www.pengutronix.de - 21.01.2007

Clocks Es gibt mindestens folgende Clocks: CLOCK_REALTIME: systemweite Echtzeituhr, nicht monoton CLOCK_MONOTONIC: ist garantiert monoton CLOCK_PROCESS_CPUTIME_ID: per Prozeß Timer der CPU CLOCK_THREAD_CPUTIME_ID: Threadspezifische CPU Time Ermitteln der Auflösung einer Clock: int clock_getres(clockid_t clk_id, struct timespec *res); Vorsicht: Auflösung sagt nichts über Echtzeiteigenschaften! Slide 7 - http://www.pengutronix.de - 21.01.2007

Verzögerungen mit clock_nanosleep() Verzögern des Programmablaufs um eine bestimmte Zeit: [...] /* change priority */ [...] while (!endme) { /* do something */... /* calc next wakeup */... } if (clock_nanosleep(id,timer_abstime,&next,null)) /* Fehlerbehandlung */ Slide 8 - http://www.pengutronix.de - 21.01.2007

Periodischer Thread mit Interval Timer Periodisches Starten einer Programmfunktion: void my_period_thread(union sigval val){ [...] /* do something */ } int main(){ [...] struct itimerspec itimer = {.it_interval.tv_usec=500,.it_value.tv_sec=1 }; [...] timer_settime(timid,0,&itimer,null); } Startet my_period_thread() periodisch unabhängig von dessen eigener Laufzeit (als eigenständigen Thread) Slide 9 - http://www.pengutronix.de - 21.01.2007

Probleme mit Echtzeit-Verhalten Obwohl ein RT Preempt System hinreichende Eigenschaften besitzt, um harte Echtzeit-Programme unter Linux zu implementieren, muß man aufpassen, daß der Determinismus nicht beschädigt wird! Problem SMI: Moderne x86 Prozessoren haben System Management Mode Interrupt, der hochpriorer als der NMI ist! Problem Paging: Das Auslagern von Speicherseiten ins Swap oder Verwerfen von ReadOnly-Pages bedeutet, daß bei Bedarf die Seiten langsam zurückgelesen und die TLBs aktualisiert werden müssen. Abhilfe: mlock(), mlockall() Slide 10 - http://www.pengutronix.de - 21.01.2007

Determinismus erhalten Unterteilen der gesamten Applikation in einen Teil mit Echtzeitanforderung und einen ohne. Der Nicht-Echtzeitteil sollte: niemals Interrupte sperren möglichst keine Systemresourcen mit dem Echtzeitteil teilen, die jeweils nur exklusiv besessen werden dürfen Der Echtzeitteil sollte: auf den kleinsten möglichen Programmteil eingeschränkt sein frei von Beschränkungen sein niemals andere Systemresourcen als Rechenleistung und Speicher verwenden keinen Speicher zur Laufzeit anfordern sich gegen Auslagern schützen Slide 11 - http://www.pengutronix.de - 21.01.2007

Entkoppeln Trotzdem muß meistens zwischen beiden Programmteilen eine Kommunikation stattfinden. Lösungsansatz: Asynchron entkoppeln mit den Mitteln der Inter Process Communication (IPC) Messages POSIX Message Queues Native Messages Ringpuffer Shared Memory Nachteil: Änderungen müssen per Polling detektiert werden Slide 12 - http://www.pengutronix.de - 21.01.2007

Messungen Testlauf auf einem Standard 2.6.18er Kernel (ixp425, big endian ARM) $ cyclictest -p 80 -t 5 -n T: 0 ( 297) P:80 I: 1000 C: 34803 Min: 6376 Act:313224359 Avg:156615364 Max:313224359 T: 1 ( 298) P:79 I: 1500 C: 34803 Min: 6256 Act:295823221 Avg:147914728 Max:295823221 T: 2 ( 299) P:78 I: 2000 C: 34803 Min: 6236 Act:278422198 Avg:139214206 Max:278422198 T: 3 ( 300) P:77 I: 2500 C: 34803 Min: 6223 Act:261021182 Avg:130513690 Max:261021182 T: 4 ( 301) P:76 I: 3000 C: 34803 Min: 6209 Act:243620166 Avg:121813175 Max:243620166 I: Soll-Verzögerung in µs C: Anzahl Durchläufe Min: Minimale Abweichung (von der Sollzeit) Act: Aktuelle Abweichung Avg: Durchschnittliche Abweichung Max: Maximale Abweichung Slide 13 - http://www.pengutronix.de - 21.01.2007

Messungen Testlauf auf einem RT-Preempt 2.6.18er Kernel mit HR-Timer (ixp425, big endian ARM) $ cyclictest -p 80 -t 5 -n -l 10000 T: 0 ( 253) P:80 I: 1000 C: 10000 Min: 18 Act: 22 Avg: 25 Max: 138 T: 1 ( 254) P:79 I: 1500 C: 6668 Min: 21 Act: 27 Avg: 25 Max: 129 T: 2 ( 255) P:78 I: 2000 C: 5001 Min: 22 Act: 57 Avg: 26 Max: 133 T: 3 ( 256) P:77 I: 2500 C: 4001 Min: 20 Act: 46 Avg: 25 Max: 116 T: 4 ( 257) P:76 I: 3000 C: 3334 Min: 20 Act: 88 Avg: 24 Max: 97 I: Soll-Verzögerung in µs C: Anzahl Durchläufe Min: Minimale Abweichung (von der Sollzeit) Act: Aktuelle Abweichung Avg: Durchschnittliche Abweichung Max: Maximale Abweichung Slide 14 - http://www.pengutronix.de - 21.01.2007

Zusammenfassung Soft-Realtime wird mit ausreichender Auflösung von der POSIX API bereitgestellt Es sind keine besonderen Umgebungen/Werkzeuge/Bibliotheken erforderlich, um davon Gebrauch zu machen POSIX konforme Programme können ohne Änderungen weiter verwendet werden Preempt-RT implementiert auch die Genauigkeit für HRT und liefert die PI Mutexe Echtzeit-Eigenschaften können nachträglich hinzugefügt werden, teilweise ohne das Programm anpassen zu müssen Echtzeit-Eigenschaften lassen sich aus dem Userspace heraus verwenden, aber man muß aufpassen, was man tut Slide 15 - http://www.pengutronix.de - 21.01.2007