Linux jako real-time systém. Red Hat Czech Michal Schmidt Duben 2009

Podobné dokumenty
VYUŽITÍ PYTHONU PRO REALTIMOVÉ ŘÍZENÍ PERIFERIÍ

Operační systémy pro systémy sběru dat (=DAQ systems). Vývoj aplikačních programů. Operační systémy pro DAQ RTOS VxWorks Windows CE RTX LabVIEW RT

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Služba ve Windows. Služba (service) je program

ÚVOD DO OPERAČNÍCH SYSTÉMŮ

OS Plánování procesů

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Principy operačních systémů. Lekce 1: Úvod

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Stavba operačního systému

Procesy a vlákna (Processes and Threads)

Petr Holášek / 1 of 21

SWI 075 Linux Kernel. Úvod

Poslední aktualizace: 25. května 2017

Ovladače pro Windows. Ovladače Windows A4M38KRP. Str. 1

Poslední aktualizace: 21. května 2015

Přidělování CPU Mgr. Josef Horálek

Principy operačních systémů. Lekce 4: Správa procesů

Windows a real-time. Windows Embedded

Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Management procesu I Mgr. Josef Horálek

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Vlákna Co je to vlákno?

Paralelní programování

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 11. březen, 2011

PB002 Základy informačních technologií

OS MP, RT a vestavěné systémy

Přednáška. Implementace procesů/vláken. Plánování vláken. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Von Neumannovo schéma

07. Plánování procesů Deadlock. ZOS 2006, L. Pešička

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Procesy a vlákna - synchronizace

Co mi to tu vlastně běží?

Úvod do operačního systému Linux Mgr. Josef Horálek

Programování systémů reálného času A3M35PSR, A4B35PSR

Principy operačních systémů. Lekce 6: Synchronizace procesů

Paralelní programování

Operační systémy. Tomáš Hudec.

Když se Linux nevejde. Jiné operační systémy Lenka Kosková Třísková, LinuxDays2018

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška III. 7. listopad, / 23

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Principy operačních systémů. Lekce 2: Správa paměti

Firmware řídící jednotky stejnosměrného generátoru

Metody připojování periferií BI-MPP Přednáška 2

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Vláknové programování část I

Operační systémy. Přednáška 3: Plánování procesů a vláken

Přerušovací systém s prioritním řetězem

Přidělování paměti II Mgr. Josef Horálek

Definice OS. Operační systém je základní programové vybavení počítače, nezbytné pro jeho provoz.

Automatická regulace spojité řízení (P, PI, PD, PID), nespojité řízení, fuzzy řízení,

vjj 1. Priority. Dispatcher

Paralelní programování

Ukázka zkouškové písemka OSY

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

ZOS OPAKOVÁNÍ. L. Pešička

ČVUT - Fakulta Elektrotechnická. Bakalářská práce Použití OS Linux pro měřicí aplikace. Jakub Kocourek

Red Hat Enterprise Virtualization

Operační systémy. Přednášky pro výuku předmětu. I ng. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003

Od virtualizace serverů k virtualizaci desktopů. Nebo opačně? Jaroslav Prodělal, OldanyGroup VMware VCP, consultant

Předmět: Operační systémy

Systémy pro sběr a přenos dat

Virtualizace. Lukáš Krahulec, KRA556

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ ANALÝZA CHOVÁNÍ REALTIME LINUX OS PRO MODULY ARM REAL TIME LINUX LATENCY ANALYSIS

Operační systémy. Tomáš Vojnar IOS 2010/2011. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Specifikace předmětu veřejné zakázky

Výběr zdrojů, zadávání a správa úloh

Logická organizace paměti Josef Horálek

Vybrané, speciální zkoušky: automobilový průmysl

ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Fakulta elektrotechniky a komunikačních technologií Vysoké učení technické v Brně OBSAH 7 1.

Přednáška 11. Historie MS Windows. Architektura Windows XP. Grafické a znakové rozhraní. Úlohy, procesy a vlákna.

Vývoj software pro Linuxové distribuce. Installfest Praha,

Operační systém. Logické prostředky výpoč etního systému jsou:

IT ESS II. 1. Operating Systém Fundamentals

3. Počítačové systémy

MetaCentrum - Virtualizace a její použití

Procesy a vlákna Mgr. Josef Horálek

Přidělování zdrojů (prostředků)

Operační systémy. Tomáš Vojnar IOS 2014/2015. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

udev a kamarádi... Středisko UN*Xových technologií

Lekce 7 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux

OPS Paralelní systémy, seznam pojmů, klasifikace

03. Synchronizace procesů. ZOS 2006, L. Pešička

Činnost počítače po zapnutí

Rozdělení operačních systémů

Vzájemné vyloučení procesů

09. Memory management. ZOS 2006, L.Pešička

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Principy operačních systémů. Lekce 7: Obrana proti deadlocku

Určení real-time odezvy OS Microsoft Windows CE

Diplomová práce Komparativní analýza multitaskingových operačních systémů pro embedded aplikace

Zvýšení spolehlivosti a diagnostika operačních systémů pracujících v reálném čase

Transkript:

Linux jako real-time systém Red Hat Czech Michal Schmidt mschmidt@redhat.com Duben 2009

Část I Úvod do real-time

Úvod do real-time 1 Real-time úloha 2 Soft vs. hard real-time 3 Real-time operační systémy (RTOS)

Section 1 Real-time úloha

Real-time úloha Kdy se jedná o real-time problém Na zpracování jsou kladena časová omezení Výpočet musí být dokončen před časovým limitem (deadline) Překročení deadline se považuje za chybu Real-time neznamená dosáhnout co nejvyššího výkonu

Real-time úloha Užitková funkce Užitečnost výsledku v čase

Section 2 Soft vs. hard real-time

Soft vs. hard real-time Rozdíl z hlediska případných následků nedodržení deadline Hard RT při selhání může být ohroženy životy, zdraví, nebo můžou vzniknout velké škody Soft RT nedodržení deadline není fatální, zhoršená kvalita produktu (Ale jsou i jiné pohledy na rozdíl mezi hard a soft RT.)

Soft vs. hard real-time Co není nutně měřítkem hard RT Velikost časových konstant nehraje důležitou roli při rozlišení soft a hard RT. Není pravda, že hard RT úlohy mají vždy krátké deadline. Hard RT úlohy můžou být i relativně pomalé Stroj se přehřeje, když se chlazení nezapne do 1 minuty Soft RT úloha naopak s krátkou deadline Čtení příchozích dat ze sít ové karty je vhodné stihnout ve zlomku sekundy

Soft vs. hard real-time Příklady RT úloh Zpracování audio/video Měření a získávání dat Řízení (logické, PID,... ) Průmyslová automatizace Robotika Lékařské stroje Auta...

Section 3 Real-time operační systémy (RTOS)

Real-time operační systémy (RTOS) Úplně nejlepší RTOS Nejlepší RTOS == obejít se úplně bez OS ;-) HW vyhrazený pouze pro danou úlohu specializované obvody mikrokontrolery Snadno zaručíme předvídatelnost Žádné další běžící procesy Velmi vhodné pro jednodušší úlohy Ale nemáme pohodĺı a výhody OS

Real-time operační systémy (RTOS) Operační systémy pro obecné účely OS pro univerzální účely (jako Linux) Většinou optimalizované na vysoký celkový výkon Předvídatelnost je až druhořadá Mohou poskytovat real-time služby, ale bez záruk (best-effort) funkce POSIX real-time (SCHED FIFO, SCHED RR,... ) Pro mnohé soft RT úlohy stačí

Real-time operační systémy (RTOS) Real-time operační systém OS specializovaný na real-time úlohy Při správném použití dokáže poskytnout záruky, že dodržíme deadline Předvídatelnost a přesné časování jsou ceněny více než vysoký výkon Zajímavé je znát chování v nejnepříznivějším stavu (worst-case) Používá real-time plánovač procesů (scheduler) Preemptivní plánovač podle priorit Nejbližší deadline nejdříve (EDF) Rate-Monotonic Scheduler

Real-time operační systémy (RTOS) Příklady RTOS Free software Speciální: ecos, FreeRTOS, TRON,... založené na Linuxu: RTLinux, RTAI, Xenomai, Linux + realtime-preempt patch Proprietární LynxOS, QNX, VxWorks, PikeOS, Windows CE, Win+RTX...

Real-time operační systémy (RTOS) Měřítka RTOS Důležité hodnoty jsou interrupt latency (čekací doba přerušení) vyvoláno přerušení; za jak dlouho se spustí jeho obslužná rutina? scheduling latency (čekací doba plánování) proces s nejvyšší prioritou je připraven k běhu; za jak dlouho dostane přidělen CPU? jitter (chvění) nechtěná proměnlivost periody

Real-time operační systémy (RTOS) RTLinux RTLinux (V. Yodaiken, FSMLabs, nyní Wind River) První snaha dostat Linux do světa RT RTLinux Free, RTLinux Pro Malé RT jádro Linux běží jako proces s nízkou prioritou Patentováno kontroverzní Real-time programy jsou vlastně moduly pro RTLinux jádro, používají jeho API Ostatní procesy běží pod Linux jádrem. Komunikace RT ne-rt prostřednictvím FIFO nebo sdílené paměti

Real-time operační systémy (RTOS) Xenomai Má za cíl poskytovat API tradičních RTOS, pro snadné portování programů Pod Linuxem je nanokernel Adeos/I-pipe Různé skiny poskytují různá API pro real-time procesy POSIX, psos+, VxWorks, RTAI,... Plánuje se i možnost běhu na Linuxu s realtime-preempt

Real-time operační systémy (RTOS) Obojí jsou řešení s duálním kernelem Vlastnosti řešení se dvěma kernely: Výborné nízké latence (desítky µs) pro RT procesy Speciální API pro RT programy, nejsou to normální procesy v Linuxu. Chtěli bychom RT procesy jako normální linuxové programy v userspace.

Část II RT-preempt

RT-preempt 4 Preemptivní jádro 5 RT-preempt patch

Section 4 Preemptivní jádro

Preemptivní jádro Preemptivní jádro Linux odjakživa plánoval procesy v userspace preemptivně Až po Linux 2.4.x kooperativní multitasking pro kód v jádře Práce na škálovatelnosti v SMP jemnější zamykání v jádře Můžeme preemptnout proces v jádře, pokud zrovna není v kritické sekci! Nelze když: drží spinlock, přistupuje k per-cpu proměnným,... Linux 2.6 preemptivní jádro (volba CONFIG PREEMPT)

Preemptivní jádro Vliv preemptivního jádra Maličko větší režie spinlocky nyní zakazují preempci Průměrná plánovací latence se snížila Stále dlouhé latence v nejhorších případech

Preemptivní jádro Odkud se berou latence Kritické sekce se spinlocky a rwlocky Kritické sekce při čtení v mechanismu RCU Kód, kde se výslovně zakazují přerušení nebo preempce Vykonávání obsluh přerušení a softirq Inverze priorit

Section 5 RT-preempt patch

RT-preempt patch RT-preempt patch Chce všechny ty zdroje latencí zrušit Dělá z Linuxu RTOS Normální userspace programy mohou běžet v realtime Žádný druhý kernel Vývoj: Ingo Molnar, Thomas Gleixner, Steven Rostedt,... jmenovaní pracují pro Red Hat, umějí spolupracovat s upstreamem, od začátku jasná snaha začleňovat tam postupně části patche

RT-preempt patch SoftIRQs Nejsnáze se lze vypořádat s latencemi od softirq. Co jsou SoftIRQs v normálním Linuxu Jsou to spodní poloviny zpracování přerušení (časovače, sít. TX/RX,... ) Běží s povolenými IRQ Ale nejsou to procesy nelze jim sebrat CPU a přidělit ho procesu Ochrana proti přetížení od softirq ksoftirqd jaderné vlákno pro odložené zpracování softirq

RT-preempt patch Preemptivní SoftIRQs Už jsme se smířili s tím, že softirq mohou být odloženy na později do vlákna Můžeme je tam odložit vždy A když už, tak rovnou samostatné vlákno pro každý typ softirq $ ps -eo pid,pri,rtprio,cmd PID PRI RTPRIO CMD 4 90 50 [softirq-high/0] 5 90 50 [softirq-timer/0] 6 90 50 [softirq-net-tx/] 7 90 50 [softirq-net-rx/] 8 90 50 [softirq-block/0] 9 90 50 [softirq-tasklet] 10 90 50 [softirq-sched/0] 11 90 50 [softirq-hrtimer] 12 90 50 [softirq-rcu/0]

RT-preempt patch Obsluha IRQ ve vláknech V normálním Linuxu má obsluha každého IRQ přednost před všemi procesy To i tehdy, když proces má realtime prioritu Spouštějme obsluhy IRQ také ve vláknech (preemptivní) PID PRI RTPRIO CMD 304 90 50 [IRQ-8] 347 90 50 [IRQ-15] 381 90 50 [IRQ-12] 382 90 50 [IRQ-1] 393 90 50 [IRQ-4] 400 90 50 [IRQ-16] 401 90 50 [IRQ-18] 402 90 50 [IRQ-17] 413 90 50 [IRQ-19]

RT-preempt patch Klasická obsluha IRQ (1) service the device; device driver's interrupt handler (2) EOI; generic IRQ code device I/O APIC CPU PCI INT line APIC bus Local APIC

RT-preempt patch Obsluha IRQ z vlákna (2) service the device; device driver's threaded IRQ handler (1) mask&ack, then wake up the thread; generic IRQ code device mask regs. I/O APIC CPU PCI INT line APIC bus Local APIC (3) unmask; generic IRQ code, in the thread

RT-preempt patch Spící spinlocky Potřebujeme se zbavit dalšího zdroje latencí sekcí se spinlocky Jsou nutné pro přístup ke sdíleným zdrojům na SMP Většinou krátké kritické sekce, ale najdou se i dlouhé Potřebujeme, aby byly preemptivní Náhrada spinlocků spícími zámky mutexy Aby to fungovalo, IRQ musí být ve vláknech Jen několik vybraných zůstává jako raw spinlock t

RT-preempt patch Inverze priorit... je když proces s vysokou prioritou musí čekat na proces s prioritou nižší Nevyhnutelné, pokud oba přistupují ke sdílenému prostředku musí počkat, až druhý proces uvolní zámek Špatná je ale neohraničená inverze priorit

RT-preempt patch Neohraničená inverze priorit A B C preempt block preempt t

RT-preempt patch Dědičnost priorit Řešení prioritní inverze Když prioritní proces čeká na uvolnění zdroje drženého nižším procesem, priorita nižšího procesu je dočasně povýšena na úroveň toho čekajícího Tento mechanismus využívají rt-mutexy

RT-preempt patch Dědičnost priorit A B C preempt block unblock t

RT-preempt patch Časovače s vysokým rozlišením RT aplikace chtějí jemné časování clock sources (zdroje hodin) gettimeofday() clock events (události od hodin) nanosleep(), POSIXové časovače Padlo omezení na rozlišení periodického tiku (HZ) API používá nanosekundy skutečná přesnost a rozlišení je dáno schopnostmi HW

RT-preempt patch Další lahůdky Validátor zámků (lockdep) Našel mnoho chyb v zamykání Dokáže detekovat těžko vyvolatelná uváznutí (deadlock), aniž by k nim muselo opravdu dojít Sledovač latencí (latency tracer) Také s jeho pomocí bylo nalezeno mnoho chyb Vyvinul se z něj dnešní ftrace (CONFIG FTRACE) Detektor SMI System Management Interrupt SMM režim CPU kde si firmware dělá, co chce, bez ohledu na OS SMI způsobují nečekané prodlevy

RT-preempt patch Výkon Latence desítky µs dosažitelné Hrubý výkon o něco snížen, ale ve většině benchmarků jen málo Objeví-li se výraznější propady, řeší se

RT-preempt patch Začleňování do upstreamu Vývoj RT-preempt má jasný cíl dostat se do upstream Linuxu Mnohé části už tam jsou 2.6.16 obecné semafory nahrazeny vhodnějšími mutexy 2.6.16 časovače s vysokým rozlišením 2.6.18 jednotná instrastruktura pro IRQ: genirq 2.6.18 robustní futexy a futexy s děděním priorit 2.6.18 validátor zámků lockdep 2.6.21 jádro bez tikání (tickless) 2.6.25 preemptivní RCU 2.6.27 trasovací nástroj ftrace 2.6.29 adaptivní čekání mutexů Nepřímé příznivé dopady Byly odhaleny četné chyby souběhu, opraveny další chyby Výhody z existence RT patche plynou všem

RT-preempt patch Co ještě zbývá začlenit Stále ještě zbývají dvě nejdůležitější části IRQ a softirq ve vláknech Podpora přidána v 2.6.30-rc1 Zatím pouze pro vybrané ovladače Umožní zjednodušit kód ovladačů Nahrazení spinlocků

Část III Red Hat Enterprise MRG

Section 6 Messaging + Realtime + Grid

Messaging + Realtime + Grid Nasazení realtime-preempt Linuxu RT patch není jen hračka. Red Hat Enterprise MRG Messaging výkonná implementace otevřeného standardu AMQP (Qpid) Realtime kernel pro předvídatelnou odezvu (v MRG 1.1 založen na 2.6.24-rt), nástroje pro vyladění a monitorování Grid distribuované výpočty (Condor) Vrstvený produkt nad Red Hat Enterprise Linux 5 Zaručena 100 % binární kompatibilita aplikací Podporovaná i real-time Java (specifikace RTSJ)

Část IV Závěr

Zdroje Rostedt, S., Hart, D. V.: Internals of the RT Patch. In Proceedings of The Linux Symposium, Ottawa, 2007, https://ols2006.108.redhat.com/2007/reprints/rostedt-reprint.pdf McKenney, P. E., Attempted summary of RT patch acceptance thread, take 2, http://lwn.net/articles/143323/ McKenney, P. E., A realtime preemption overview, http://lwn.net/articles/146861/ Edge, J.: Moving interrupts to threads, http://lwn.net/articles/302043/ http://rt.wiki.kernel.org http://www.kernel.org/pub/linux/kernel/projects/rt/ http://www.redhat.com/mrg/