Kernel

A Linux processz ütemező II.

 ( trey | 2003. november 29., szombat - 22:57 )

(A cikksorozat első része itt.)

Időszelet
-----------

Az időszelet egy olyan numerikus érték, amely meghatározza, hogy egy taszk mennyi ideig futhat, mielőtt a preemptálás bekövetkezik. Az ütemező irányelv (scheduler policy) határozza meg az alapértelmezett időszelet nagyságát. Ez nem könnyű feladat. A túl hosszú időszelet a rendszer gyenge interaktív teljesítményét okozhatja; a rendszert használó felhasználóban nem alakul ki az az érzés, hogy a programok párhuzamosan futnak. Ha viszont az időszelet túl rövid, akkor jelentős lesz az elvesztegetett processzoridő, mert a gyakori processzek közti kapcsolgatás jelentős overhead-del jár. Ebben az esetben a rendszer jelentős időt fordít arra, hogy gyakran kapcsolgat az éppen futó processzről a következő futtatandó processzre és vissza. Tehát az ütemezőnek meg kell találni a középutat a túl hosszú és a túl rövid időszelet között. Mindezt úgy, hogy a CPU függő és az I/O függő processzeknek is jó legyen. Az I/O függő processzek nem igényelnek hosszú időszeleteket, míg a processzor függő processzek hosszú időszeletekért könyörögnek (például azért, hogy a gyorsítótáraikat (cache) ``forrón'' tartsák).

Ennek fényében azt a következtetést vonhatjuk le, hogy a hosszú időszelet rosszabb interaktív teljesítményt ad. Számos operációs rendszeren ezen a megfigyelésen alapult az ütemező tervezése. Ezekben az operációs rendszerekben az alapértelmezett időszelet viszonylag kicsi, például 20 millisec.

A Linux kihasználja azt az előnyt, hogy a magasabb prioritási értékkel rendelkező processzek mindig futnak. A Linux ütemező felnyomja az interaktív processzek prioritását, és engedélyezi számukra, hogy gyakrabban futhassanak. A Linux ütemező - összehasonlítva más rendszerekkel - relatíve magas alapértelmezett időszelet értéket ad (a 2.6.0-test11 kernelben a minimum timeslice 10ms, az alapértelmezett 100ms, és a maximum 200ms - kernel/sched.c). Továbbá a Linux ütemező dinamikusan, a prioritás alapján határozza meg a processz időszeletét. Ez lehetővé teszi, hogy a magasabb prioritással rendelkező, fontosabb processzek hosszabb ideig és gyakrabban futhassanak. A dinamikus időszelet és prioritás implementálása robosztus ütemezési teljesítményhez vezet.

Marcelo Tosatti: Linux 2.4.23

 ( trey | 2003. november 28., péntek - 21:17 )

Marcelo kiadta a .23-as stabil kernelt. Nagy változások nincsenek, hiszen a 2.4.23-rc5 került változások nélkül kiadásra.

Linus Torvalds: Linux 2.6.0-test11 ``Beaver in Detox''

 ( trey | 2003. november 27., csütörtök - 8:47 )

Hmm, Linus érdekes neveket ad mostanában a teszt kerneleknek. A Detox ott is ugyanazt jelentheti? :-)

Megjelent a 2.6.0-teszt11-es Linux kernel. Linus azt mondta, hogy azoknak akik azon gondolkodtak, hogy megfelelő név-e a ``Stoned Beaver'' (2.6.0-test10) egy kernelnek, azoknak örömmel jelenti be, hogy a Beaver elment a Detox-ba. Ezzel egy időben Linus nekilátott a Hálaadás napi ünnepségeknek.

Mivel az elkövetkezendő napokat azzal fogja tölteni, hogy pulykát tol az arcába, arra kér mindenkit, hogy senki ne zaklassa azzal, hogy patcheket küld, mert úgysem olvassa el a leveleit.

A 2.6-os kernel decemberre várható

 ( trey | 2003. november 26., szerda - 11:20 )

Andrew Morton: ``Úgy gondolom, hogy a 2.6.0-test10 körülbelül azon a szinten van fejlettségében, mint amilyenen a 2.4.17-es kernel.''

A 2.6-os Linux mag decemberre várható, és sokkal stabilabb lesz érkezésekor, mint elődei. Ez a 2.6-os kernel karbantartója Andrew Morton mondta.
A jelenlegi teszt verzió - a 2.6.0-test10-es - az (valószínűleg) utolsó teszt verzió, és a 2.6-os kernel végleges verziója ez év végén fog megjelenni, hacsak valami komolyabb hiba nem jelentkezik.

A 2.6-os kernel - összehasonlítva a jelenlegi stabil 2.4-es kernelsorozattal - számos új funkcióval jelentkezik majd. Az egyik ilyen legfontosabb tulajdonság az, hogy az új kernel sokkal jobban fogja támogatni a sok processzoros szervereket.

``A 2.4-es kernel valóban véget ért a 4 vagy 8 processzoros rendszerek támogatásánál.'' - mondta Morton. ``A 2.6-os kernelnél meglepődnék, ha valami megkadályozná a felskálázást egészen 32 processzorig.''

Linus a 2.6-os kernelt ez év júniusára jósolta, de majd fél évet csúszik a kiadása. Hasonló csúszás volt a 2.4-es kernel kiadásakor is, amely 2001. januárjában jelent meg.

Andrew Morton: Linux 2.6.0-test10-mm1

 ( trey | 2003. november 26., szerda - 10:04 )

Megjelent az első -mm patch a 2.6.0-test10 test kernelhez. A patch kisebb javításokat tartalmaz. A device mapper és a RAID frissítéseket tesztelni kell.

Az interaktivitás patch rontja a teljesítményt?

 ( trey | 2003. november 25., kedd - 20:31 )

Többen aggodalmukat fejezték ki az LKML-en Con Kolivas interaktivitást kiszámító patchével kapcsolatban. A patch nem olyan régen került be a 2.6-os fejlesztői kernelbe, az ütemező részbe. Egyesek szerint a patch nem hasznos, hanem kifejezetten nagy az overhead-je. Egyes források szerint akár 20%-kal lassíthatja a CPU-t. Vannak olyanok is, akik szerint nincs szükség a 2.6-os kernelben ilyen interaktivitás tuningra a modern CPU-knál.

Marcelo Tosatti: Linux 2.4.23-rc5

 ( NagyZ | 2003. november 25., kedd - 14:55 )

Huh, alig telt el 24 óra (vagy még annyi sem?), máris itt az rc5... egy lehetséges adatkorrupciós hibát javítva ezzel x86-64-en.

Marcelo levele itt.

Linus előadása a Linux Lunacy-n

 ( trey | 2003. november 25., kedd - 10:51 )

``Az ANSI C jó, de a K&R-t (Brian W. Kernighan és Dennis M. Ritchie féle C-t) utálom. Nem nyúlok a K&R féle kódhoz.''

A Linux Journal jóvoltából most elérhető Linus Linux Lunacy-s előadásának első része. Az előadás Linus második éves beszámolója a Linux kernel fejlesztéséről. Az előadás címe ``Managing Kernel Development''.

Linus beszélt a kernel fejlesztésben szerepet játszó kulcs emberekről: Alan Coxról (ac), Andrew Mortonról (akpm), David Millerről (davem), Greg Kroah-Hartmanról (Greg K-H) mint ``technikai menedzserekről'', akik segítenek a fejlesztésben.

Beszélt arról, hogy mi a baj a CVS-sel. Ebben az évben 12.479 változás történt a kernel forrásban, 2386 merge történt (ebben nincsenek benne az ún. ``apply-by-proxy'' patchek).

Marcelo Tosatti: Linux 2.4.23-rc4

 ( GCS | 2003. november 24., hétfő - 22:02 )

Pár sh arch javítás, az egyedüli x86-ot érintő változtatás a már itt a HUP-on is hiányolt moduláris IDE hiba kijavítása.

Marcelo reméli, hogy ez már ténylegesen az utolsó -rc kiadás a végleges 2.4.23-as kiadás előtt.

Letölthető: patch-2.4.23-rc4.bz2

Változások listája Marcelo levelében.

Linus Torvalds: Linux 2.6.0-test10 ``Stoned Beaver''

 ( trey | 2003. november 24., hétfő - 9:13 )

Ok, közeledünk a végső 2.6.0 kiadáshoz. Majd egy hónappal a 2.6.0-test9 után Linus tegnap kiadta a 2.6.0-test10 patchet. A patch mérete kb. 100Kb tömörítve, ami egy kicsit nagyobb ugyan, mint amit remélt, de Linus egészen elégedett ezzel. A patch nagyrészt kicsi javításokat és triviális fixeket tartalmaz.
Ahogy Linus írta, megpróbált szigorú lenni a patchek elfogadásakor, így a javítások nagy része az ``ez valószínűleg nem ront el semmit'' kategóriába tartozik.
Vannak még a kernellel stabilitási gondok, amelyek vélhetően a preemptálással vannak összefüggésben. Ha valakinek stabilitási problémái vannak, akkor ne fordítsa bele a kernelbe a CONFIG_PREEMPT opciót.

Marcelo Tosatti: Linux 2.4.23-rc3

 ( trey | 2003. november 22., szombat - 9:50 )

"Néhány kritikus hiba jelentkezett, így itt az -rc3." - írta Marcelo a kernel listára.

Andrew Morton: Linux 2.6.0-test9-mm4

 ( trey | 2003. november 19., szerda - 16:42 )

Andrew ma kiadta a 2.6.9-test9 kernelhez a negyedik -mm patchet. A patch számos javítást tartalmaz azokhoz a patchekhez, amelyek csak Andrew -mm fájában találhatók meg jelenleg. Az ACPI PM timer patch által okozott interaktivitási problémákat remélhetőleg javítja ez a patch.

Marcelo Tosatti: Linux 2.4.23-rc2

 ( trey | 2003. november 19., szerda - 16:35 )

"Hi,
Itt az -rc2.

Többek között fontos netfilter javítások, számos ACPI javítás, néhány driver javítás (tulip, tg3, megaraid2).

Ha nem mutatkozik probléma, akkor a végleges verzió pár napon belül megjelenik." - írta Marcelo.

Nick's scheduler policy v19a

 ( trey | 2003. november 17., hétfő - 9:13 )

Nick Piggin kiadta a CPU ütemezőjének v19a-s verzióját mind a Linus (2.6.0-test9-bk19), mind az -mm (2.6.0-test9-mm3) kernelfához. Az új ütemező interaktivitást segítő munkákat tartalmaz.

Pontosabban: Az interaktivitást javítja, hogy microsecundum alapú számláló segíti a prioritás és időszelet kalkulációt. Javított dinamikus prioritási érzékenység a preemptált taszkokhoz, és javított korrektség (fairness) jellemzi.

A Linux processz ütemező

 ( trey | 2003. november 15., szombat - 22:37 )

Mivel közeledik a 2.6-os Linux kernel első stabil kiadásának időpontja (talán már decemberben megjelenik a stabil 2.6.0), úgy gondoltam, hogy nézzük át az egyik legfontosabb ``alkatrészét'', amely Molnár Ingonak köszönhetően jelentős fejlődésen esett át a 2.5-ös fejlesztési periódus alatt.

Ütemezés
-----------

Az ütemező (scheduler) a kernel azon része, amely kiválasztja azt a processzt, amely következőként futhat. Az ütemezőt (vagy más néven processz ütemezőt) úgy is tekinthetjük, mint egy darab kódot, amely azért felel, hogy a processzor véges erőforrását felossza a rendszeren levő futtatandó processzek között. Az ütemező az alapja az olyan multitaszkos operációs rendszereknek, mint amilyen a Linux. A ütemező azzal, hogy helyes sorrendben kiválasztja azt, hogy melyik processz futhat egy másik után, nagy mértékben felelős a rendszer helyes kihasználtságáért. Ha munkáját helyesen teszi, akkor azt az benyomást keltheti a felhasználóban, hogy a processzek egy időben, párhuzamosan futnak. Pedig egy egyprocesszoros rendszer esetében egy időpillanatban mindig csak egy processz futhat.

Az ütemező mögött álló elgondolás egyszerű. A processzoridő legjobb kihasználása érdekében tételezzük fel, hogy vannak futtatandó processzek, és hogy egy processznek minden körülmények között futnia kell. Ha több processz van, mint amennyi processzor található a rendszerben, néhány processz nem fog mindig futni. Ezek a processzek futásra fognak várni. Azt a fontos döntést, hogy melyik processz futhat legközelebb a futtatandó processzek közül, az ütemezőnek kell meghoznia.

A multitaszkos operációs rendszereket két fő részre oszthatjuk: kooperatív multitaszkos vagy preemptív multitaszkos rendszerekre. A Linux, mint az összes Unix variáns, és a legtöbb modern operációs rendszer (igen a Windows is), preemptív multitaszkos rendszer. A preemptív multitaszking lényege, hogy az ütemező hozhat olyan döntést, hogy egy processz futását felfüggeszti, és helyette egy másik processz futását engedélyezi. Azt az eseményt, amikor egy processz nem önszántából mond le a futásáról, hanem az ütemező készteti arra, hogy szüneteltesse azt, preemptálásnak nevezzük. Azt az előre meghatározott időt, amennyit a processz azelőtt futhat, mielőtt a preemptálás bekövetkezik, időszeletnek (timeslice) hívjuk. Az időszelet tulajdonképpen nem más, mint a processzoridő azon szelete, amely az egyes processzekre jut. Az időszeletek kezelése teszi lehetővé az ütemezőnek, hogy a rendszer számára globális ütemezési döntéseket hozzon. Az ütemező feladatai közé tartozik az is, hogy megakadályozza, hogy egy processz egymagában kisajátítsa a rendszert. A Linux kernel ütemezője dinamikusan számolja ki az időszeletet.

Exec-shield a 2.6.0-test9-mm3 kernelhez

 ( trey | 2003. november 13., csütörtök - 17:15 )

Hozzáhegesztettem Molnár Ingo exec-shield patchének -G4-es verzióját a ma megjelent 2.6.0-test9-mm3 kernelhez.

Andrew Morton: Linux 2.6.0-test9-mm3

 ( trey | 2003. november 13., csütörtök - 15:17 )

Andrew Morton - a 2.6-os Linux kernel karbantartója - ma kiadta a harmadik -mm patchet a 2.6.0-test9 kernelhez. A patch több új javítást is tartalmaz, de egyik sem esik a kritikus kategóriába.

Forcedeth a 2.4-es kernelhez

 ( trey | 2003. november 12., szerda - 19:50 )

Az NVidia nForce chipset alapra épülő hálózati kártya tulajdonosai bizonyára örülni fognak az alábbi hírnek:

Mint az köztudott, nemrégiben megjelent egy alpha állapotú meghajtóprogram az Nforce chipset ethernet csatolófelületéhez. A driver a forcedeth névre hallgat, és GPL licenc alatt érhető el. Sajnos nem az NVidia adta ki a drivert, hanem lelkes fejlesztők RE munkájának köszönhető, hogy létezik.

cfq + io prioritások

 ( trey | 2003. november 11., kedd - 22:50 )

Jens Axboe - a SuSE kernelhackere - nice szinteket épített a CFQ (completely fair queueing) IO ütemezőbe (a CFQ IO schedulerre az jellemző, hogy működése során megpróbálja egyenlő részre felosztani a rendelkezésre álló IO sávszélességet a processzek között). Hogy működnek ezek az nice szintek?

A processzhez hozzá van rendelve egy nice szint, amely a 0-tól 20-ig levő tartományban bármennyi lehet. A 0-ás és a 20-as szintek különleges szintek. A 0-ás szint jelentése: csak akkor engedélyezzük a processz számára az IO műveletet, ha a diszk ``idle'' állapotban van, a 20 jelentése: a processz IO-ját valósidejűnek (realtime) tekintjük. A valósidejű IO-val rendelkező processz fér hozzá a diszkhez elsőként. Az 1-19 szint valahol a kettő között van, azaz az IO 5%-95%-át ``engedélyezi'' a processz számára.

Mire is jó ez?

Marcelo Tosatti: Linux 2.4.23-rc1

 ( trey | 2003. november 10., hétfő - 22:48 )

"Hi,

Itt az -rc1.

Többek között hálózati eszközmeghajtó javításokat (b44, tg3, 8139cp), különböző x86-64 hibajavításokat tartalmaz.

Kérlek segíts tesztelni!" - írta Marcelo az LKML-re.

Backdoor-t próbáltak csempészni a fejlesztői Linux kernelbe

 ( trey | 2003. november 6., csütörtök - 9:23 )

Larry McVoy - a BitMover alapítója, a Bitkeeper atyja - tegnap egy az LKML-re küldött levelében felhívta a fejlesztők figyelmét arra, hogy valaki backdoor kódot próbált becsempészni a fejlesztői kernelfába.

``Valaki közvetlenül módosította a CVS fát a kernel.bkbits.net-en. Dave megnézte a gépet és úgy látszik, hogy valaki megpróbált betörni, és meg is csinálta.''

Andrew Morton: Linux 2.6.0-test9-mm2

 ( trey | 2003. november 5., szerda - 12:23 )

Andrew Morton - a 2.6-os kernel karbantartója - ma kiadta a második -mm patchet a 2.6.0-test9 kernelhez. A patch random javításokat tartalmaz. Egy kis tuning a Nick Piggin féle anticipatory IO ütemezőhöz (a 2.6 jelenlegi alapértelmezett elevatora, amellyel voltak kisebb gondok az elmúlt napokban) és némi readahead tuning, amelyek segítségével jobb eredményt lehet elérni az adatbázis tesztekben.
Az anticipatory IO ütemező egyelőre még a deadline IO ütemező (a régi elevator kód) mögött van egy kicsit a teljesítményben a random IO tesztekben (adatbázis műveletek) de reménykedjünk.

Exec-shield a Linux 2.6.0-test9-mm1 kernelhez

 ( trey | 2003. november 2., vasárnap - 20:17 )

Itt a Molnár Ingo féle exec-shield a legutolsó -mm kernelhez.

Marcelo Tosatti: Linux 2.4.23-pre9

 ( trey | 2003. október 31., péntek - 11:50 )

Marcelo kiadta a 2.4.23-as kernel kilencedik pre verziojat. A bejelentesben azt olvashatjuk, hogy a 2.4.24-pre-ig mar csak bugfixeket fogad a karbantarto. Nehany korabban beolvasztott problemas ACPI patch eltavolitasra kerult a jelenlegi prepatch-bol.

Mi várható a Linux 2.6-ban?

 ( trey | 2003. október 30., csütörtök - 19:59 )

Dave Jones (akkori SuSE-s, jelenleg Red Hat-os fejlesztő) pontosan egy éve adta a ki a Post-Halloween Document névre hallgató írását, amelyben arról írt, hogy mi várható a 2.6-os kernelben. A kernelhacker most a közelgő Halloween ünnep miatt nem tudta megállni, hogy ne frissítse írását.