Att ett realtidsoperativsystem, rtos, skulle vara operativsystemens Bugatti Veyron är helt fel. Snabbare dator får du genom att överklocka processorn och samtidigt skaffa bättre kylning.

Ett realtidssystem används i stället när du vill vara säker på att ett program eller en tillämpning får svar eller kan ge svar inom en viss tidsrymd. Om inget svar kan ges skickar systemet en avbrottssignal som visar att det ger upp.


Det handlar om att säkerställa kvalitet snarare än prestanda. Ett rtos brukar kategoriseras efter hur ”hårt” det är. Hårdaste sorten är de system som stänger av processen de bevakar om de inte får svar inom en viss tid.


Ta laserkirurgi till exempel. Om roboten som svarvar hornhinnan plötsligt skulle få problem vill man vara säker på att maskinen stängs av i precis det ögonblicket och inte en millisekund senare.


En ”mjukare” variant är när realtidssystemet inte stänger av processen, men noterar i loggen att tidskraven inte uppfyllts.



"30 mikrosekunder tar det,

i värsta fall, för en process

att få svar av en Intel Core 2

Duo E6600- processor."



Här är börserna ett exempel. Vid handel med aktier vill man ha så aktuell information som möjligt för att kunna ta beslut om att köpa och sälja innan konkurrenterna gör det. För börserna är realtidssystem ett sätt att säkerställa att de processer som ansvarar för den finansiella informationen har högsta prioritet. Ett avbrott i flödet skulle däremot vara katastrofalt och några processer ska därför inte stängas av.



5 knep för att få ett snabbare realtidssystem


» Stäng av funktioner som strömhantering i datorns bios. System management interrupt (SMI) genereras av kretsar på moderkortet och kan inte spåras av operativsystemet. SMI har till och med högre prioritet än NMI (non-maskable interrupt) och kan sinka systemet med flera hundra mikrosekunder.


» Minimera antalet DMA-enheter. Enheter som använder direkt minnesåtkomst eller DMA kan också sinka systemet. Det handlar exempelvis om diskettstationer, ljudkort, videokort och hårddiskar.


» Om det sitter ett usb-minne i datorn när den startar kan svarstiderna öka med upp till 500 mikrosekunder. Plocka ut kringenheter som inte behövs. Avaktivera helst usb i bios.


» Använd inte funktioner som försätter processorn i viloläge eller slår av och på hastigheten. Program som Cpuspeed är bannlysta för den som jagar mikrosekunder.


» Slå av konsollen. Det låter kanske som ett administrativt självmord, men är du ute efter ett snabbt system ska du inte ha en vga-baserad systemkonsoll till din server. Använd i stället ssh/telnet utifrån eller en seriell konsoll om du måste ha direkt åtkomst. Däremot kan du köra X-Window från maskinen.




Kan verka snabbare

Datorn blir alltså inte snabbare med en realtidskärna installerad. Däremot kan de program som är skrivna för ett realtidssystem köras precis på det sätt det är tänkt att de ska fungera, vilket kan leda till att systemet upplevs som snabbare eller mer stabilt.


Ett realtidssystem ska klara att svara på en fråga inom en viss tid oavsett hur hög belastning processorn har för tillfället. Hur snabbt det kan gå beror på hur snabb processorn är. En modern Intelprocessor ger oftast svar på mindre än tio mikrosekunder och har ett ”värsta scenario” på 30 mikrosekunder. Mindre kraftfulla processorer, till exempel i inbyggda system, kan ha svarstider på upp till 300 mikrosekunder.


Extern kringutrustning som hårddiskar, usb-minnen, nätverkskort, videokort, ljudkort och andra enheter i datorn som ger hårdvaruavbrott är av ondo för rtos-processerna. För att få så liten fördröjning som möjligt ska sådan utrustning undvikas.



Smart kärna. När du har startat din realtidskärna kan du se i processlistan att programinterrupten, softirq, körs i kärnan. Rt-linux har skapat en väg för programmen i användarens adressrymd att kommunicera med kärnan, utan att inkräkta på Posixbiblioteket.



Från robotar till ljudprogram

Rtos utvecklades ursprungligen för industriella tillämpningar, men börjar så sakta hitta in i mer vardagliga program. I dag finns realtidssystem i allt från robotstyrning, mobila tillämpningar och finansiella program till system för ljud- och videobearbetning. En orsak till att realtidsprogram blir allt vanligare är det nya stödet för realtidssystem i Linuxkärnan.


Monta Vista, ett företag som jobbar med inbyggda system, var bland de första att implementera realtidsstöd i kärnan. Det senaste halvåret har flera Linuxdistributörer börjat erbjuda realtidsvarianter av sina distributioner. Red Hat, Suse och Ubuntu erbjuder alla Realtidslinux och använder samma program, kärnpatchen rt-linux.


Patchen är utvecklad av ungraren Ingo Molnár, som är anställd på Red Hat och har ett långt förflutet som kärnhackare. Ingo Molnár är välkänd i Linuxkretsar och ligger bland annat bakom schemahanteraren completely fair scheduler, CFS, som implementerades i 2.6.23-kärnan. I CFS lades grunden till Realtidslinux i och med att körschemat är baserat på tid och inte på den mer demokratiska modellen ”först till kvarn”, som i den tidigare schemaläggaren O(1). Även O(1) är utvecklad av Ingo Molnár.


Linuxkärnan kan i dag inte fungera som realtidskärna eftersom processerna inte alltid kan avbryta andra processer (preempt). En process eller tråd i användarens adressrymd (user space) som har högsta prioritet kan inte gå in och ta över kontrollen om kärnan är upptagen med att exekvera kod. I värsta fall kan det uppstå fördröjningar på flera hundra millisekunder, vilket är helt oacceptabelt för ett realtidssystem.


Med Ingo Molnárs patch har programmen som körs i användarens adressrymd ett sätt att skicka ett avbrott till kärnan som talar om att viktigare saker måste utföras. En av fördelarna med patchen är att inget program måste kompileras om för att man ska kunna dra nytta av realtidsfunktionerna. Så länge programmet är skrivet för posix kommer det också att fungera med Realtidslinux.



Lätt eller svårt sätt

Det svåra sättet att få realtidsfunktionerna är att ladda hem patchen, använda den med den senaste kärnan, ange CONFIG_PREEMPT_RT=y, CONFIG_PREEMPT=y, CONFIG_HIGH_RES_TIMERS=y och därefter kompilera och starta.


Vill du spara tid och frustration kan vi rekommendera att du i stället laddar hem en Linuxversion där realtidsfunktionerna är med från start. Både Novell och Red Hat har realtidsversioner av sina system. Novell/Suse fokuserar på snabbhet och time-to-market med Suse Linux Enterprise Real Time 10 medan Red Hat använder parollen ”Real-time is real money”.


Ubuntu Studio har också realtidsfunktioner, men där ligger fokus på ljudbearbetning. Realtidskärnan finns för övrigt redan i Ubuntus programarkiv. Med kommandot ”sudo apt-get install linux-rt” laddar du hem och installerar realtidskärnan tillsammans med alla nödvändiga kärnmoduler.



Utveckla programmen

När systemet har startat om och du har kontrollerat att rätt kärna är startad med kommandot ”uname -r” är risken stor att du blir besviken. Det finns nämligen inga program i användarens adressrymd där du kan använda ”realtid”-processprioriteten till ”realtid”. I stället är det upp till utvecklaren att skriva program som är lämpade för att köra i realtidsmiljöer.


Realtidsprogram kan skrivas i Java, C och C++. På IBM Developerworks finns en mängd artiklar som beskriver hur programmen ska vara utformade för att vara så snabba som möjligt. Några av tipsen är att undvika att öppna och stänga filer, utföra all programexekvering i minnet och att kommunicera med andra program via den delade adressrymden IPC eller sockets.





Läs på.
Program blir inte snabbare med ett realtidssystem om de inte är skrivna på rätt sätt. RT-Linux Wiki ger dig en spark i rätt riktning.

 

En av fördelarna med Ingo Molnárs patch är att utvecklaren inte behöver skriva mot ett speciellt api. Realtidslinux använder det vanliga Posixbiblioteket. Faktum är att programmen som körs på servern inte märker någon skillnad alls, förutom att realtidsfunktionerna finns där.


Beviset för att patchen är aktiv och fungerar får du om du slår en ”ps ax”. Högst upp i listan efter processen ”init” ska ett antal programinterrupt nu köras av kärnan. Hakparenteserna talar om att processen körs av kärnan och inte i användarens adressrymd. Realtidslinux har därmed skapat en väg för program som körs av användaren att göra kärnan uppmärksammad på att programmet vill överta kontrollen.



120 slag per sekund

Ännu finns inga officiella testprogram för Realtidslinux, men Novell, IBM och andra frivilliga har bidragit med programexempel som går att ladda ned från http://rt.wiki.kernel.org. RT-Linux Wiki är den bästa inkörsporten för den som vill komma igång med att utveckla realtidstillämpningar.


Eftersom realtidspatcharna är relativt nya och ännu inte är standard i kärnan är antalet program som använder realtidsfunktioner få.


”Vi kan inte se någon

anledning till att patcharna

inte blir standard i 2.6.”


De flitigaste realtidsanvändarna hittar vi i dag på ljud- och bildområdet. En ljudmixer som skickar ljudströmmar mellan program och enheter har inte råd med fördröjningar. Om en trummaskin till exempel går i 120 slag per sekund på en kanal är det oacceptabelt om andra ljudströmmar plötsligt inte hänger med på grund av fördröjningar i systemet.





Fördröjning förbjuden. Jackd är en fri server för professionell ljudbearbetning som låter dig skicka ljud mellan olika program. Med Realtidslinux minskas fördröjningarna.



Vi kan inte se någon anledning till att realtidspatcharna inte blir standard i 2.6-kärnan med tiden. Eventuella säkerhetsproblem kopplade till att användare startar realtidsprocesser på servern med en onormalt hög prioritet i syfte att sänka systemet är av övergående art. Linuxdistributörerna har trots allt möjlighet att välja vilka funktioner de vill stödja i kärnan.


Om Realtidslinux däremot blir standard i kärnan kommer det säkert inte dröja länge innan fler program använder de möjligheter det kan ge. Ett sådant scenario kan i så fall leda till stabilare och mer tillförlitliga program.


» Diskutera den här artikeln i forumet!


Så går du vidare:


Fakta


»
Suse Linux Enterprise Real Time 10

Novell framhåller kortare svarstider och bättre förutsägbarhet som ett sätt att öka kvaliteten hos systemet.

» Red Hat Enterprise Linux Realtime

Red Hat visar de olika användningsområdena för Realtidslinux: telekom, finans, forskning och utbildning.


» Ubuntu Studio

Distributionen som handlar om effektiv ljudbearbetning och att ha roligt. Skön kontrast till övriga distributioner.