A kernel lappangás leszorítása, új fejezet

Címkék

Mostanában igen ellinkeltük a dolgot, nézzünk egy kicsit mélyebbre.



Andrew Morton 2.5.54-mm3 patchsetjébe beburkolva megtalálhatjuk az új kernel lappangás (latency) munkát. A lappangás nem más ezen munka szemszögéből nézve, mint az az idő ami eltelik az alatt, amíg a magas-prioritású processz futó állapotba kerül, és hozzájut a processzorhoz, mint erőforráshoz. Az ütemezési lappangás fontos tényezője egy operációs rendszernek, főként egy olyan rendszernek amit desktop felhasználók használnak. Amikor megmozdítod az egered, elvárod, hogy az azonnal mozogjon, és ne csak pár másodperces késlekedéssel válaszoljon. Lehetőleg azonnal mozogjon a képernyőn. Az alacsony lappangás kritikus az olyan alkalmazásoknál mint, például a streaming media felvétel és lejátszás, CD írás, adat szerzés, és így tovább. Ha a rendszer válaszadási képessége nem megfelelő, akkor ezek az alkalmazások nem fognak megfelelően működni. Gondoljunk egy mp3 vagy .avi file lejátszásra.

A nagy késlekedés legutolsó forrása a jelenlegi fejlesztői kernelben a "page table" lerombolási kód. Azaz a memória felszabaditás. Ezt a késlekedést egyszerűen reprodukálni tudja bárki - elég egy OpenOffice.org, Mozilla vagy más nagy memória-igényű alkalmazást bezárni, és közben meg kell próbálni valamit csinálni a géppel. Az egér "akadni" fog, nem reagál azonnal, más programok indítása lehetlen, csak késve indulnak, stb. Ez a késlekedés azért van, mert a "romboló" kód tartja a processz page_table_lock-ját egészen a tisztítási folyamat befejezéséig. Ha a processz kellően nagy, akkor ez rendkívül sokáig is tarthat (akár másodpercekig is). Amíg a kernel lockolva tartja, nem lehetséges eltávolítani a processzortól, hacsak a kernel nincs preemption (előjegyzés) támogatással fordítva (Rober M. Love interjú: preempt kernel patch). Szóval bármi más, ami futni szeretne, ezen idő alatt kénytelen lesz várakozni.A megoldás egy új függvény, az unmap_vmas() készítése, amely kezeli ezt a "page table" felszabadítási folyamatot. Az memória oldal területet felosztja több kisebb részre (256 és 2048 méretű oldalakra, függően az architektúrától, és a kernel konfigurációs opcióktól); és a felszabadítást kisebb készletekben végzi. Közben, ha jön egy magasabb prioritású processz, a lock-ot felszabaítja és újraütemezi a processzort, ha az szükséges. Amint a magasabb priorítású processz befejezi a dolgát, a lock ismét lezár és a tisztítási folyamat folytatódhat.

Ennek a részletekben történő "teardown" (leromboló) eljárásnak köszönhetően a legrosszabb esetben is 500 mikromásodperc lehet az ütemezési késlekedés egy 500 MHz Pentium processzoron. Ez akkor igaz ha ext2 filerendszert használsz, és nem mountolsz és umountolsz filerendszert. Ez elegendően gyors a legtöbb felhasználónak.

Hozzászólások

a lappangas a betegsegnel sem a betegseget jelenti, hanem a lappangasi ido egy betegsenel az az ido, ami a betegseg bekovetkezteig telik el. Mint ahogy ha jol tudom az angolban is hasznaljak a betegsegeknel a latency szot. De tolem lehet akarmi, en nem vagyok nyelvesz.

Szerintem is jobb lenne a fenti javaslat v. valami hasonló, ha már a nyelvészkedésnél tartunk, amúgy a legkomolyabb elismerésem a cikknek.

latecy = lappangas, lappangasi ido (sztaki szotar)

latent = lappango, latens, rejtett, rejtozkodo, szunnyado (jdict)

------------------------------------------------------------------

delay = kesedelem, halogatas (sztaki szotar)

Szarintem itt jo a lappangas szo. De imho ebben a cikkben nem ez a lenyeg. Ugorjunk.

"másodperces késlekedéssel válaszoljon.", "A nagy késlekedés legutolsó forrása", "Ez a késlekedés azért van, mert a "romboló" kód", "ütemezési késlekedés egy 500 MHz Pentium"

mint latod a keslekedes szo is szerepel a cikkben, a masik ennek szinonimajakent kerult alkalmazasra.

Valóban ez volt az egyik szűk keresztmetszet a Linuxon. Személyesen tapasztaltam, hogy egy nagyobb alkalmazás leállítása után (néha indítása közben) a gép döcögőssé vált egy rövid időre, pláne gyengébb gépen. Remélem ez azért nem megy a rendszer stabilításának rovására... :)

Megsertodni... LOL

Miert sertodnek meg? En ugy ereztem, hogy az ott jo, ha ennyien allitjak, hogy nem akkor nem. Fene se sertodik meg ezen ... ;-)