Linux 6.12 by mohol mať podporu „PREEMPT_RT“ v reálnom čase

Preempt-RT je modifikácia, ktorá umožňuje úlohám s vyššou prioritou prerušiť úlohy s nižšou prioritou.

El koncept systému reálneho času Nie je to niečo, na čo sa v posledných rokoch v Linuxe myslelo, od myšlienky tohto začala takmer pred 20 rokmi, presnejšie v roku 2005 ako súčasť projektu „Realtime-Preempt“ („-rt“) s vývojom režimu PREEMPT_RT pre jadro Linuxu.

Pre tých čo nevedia PREEMPT_RT, mali by to vedieť je to náplasť pre jadro Linuxua konvertuje operačný systém na systém v reálnom čase (v reálnom čase). Hlavným cieľom PREEMPT_RT je znížiť latenciu a zabezpečiť predvídateľnosť pri vykonávaní úloh, čo je kľúčové v aplikáciách vyžadujúcich rýchle odozvy.

Jednoduchšie povedané, môžeme povedať, že PREEMPT_RT umožňuje prerušenie takmer všetkých častí jadra, čo znižuje latenciu. Na rozdiel od štandardného jadra nie je možné prerušiť všetky sekcie, čo môže spôsobiť oneskorenie odozvy.

Od roku 2015 je projekt pod dohľadom Linux Foundation a doteraz bola implementácia PREEMPT_RT módu ponúkaná vo forme externých patchov. Na základe týchto záplat vznikajú distribúcie ako napr RHEL, SUSE a Ubuntu vytvorili edície svojich produktov v reálnom čase, veľmi žiadané v sektoroch, ako sú finančné systémy, zariadenia na spracovanie zvuku a videa, letecké systémy, medicína, robotika, telekomunikácie a priemyselné aplikácie, kde je nevyhnutné zaručiť predvídateľné časy odozvy na udalosti.

En 2019 začal proces propagácie opráv vyvinutých v projekte PREEMPT_RT do hlavného linuxového jadra. Vo verzii jadra 5.3 bola v konfiguračnom súbore zahrnutá voľba PREEMPT_RT na aktiváciu režimu v reálnom čase.

Bity printk potrebné pre PREEMPT_RT sa nachádzajú v linux-next. Toto bola poslednou známou prekážkou pre PREEMPT_RT. Front RT má aj "atómovú konzolu" pre UART 8250, ktorá ešte nie je in linux-next. To znamená správanie „starej konzoly“, ako keby sa z nej netlačilo atómový kontext v prípadoch núdze. Ovládač 8250 UART je jediný ktorá dnes poskytuje podporu „atómovej konzoly“.

Všetko táto práca čoskoro prinesie ovocie, keďže úplná integrácia potrebných zmien trvala päť rokov a blíži sa ku koncu, keďže sa očakáva, že vo verzii 6.12 bude možné jadro skompilovať v režime PREEMPT_RT bez potreby aplikácie ďalších záplat.

Spomína sa, že posledná prekážka ktorý zabránil aktivácii PREEMPT_RT bol nedostatok podpora neblokovaného atómového výstupu pomocou funkcie printk. Táto funkcia už bola prijaté vo vetve linux-next. Okrem toho sa čaká na implementáciu neblokujúcej atómovej konzoly pre radič 8250 UART, ktorej absencia v súčasnosti bráni výstupu núdzových správ do konzoly z kódu vykonávaného v atómovom kontexte.

Po zlúčení bitov printk bolo možné povoliť PREEMPT_RT na X86, ARM64 a Risc-V. Tieto tri zlúčené architektúry si v priebehu rokov vyžadovali zmeny.
rokov, čo ma necháva v pozícii, v ktorej nemám žiadne zásadné zmeny
front, ktorý by ich ovplyvnil. ARM a POWERPC majú ešte niekoľko základných záplat…

Vývojári jadra Linuxu oznámili integráciu najnovších potrebných zmien vo vetve linux-next, ktorý sa použije na kompiláciu verzie 6.12. Tieto zmeny umožnia kompiláciu jadra s voľbou PREEMPT_RT, ktorá zavádza možnosti v reálnom čase.

Po prijatí týchto zmien na hlavnej vetve, režim PREEMPT_RT Dostupný bude pre architektúry X86, ARM64 a RISC-V. Podpora pre architektúry ARM a POWERPC pribudne neskôr, keďže potrebné záplaty ešte nie sú úplne integrované.

Za zmienku stojí, že navrhované zmeny ešte nie sú definitívne a je možné, že ak PREEMPT_RT nepríde do vetvy 6.12, bude integrovaný až budúci rok vo verzii 6.13.

konečne, ak máte záujem dozvedieť sa o tom viac, môžete skontrolovať podrobnosti v nasledujúci odkaz.