Tavaly nyáron több kritika is érte a 2.6-os Linux kernelt amiatt, hogy nem használható komolyabb audio munkára, mert borzasztóan nagy az ütemezési latency-je. Akkor Ingo elkezdett dolgozni egy voluntary kernel preemption patch-en (korábbi cikkünk), annak érdekében, hogy csökkentse ezt a latency-t.
Ingo jelenleg egy realtime-preempt nevű patchen (-RT) dolgozik. A realtime-preempt patch célja, hogy garantálja a magas prioritású felhasználótérbeli processzek válaszadási idejének maximumát, hasonlóan ahhoz, ahogy azt az igazi valós idejű operációs rendszerek (Real Time Operating System - RTOS) teszik. Ezt a célt úgy igyekszik elérni, hogy a kernelben mindent preemptívvé tesz. Nem érdekes, hogy a kernel éppen min dolgozik, ha egy magasabb prioritású processz futtatható állapotba kerül, akkor az azonnal ütemeződik.
A visszajelzések szerint az audio-val kapcsolatos Linux disztribútorok már szállítják az -RT kerneleket, és a legtöbb komolyan audio-val foglalkozó linuxos felhasználó is ezt futtatja. Több ezer ember használja 7/24-ben hónapok óta, és május közepén már ott tartottak, hogy több mint egy hónapja nem találtak benne igazi bugot.
Nézzük hogyan használhatjuk:Előszöris kernelt kell patchelnünk. A legutoljára kiadott -RT patch a realtime-preempt-2.6.12-rc6-V0.7.48-11 (megj: annak ellenére, hogy a 11 is ma jelent meg, már itt is az új verzió, a realtime-preempt-2.6.12-rc6-V0.7.48-16) a névre hallgat. Ezzel megpatchelve a kernelt, a make menuconfig-ban előtűnik egy új opció a ``Processor type and features'' alatt:
Keressük meg a ``Preemption Mode (Complete Preemption (Real-Time))'' menüpontot, majd nézzünk szét alatta...
Belépve a menübe azt láthatjuk, hogy négy lehetőség szerint állíthatjuk be a kernelünket attól függően, hogy milyen szerepet szánunk neki. Lehet:
Szerver: Nagy throughput, megfelelő latency, ami akár lehet azért nagyobb is. Szervernél nem annyira kritikus a latency, mint egy desktop esetén. Szerverekhez, tudományos munkaállomásokhoz ajánlott beállítás. Ott érdemes ezt használni, ahol a kernel nyers számítási teljesítményére van szükség.
Desktop: Romló throughput, de javuló (kisebb) latency. Az alkalmazások sokkal simábban futnak, gyorsabban reagálnak. Átlagos desktophoz ajánlott.
Alacsony latency-jű desktop: Tovább romló throughput, viszont tovább csökkenő latency. Ennek eredményeképpen nagyobb load alatt a desktop alkalmazások még szebben futnak. Olyan desktopokhoz és beágyazott rendszerekhez ajánlott, ahol a latency kívánatos értéke 1 millisec-en belül van.
Teljes preemption (Real-Time): Ez a beállítás adja a legkisebb latency-t, a legjobb reagálási képességet az alkalmazások számára terhelés alatt. Ez a beállítás olyan desktopok, beágyazott vagy valós idejű rendszerek számára ajánlott, ahol 100 usec-nél kisebb latency kívánatos.
Sokan kérték a patch beolvasztását a mainline kernelbe, de egyben sokan ellenezték is. Egy LKML tag május 23-án kérte az -RT beolvasztását. Azóta több mint 300 válasz érkezett a postra. A thread itt kezdődik (csak erős idegzetűeknek).