V tom článku sice autoři na takovou situaci nenarazili, ale plně si tuto možnost uvědomují a proto se tyhle patche do mainlinu nikdy nedostanou a ani to nebylo účelem. Smyslem toho článku bylo pouze poukázat na to, že současný scheduler už dnes nedostačuje a bude zřejmě vyžadovat zásadní vylepšení.
Fajn, takze ... pocitam ze se stejne chodis ptat, jak svoje auto pomoci rozbrusovacky a svarecky predelat na formuli?
Jinak kernel ma scheduleru nekolik (by default) a muzes si vybrat kterej pouzijes. Kazdej ma svy pro a proti, a lidi jako ty by si rozhodne jinej nez defaultni vybirat nemeli, protoze pak se prozmenu budou ptat, proc jim spousta veci prestala fungovat.
Uvedom si laskave, ze tohle funguje PRESNE stejne jako kdyz nekdo odreze flexou "prebytecny casti motoru", jako treba ... vejfuk, a dostane z toho nejakou tu kW navic ... ovsem ... se spotrebou 3x vetsi a emisema 1000x vetsima.
Takze bud vis co delas a pak se nepotrebujes ptat jak to udelat, nebo to nevis, a pak se radsi neptej.
"Pokud se musíš ptát, nikdy se to nedozvíš. Pokud víš, stačí se jen zeptat."
- Stop (nejspíš pro speciální případ vypnutí jádra) http://lxr.free-electrons.com/source/kernel/sched/stop_task.c#L112
- Earliest Deadline First http://lxr.free-electrons.com/source/kernel/sched/deadline.c#L1775
- Realtime plánovač (s dvěma podtřídama: RoundRobin a FIFO) http://lxr.free-electrons.com/source/kernel/sched/rt.c#L2263
- Completely Fair plánovač http://lxr.free-electrons.com/source/kernel/sched/fair.c#L8408 (nejspíš bude ale brzo nahrazen nějakým forkem s lepšími výsledky)
- Idle plánovač http://lxr.free-electrons.com/source/kernel/sched/idle_task.c#L84 "virtuální" pro idle vlákno (to co běží, když nic jinýho neběží, v závislosti na architektuře to je while(1){}, HALT instrukce nebo volání uspání)
+ nárazník, co testuje zda nedošlo k plánování uvnitř idle vlákna (?)
Odkazy jsou na spojový seznam, tak jak se postupně v kernelu úloha matchuje na daný plánovací algoritmus.
potom je ale clanok zle napisany. mam doma solarnu elektraren a na amaterskom portali o elektrarnach vydaju clanok, ze je novy firmware pre solarne elektrarne, ktory zvysi ucinnost. nikde ani slovo o tom, ze je to len na isty typ elektrarni, ze ma novy firmware nevyhody. niekto sa opyta ako si ten firmware nahra do svojej elektrarne. to je podla mna analogia tejto situacie.
zpravicka je v pohode, jen ji musis umet cist, jde o lowlevel zalezitost, kdyz budes cist o tom ze vedci prisli na to jak aplikovat fotoclanek na igelit, taky si to hned nebudes chtit doma aplikovat na pytlik od rohliku :) jinak tvuj priklad s firmware pokulhava na tom, ze zde nebyl zverejnen celek (jadro) ale rozdilove soubory oproti source, tedy totozne jako by jsi mel patch na zdrojaky fw solarni elektrarny ve zpravicce ze vedci prisli na to jak zlepsit ucinost a krome presentace sveho zjisteni dali vyzkumnikum patche, taky by to nebylo zamerene primarne na end user, ale na vyzkumniky :)
tvuj dotaz je principem podobny jako "jak si vyrobim v garazi jadernou elektrarnu? ps: rozdelat ohen v krbu uz umim" ;)
jen zhruba... nainstalujes si vyvojove balicky pro kompilaci jadra, stahnes si zdrojak jadra, stahnes si patche pro jadro, aplikujes patche na jadro, zkonfigurujes jadro, zkompilujes jadro, nainstalujes jadro...
Musí to být konkrétně vanila 4.1, jako vidím v tom patchi, nebo mohu aplikovat patch na zdroják kernelu, co bych si stáhl z repozitářů? Pokud potřebuji toto konkrétní jádro vanila 4.1, jak stáhnu jeho zdroják Koukal jsem na kernel.org a nevidím ho tam (vidím tam 4.1.21:
https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.1.21.tar.xz https://cdn.kernel.org/pub/linux/kernel/v4.x/patch-4.1.21.xz
https://cdn.kernel.org/pub/linux/kernel/v4.x/incr/patch-4.1.20-21.xz
To všechno musím stáhnout, stáhnout zdroják z githubu toho patche a zkusit zkompilovat a nainstalovat?
Co grafické karty a další věci, bude to fungovat?
Patche sú len zmeny oproti predchádzajúcej verzii
Musíte stiahnuť celé zdrojové kódy napr. z
https://www.kernel.org/pub/linux/kernel/v4.x/
A tam je tu súbor napr.
linux-4.1.21.tar.gz zo 6.4.2016 10:23 oveľkosti 120MiB.
tak at zkousi a neco se uci, studijniho materialu o nastaveni a kompilaci kernelu, pripadne o aplikovani patchu se po webu vali mraky, staci se zeptat Mr. Googla
primer se stavbou jaderne elektrarny v garazi byl docela trefny, nikoho rozumneho by nenapadlo jit na forum jadernych fyziku a prudit tam s otazkami, jaky plech ma pouzit na palivove tyce...
Pokud nemáš doma nějaký výkonný server s procesory v NUMA konfiguraci atp., ty patche ti velmi pravděpodobně nijak nepomůžou. Ubuntu má postup pro sestavení balíčků s vlastním kernelem spoustu návodů, třeba tohle https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
Nutné prerekvizity:
- Stroj s desítkami výpočetních jader, uspořádaných do několika úrovní sousedských spojení (~ NUMA s několika paticemi s vícejádrovými čipy)
- Jediná náročná úloha (třeba databázový server) s mnoha vlákny
- Zdrojáky Ubuntu kernelu (nejspíš vanilla + balík patchů)
- Schopnost používat git a/nebo schopnost ruční úpravy mezi paralelními vývojovými větvemi
Výsledky:
- Po roce (a víc) učení zjistíš, že ten proof of concept nefunguje v jiné konfiguraci, protože to autoři udělali na míru jedinému stroji a jediné aplikaci a plánovač se pro jiné situace (například core2duo) chová hůř než CFS
- CFS již neexistuje v předchozí podobě a není nadále kompatibilní s tvojí vývojovou větví
- Rok (a víc) znalostí jaderného plánovače, programování v lowlevel C a znalost verzování projektu.
Napsat dobry planovac ku*rva umeni, napsat uplne primitivni je celkem easy, na druhou stranu asi neexistuje neco jako univerzalni planovac optimalni pro vsechny zateze, takze proc se rmoutit, jde jen o to vybrat se to "mensi zlo".
Docela by me zajimalo jaky scheduler pouzivaji Windows a jestil jsou tam taky podobne "prestrelky", hadam, ze ne pac neni asi o com, mas to co je a nic jineho, proste neverim, ze by M$ nemusel scheduler upravovat v prubnehu casu.
Báječné. Hned jdu nahodit svůj mnoha procesorový stroj a vyměnit plánovač.
Ale vážně. Neškodilo by trochu se zamyslet. Článek uvedený ve zprávičce poukazuje na problémy na masivně multiprocesorových strojích (neplést s vícejádrovými CPU). Podrobnosti lze najít v odkazovaných patchích, které se věnují mimo jiné také správnému umístění na správný NUMA node. Což jsou věci které se na běžném 4-36jádrovém CPU jen tak neobjeví.
Podobně zbytečné je chtít srovnání s BFS, který je navržený pro co nejvyšší interaktivitu za cenu mírné ztráty surového výkonu. Prostě je to naprosto jiná pohádka.
Je fajn pracovat na co nejlepším chování scheduleru i pro ne zcela běžné stroje. Ale mást uživatele bulvárními zprávičkami po kterých se budou chudáci začátečníci trápit kompilací jádra, která jim nic nepřinese ... to není hezké.
Pokud byste chtěli udělat něco užitečného, tak otestujte chování odkazovaných úprav na normálním PC. Autoři takový test neudělali. A možná dobře věděli proč.
Tak kompilace jadra jim prinese to, ze se (nekteri) nauci to jadro kompilovat ;D. Vykon rozhodne nikoli (a kdyz, tak nemeritelne).
Ono i pro cloveka kterej vi je provoz nedistribucniho patchovanyho jadra pomerne vopruz, Driv nebo pozdejs narazis na to, ze autor patch prestane udrzovat, po par verzich jadra se zmeni zakladna tak, ze to bez dalsich uprav patchnout nejde ...
Nie je to tak hrozné.
Mám skúsenosť s relatívne hardcore patchmi..
http://cvs.gna.org/cvsweb/magma/base/arch/x86/patches/?cvsroot=rtai
A tá údržba celkom ide..
hal-linux-2.6.24-x86-2.0-03.patch 1.2 8 years
hal-linux-4.1.18-x86-1x.patch 1.3 5 weeks
hal-linux-4.1.18-x86-2x.patch 1.1 5 weeks
hal-linux-4.1.18-x86-3x.patch 1.1 3 weeks