- teljes O(1) ütemezés
- 'tökéletes' SMP skálázhatóság
- jobb SMP affinitás
- kötegelt (batch) scheduling
- kezelje az extrém magas load-okat jobban, összeomlás és scheduling storm nélkül
- O(1) RT scheduling
- futtassa a fork()-olt "gyermek" (childer) processzt a "szülő" (parent) processz előtt
A patch letölthető innen.
Tulajdonképpen ez a lényege a Mingo O(1) scheduler patch-eknek. Jó hír, hogy Linus a 2.5.2-pre10 óta beletette a 2.5-ös devel kernelbe az új ütemezőt. Közben jöttek sorban a patchek, és Robert Love bejelentette, hogy a preemptive kernelpatch kompatibilis lett Molnár Ingo új ütemezőjével. Tehát akár együtt is használhatjuk őket.
Szóval ez mind szép és jó, de miért is jó ez nekünk? Miért jobb az új scheduler, mint a régi?
Partha Narayanan az IBM-től, készített egy friss teljesítménytesztet Ingó O(1) ütemezőjével. A teszt egy 8-utas 700Mhz-es Pentium III szerveren futott, különböző beállításokkal. A teszteket úgy végezték, hogy csak egy CPU volt engedélyezve, aztán 4 CPU, és végül mind a 8 CPU használatban volt.
Az összes tesztet a 2.4.17-es kernelen végezték, összehasonlítva a régi scheduler-t a legfrissebb új O(1) scheduler-el, ami a teszt pillanatában a -J2 -es volt. (A postázás pillanatában már elérhető volt a -J4 -es is)
Az eredmények meggyőzőek az új scheduler-el. A tesztek azt mutatták, hogy a teljesítmény kb. 18%-al javult egy CPU esetén, kb. 45%-al javult 4 CPU -val, és kb. 187% !!! javult a teljesítmény 8 CPU-val. Természetesen a régi ütemezőhöz képest. IMHO nem rossz.
A teszteléshez a Java alapú ValanoMark-ot használták.
- A hozzászóláshoz be kell jelentkezni
- 8335 megtekintés
Hozzászólások
Biztatasul:
Este megkerdeztem a #kernelnewbies csatornan az ottani community velemenyet a patch -rol:
|trey| what is this community opinition about mingo's (0)1 scheduler? in nutshell?
--> cHuKy (~chuky@193-153-23-8.uc.nombres.ttd.es) has joined #kernelnewbies
--> pragimus (~pragma@adsl-64-169-2-246.dsl.renocs.nvbell.net) has joined #kernelnewbies
|velco| scatter-gather is good for _unrelated_ frames too, e.g. you can setup SG receive DMA and receive a bunch of frame with a single interrupt.
|badd00d| trey: loving it.
|riel| trey: it rules
|crimsun| trey: by no means do I speak for the community, but I like it.
|oxymoron| trey: Seems good.
|velco| trey: it rocks.
|trey| thx
|trey| i try it
|negrox| under which menu in the kernel config is the devfs stuff? (I did look)
sarnold| trey: I'm too conservative to have tried it yet :)
Azt hiszem nem rossz velemenyek. Foleg nem, ha olyan hackerek mondjak, mint riel (Rik van Riel).
- A hozzászóláshoz be kell jelentkezni
Hello trey.
Ha esetleg kiprobalnad, akkor le tudnad irni a tapasztalataidat a schedulerrel kapcsolatban? Erdemes hasznalni 1 CPU-s gepen?
Udv.
- A hozzászóláshoz be kell jelentkezni
Yep. Hasznalom az uj scheduler -t kb. ket hete, tegnap letoltottem a legfrissebb verziot (-J7 asszem) és a 2.4.17 -et patcheltem meg vele. Leforgat, reboot. Miutan ujrabootoltam, mar latszott, hogy valami nem ugyanaz. Az X gyorsabban indult, az ablakok gyorsabban bejottek, az opera szinten gyorsabban indult. Lehet, hogy csak bemagyaraztam magamnak? A CPU terheles kisebb lett, ezt viszont a gkrellm egyertelmuen mutatta. Viszont hasznalok a gepemben tvtuner kartyat, es amikor az xawtv -n hangot allitottam a regi kernellel, akkor az kicsit keslekedve valaszolt. Viszont a mingo patch -el a reakcioja sokkal gyorsabb lett. Nem csak en probaltam ki, hanem Friczy baratom is, o is ezekrol a megfigyelesekrol szamolt be. Szamszeruleg nem tudom pontosan, hogy mekkora a rendszer gyorsulasa, mert olyan programot amivel ezt merhettem volna, meg nem talatam, de szerintem az egy CPU -val valo 18-20% gyorsulas az realis lehet. Termeszetesen tobb CPU -val a gyorsulas a meresek szerint drasztikusan megno. IMHO erdemes kiprobalni a stuff -ot, mert valoban jo.
- A hozzászóláshoz be kell jelentkezni
Hello.
Kosz a valaszt. Meg hezitalok kicsit, hogy hasznaljam, mert meg nem vagyok egy nagy asz linuxban, de lelkes vagyok.
Okoz valami nehezseget a felrakasa?
A kernelhackeres cikkhez csak annyit, hogy jo es erdekes. Es az aki a helyesirasi tartalmat veszi elobb eszre, mint a tartalmat, szerintem nem igazan fogta fel a lenyeget.
Udv.
- A hozzászóláshoz be kell jelentkezni
Hat igen buzgo nyelvorok mindig is voltak/lesznek, de ez igy van jol. En legkozelebb igyekszek helyesebben irni, ok meg kicsit toleransabbak lesznek. Ha nem, az se baj =).
Lassuk, mit is kell tudni a kernelpatch -ek hasznalatarol:
Altalaban a patch -ek valamilyen compressed formaban vannak (.gz, ujabban .bz2)
tehat letoltjuk a kernelpatch -et, kibontjuk a kernelforrast, amelyet elozoleg letoltottunk valamelyik mirror -rol.
A kernelforras helye altalaban a /usr/src/linux
A patch -et masoljuk bele ebbe a konyvtarba, malyd adjuk ki a kovetkezo parancsot:
gzip -cd patchXX.gz | patch -p1
vagy ha .bz2 -ben van, akkor:
bzip2 -dc patchXX.bz2 | patch -p1
Jelen esetben ez igy nez ki:
root@sunshine:/data/kernel/linux# ls sched-O1-2.4.17-J7.patch.gz
sched-O1-2.4.17-J7.patch.gz
root@sunshine:/data/kernel/linux# gzip -cd sched-O1-2.4.17-J7.patch.gz | patch -p1
patching file fs/proc/proc_misc.c
patching file fs/proc/array.c
patching file fs/nfs/pagelist.c
patching file fs/ufs/truncate.c
patching file fs/reiserfs/buffer2.c
patching file fs/reiserfs/journal.c
patching file fs/jffs2/background.c
patching file fs/jbd/journal.c
patching file fs/jbd/revoke.c
patching file fs/jbd/transaction.c
patching file fs/binfmt_elf.c
patching file fs/buffer.c
patching file fs/locks.c
patching file init/main.c
patching file kernel/sched.c
patching file kernel/exit.c
patching file kernel/capability.c
patching file kernel/timer.c
patching file kernel/fork.c
patching file kernel/softirq.c
patching file kernel/ptrace.c
patching file kernel/sys.c
patching file kernel/signal.c
patching file kernel/printk.c
patching file kernel/ksyms.c
patching file mm/oom_kill.c
patching file mm/page_alloc.c
patching file mm/highmem.c
patching file include/linux/sched.h
patching file include/linux/list.h
patching file include/linux/kernel_stat.h
patching file include/linux/smp.h
patching file include/asm-i386/smp.h
patching file include/asm-i386/bitops.h
patching file include/asm-i386/pgalloc.h
patching file include/asm-i386/mmu_context.h
patching file include/asm-i386/hw_irq.h
patching file net/unix/af_unix.c
patching file net/ipv4/tcp_output.c
patching file net/sunrpc/sched.c
patching file net/sched/sch_generic.c
patching file net/socket.c
patching file drivers/net/slip.c
patching file drivers/block/loop.c
patching file drivers/char/mwave/mwavedd.c
patching file drivers/ide/ataraid.c
patching file drivers/md/md.c
patching file arch/i386/mm/fault.c
patching file arch/i386/kernel/smpboot.c
patching file arch/i386/kernel/process.c
patching file arch/i386/kernel/apic.c
patching file arch/i386/kernel/nmi.c
patching file arch/i386/kernel/smp.c
patching file arch/i386/kernel/i8259.c
patching file arch/i386/kernel/entry.S
root@sunshine:/data/kernel/linux#
Ennyi. Utanna szokasos modon leforgatjuk a kernelt, es ujrabootolunk a patch -elt kernellel. Mindig hasznaljunk eredeti kernelforrast, vagy ugyeljunk arra, hogy ha mar hasznaltunk valamilyen patch -et, akkor az mukodjon egyutt a jelenlegivel. Kulonben forditasi problemakat kaphatunk.
- A hozzászóláshoz be kell jelentkezni
Hello.
Koszi, ez pont jol jott.
Udv.
- A hozzászóláshoz be kell jelentkezni
Meg annyit a patch -eleshez, mert latom sokakanak okozott gondot (legalabbis a kapott levelek alapjan gondolom ;)) :
miutan a fennt emlitett modon a kernelt megpatch -eltuk, rendesen ujra kell forditani a kernelunket.
Tehat:
Ha kiirta, hogy patching egy csomo file ra, es kozben nem irta ki hogy reject (es nem keletkeztek .rej filek), es utanna visszakaptad a prompt -ot , akkor jo a patcheles.
Ha ez megvan, utana:
szokasos modon configuralod a kernelt, (ha ezt elotte meg nem tetted volna meg).
Tehat:
make menuconfig ( a scheduler nem igenyel beallitast, nem is lehet allitani, mivel nem szolgaltatas, hanem alapfunkcio)
elmented
make dep clean bzlilo (vagy bzImage igeny szerint) modules modules_install;depmod -a
edit lilo.conf
reboot
ha mindent jol csinaltal, akkor legkozelebb mar az uj kerneled fog futni, az uj schedulerrel .
Enjoy it.
- A hozzászóláshoz be kell jelentkezni
Ha rendesen atolvasod a cikket, kitunik, hogy serverre plane erdemes :)
Es azert kell make clean ( ami nem csak kernelnel erdemes ), hogyha valami belegazolt az src - be, akkor is korrekt legyen a forditas. De a kernelnel sem kotelezo. Max fagy.
Pontscho
- A hozzászóláshoz be kell jelentkezni
Az edit lilo.conf es a reboot kozott megemlitenem, hogy 'lilo' ;D (akinek a leiras szukseges, annak ez nem egyertelmu, nekik szol)
Meg valami: szerintem a make modules_install es a depmod -a 2.4-tol folfele mar nem szukseges, a Makefile tartalmazza.
Vegul: a legjobb, ha a debian-os kernel-source-2.4.17 -tel vegezzuk el mindezt, mert az minden egyebet megcsinal, beleertve a lilo-t is.
mingo a kiraly :)
- A hozzászóláshoz be kell jelentkezni
A linux-flame listan kernelfejlesztok vannak? Mert ott lattam mar minden fele temat a trabant fotengelytol kezdve a hogyan epitsunk satratig. Nem hiszem, hogy mervado lenne.
En se ertek hozza ezert kerdeztem meg egyket hozzaerto embert.
Ideztem egyket aktiv fejleszto hozzaszolasat, es eddig mindenkinek csak jo velemenye volt a patch -rol. Naes az, hogy bekerult a 2.5 faba az imho eleg ok, Linus -nak konzervativabb fejlesztot nem negyon talasz (bar volt amikor racafolt erre).
Ja es ha szamit valamit a sajat tapasztalatom, akkor elmondhatom, hogy par nap teszteles utan, nekem is csak jo velemenyem van rola. Igaz, hogy par nap nem ok arra, hogy komolyabb kovetkezteteseket vonjunk le a dologbol, de itt egy _fejlesztes alatt allo dologrol_ van szo, eles szerverre semmi esetre sem ajanlatos tenni.
- A hozzászóláshoz be kell jelentkezni