Moduláris IO ütemezők

Címkék

Jens Axboe keze nyomán a 2.6-os Linux kenrel IO ütemezői teljesen modulásriak lettek. Ennek köszönhetően a felhasználók futási időben képesek az egyes IO ütemezők közt váltogatni.

A patch alkalmazása után reboot-olás nélkül, ``on the fly'' választhatunk a Nick Piggin-féle anticipatory IO scheduler, a Jens Axboe-féle deadline vagy CFQ IO ütemezője, vagy éppen a noop IO ütemező között. Nem ez az első alkalom, hogy a fejlesztések arra irányuljanak, hogy röptében lehessen IO ütemezőt választani. Tavaly októberben Nick Piggin készített egy hasonló munkát.

``Miért van szükség az IO ütemezők futási időben való változtatására?'' - kérdezhetné bárki.Azért, mert a különböző IO eszközökhöz különböző IO ütemezők adják az optimális teljesítményt. A merevlemezekhez például optimálisan használható a deadline vagy az anticipatory ütemező, míg mondjuk egy memória-alapú eszköz (pl. USB mass storage) sokkal jobban működik a noop ütemezővel. A jövőben elképzelhető, hogy a kernel automatikusan fogja kiválasztani az éppen optimális IO ütemezőt.

Ezen előnyökön felül a modularitásnak köszönhetően ezután sokkal könnyebb lesz egy újabb IO schedulert illeszteni a kernelhez, mert ehhez a core kódot nem kell majd széttúrni.

A kezelőfelület a sysfs. A kernelbe mindenképpen bele kell fordítani egy IO ütemezőt fixen, a többi mehet modulba.

Az elérhető IO ütemezők lekérdezése:

bart:/sys/block/sda/queue # cat scheduler

anticipatory deadline [cfq]

A CFQ ütemező van kiválasztva. Modulba van forgatva a noop ütemező.

bart:/sys/block/sda/queue # modprobe noop-iosched

bart:/sys/block/sda/queue # cat scheduler

anticipatory deadline [cfq] noop

Látszik, hogy a modul betöltése után már elérhető a noop ütemező is. A CFQ-ról az anticipatory-ra való váltáshoz az alábbiakat kell tenni:

bart:/sys/block/sda/queue # echo anticipatory > scheduler

bart:/sys/block/sda/queue # cat scheduler

[anticipatory] deadline cfq noop

Bejelentés, patch Jens levelében.

Hozzászólások

Kitenkinteskeppen, a BSD-k, Solaris hogy allnak io utemezo teren?

thx

Ha jól látom, olyan is lehetséges, hogy különféle fizikai eszközök eléréséhez különféle ütemezőket használjunk...?

Solaris alapvetoen jol, koszoni szepen:) Kulonbozo utemezesi osztalyok leteznek, amik kulonbozo algoritmusok alapjan utemezik a bennuk levo processzeket. Van RT (realtime), SYS (kernel), TS (timeshare), IT (interactive) es FSS (fair share scheduling). Egy processz egy mozdulattal mozgathato ezek kozott, az egyes osztalyok prioritasa kotott hierarchia (vagyis az RT processzek prioritasa pl mindenkeppen magasabb, mint a TS processzeke).

Tovabbi infok:

http://www.middleworld.com/docs/dispatch.htm

http://www.princeton.edu/~psg/unix/Solaris/troubleshoot/schedule.html

http://www.cptech.com/index.jsp?tnAction=cto&articleId=23

Van resource management, aminek a segitsegevel jobokat kulonbozo project-ekbe szervezhetunk es project szinten tudunk hozza cpu %-ot, memoriafelhasznalast allokalni. Solaris 10-ben ehhez hozzajonnek meg a zonak, amik a projektekre epulnek es ott zonankent lehet ugyanigy felszabni a gep teljesitmenyet, i/o teljesitmenyet, halozati kapcsolatait... A projektek adminisztracioja szerintem PITA (pain in the ass), de mukodik:)

Bovebben errol:

http://www.samag.com/documents/s=7898/sam0304j/0304j.htm

Zonak:

http://www.sun.com/bigadmin/content/zones/

http://www.theregister.co.uk/2003/04/09/solaris_10_to_get_zoned/

Haladunk, haladunk...

Eszembe jutott Charlie egyik hozzászólása IRC-n, amit utólagos engedelmével be is kopiznék :)

{Chain-Q} hat nemtom. az egesz opensource OS fejlesztesrol megvan a velemenyem. :) szoktam az amigam kerneljenek verzioszamat mutogatni... exec.library v40.68 (1993/07/15)... :) 11 eve nem volt ujraforditva es megis megy alatta 3D, USB, network, 128tb-ig winyot tamogato journaling filesystem, nem akad be az mp3 ha teker a winyo

{Chain-Q} 50mhz-n, menet kozben allitgatom meg a scheduler idoszeletet is egy 100 byteos kis utillal... :) sz'al ez operacios rendszer


Saját véleményem meg az, hogy amíg a kernel nem választja ki automatikusan a megfelelő ütemezőt addig ez még csak apró öröm... Úgy gondolom, hogy egy egyszerű felhasználónak ne kelljen tudnia, hogy többféle scheduler van, azt meg pláne, hogy mikor melyiket kell használni az optimális működéshez.

De mindenesetre biztató előrelépés ez, nehogy valaki flamenek vegye...

tovabbra sincs ertelme annak a szonak, h "legoptimalisabb".

az optimalis az adott korulmenyek kozott elerheto legjobbat jelenti, vagyis ennel jobb nincs.

nem lehet optimalisabb valami.