Portál AbcLinuxu, 4. května 2025 23:40
Aktuální verze jádra: 2.6.35-rc2. Citáty týdne: Linus Torvalds, Andrew Morton. Nativní port ZFS pro Linux (OSNews). Epizoda „Zoufalých Androidů“ z tohoto týdne. Další přepis OOM zabijáka.
Současné vývojové jádro je 2.6.35-rc2 vydané 5. června. Tak, -rc2 je venku a doufejme, že opravuje víc problémů než zavádí. Trochu se mi nelíbí jeho velikost – uznávám, že není tak velké jako rc2 v minulém vývojovém cyklu, ale tam to také bylo neobvykle velké rc2. A tentokrát jsem opravdu doufal, že vývojový cyklus bude klidnější. Přibylo několik nových ovladačů a spousta oprav; zkrácený changelog je v oznámení, všechny detaily najdete v kompletním changelogu.
Stabilní aktualizace: Během minulého týdne žádné stabilní aktualizace nevyšly.
-- Andrew Morton (díky Valerii Auroře)
OSNews hlásí, že zaměstnanci americké Národní laboratoře Lawrence Livermorea [Lawrence Livermore National Laboratory] portovali souborový systém ZFS Sunu/Oraclu na Linux. Jaderný modul je distribuován ve formě zdrojových kódů, aby se obešla nekompatibilita licencí CDDL a GPL. Hlavní vývojář Brian Behlendorf také řekl, že LLNL opakovaně žádala Oracle, aby se situací ohledně licence něco udělal a ZFS se mohlo stát součástí jádra. ,Pracujeme na tom již nějaký čas a snažíme se přesvědčit Sun/Oracle, aby změnili licenci,‘ vysvětluje, ,bohužel musím říci, že jsme zatím neměli štěstí.‘ […] Stále ještě zbývá dokončit významný kus práce, takže se kód nehodí pro produkční nasazení. Ještě nebyla implementována posixová vrstva ZFS, takže připojení souborového systému zatím není možné; již je ale možný přímý databázový přístup.
napsal Jonathan Corbet, 7. června 2010
V poslední epizodě tohoto nekončícího seriálu jsme popsali kritiku, která blokovala začlenění blokování uspání, a nárys řešení, které se vynořilo z ruin. Oznámit, že tento příběh končí, je ale vždycky risk; nyní se zdá, že by diskuze o blokování uspání mohla vydržet ještě jeden či dva vývojové cykly.
4. června Ingo Molnár zaslal navrhované řešení, které bylo variantou přístupu založeného na kvalitě služby, který jsme popsali minulý týden. Vypadalo použitelně, dokud Linus (poprvé) nezabloudil do diskuze a neřekl:
A diskuze začala nanovo. Linus tlačil na řešení, které se vyhýbá vnitřním částem jádra (a konkrétně plánovači), jak jenom je to možné – což je cíl, který původní implementace blokování uspání sdílela. Také nastolil otázku vícejádrových procesorů, kterou současný kód neřeší. Mohlo by být užitečné vypnout jednotlivá jádra, když zátěž systému poklesne, a uspat systém, když nemá co na práci ani poslední CPU. Dalo by se předpokládat, že vícejádrová zařízení do ruky nejsou záležitost tak vzdálené budoucnosti, takže připravit se na ně vypadá rozumně.
Situace se tedy zkomplikovala – také se ale zdá, že narostla vůle ji vyřešit. Je zjevné, že skutečné řešení se asi neobjeví rychle, takže v mezičase možná dojde na dočasné řešení, které bylo navrženo v počátku diskuze: Přidat omezenou verzi API blokování uspání, aby bylo možné začlenit ovladače Androidu beze změn. To by mělo pomoci hlavní řadě i jádrům Androidu přiblížit se a přitom poskytnout čas na globálně akceptovatelné řešení problému blokování uspání. Tato omezená verze bude pravděpodobně začleněna s tím, že doba spotřeby vyprší v 2.6.27; spornější věci přijdou poté.
napsal Jonathan Corbet, 7. června 2010
Nikdo nemá rád zabijáka při nedostatku paměti [OOM killer]. Jeho úkolem je skrývat se mimo dohled do toho nešťastného dne, kdy systému dojde paměť a nebude moci nic dělat; OOM zabiják poté musí vybrat proces, který obětuje ve jménu nepřetržitého běhu. Je to ošklivá práce, o které si mnozí myslí, že by ji nemělo být zapotřebí. Ale přestože OOM zabiják není populární, stále ho máme po ruce; považujeme ho za jaderný ekvivalent právníků nebo výběrčích daní. Jednou za čas je užitečný.
Reputaci OOM zabijáka moc nepomohl fakt, že často vybírá špatnou oběť. Fakt, že byl běžící systém zachráněn, je jenom malá útěcha, když byly zabity užitečné procesy a ztraceny výsledky práce. Během let se mnoho vývojářů pokoušelo zlepšit sadu heuristik, kterou OOM zabiják používá, podle všeho s určitými úspěchy; stížností na špatný výběr je méně než dříve. OOM zabiják ale stále není perfektní, takže další a další vývojáři míří svá kopí na tento větrný mlýn.
Posledních několik měsíců úloha vylepšit OOM zabijáka padla na Davida Rientjese, který zaslal několik verzí svojí sady patchů přepisu OOM zabijáka. O této verzi doufá, že ji bude možné začlenit do 2.6.36; revizemi prošla již několikrát, ale ještě není jasné, jaký nakonec bude její osud.
Větší část sady patchů je věnována relativně přímočarým opravám a zlepšením, která nejsou obzvláště kontroverzní. Jedna změna otevírá poslední jadernou rezervu paměti procesům, které se buď ukončují, nebo jim má být doručen smrtící signál; to by jim mělo umožnit uklidit po sobě a rychle uvolnit paměť. Další změna brání zabíjení procesů, které jsou v jiné paměťové alokační doméně [memory allocation domain] než v té, ve které došla paměť; zabití těchto procesorů není férové a situaci s největší pravděpodobností nevyřeší. Jestliže je OOM situace důsledkem omezující politiky, za cíle jsou považovány jenom procesy, které mohou uvolnit stránky na uzlech, které tato politika řídí.
Další zajímavá změna se týká zabíjení potomků. Současný OOM zabiják poté, co si vybere oběť své nevítané pozornosti, zamíří na jednoho z potomků tohoto procesu, pokud nějací potomci existují. Zabití rodiče pravděpodobně potomky stejně zlikviduje také, takže pročištění potomků – alespoň těch, které mají vlastní adresovací prostor – by mohlo problém vyřešit s menšími ztrátami. Aktualizovaný OOM zabiják dělá totéž, ale s mířením – pokouší se zamířit na potomka, který má největší skóre „špatnosti“ [badness]. Cílem je zvýšit šance na rychlé a skutečné uvolnění paměti.
Další změna ovlivňuje chování, když je vyčerpána paměť v zóně dolní paměti [low memory zone]. Tato zóna přítomná na 32bitových systémech s 1 GB paměti nebo více je potřeba tam, kde musí mít jádro možnost použít přímý ukazatel. Občas se také používá pro DMA I/O. Když tato paměť dojde, říká David, zabíjení procesů ji pravděpodobně neuvolní a mohlo by způsobit skutečné potíže. Místo volání OOM zabijáka tedy požadavky na alokaci dolní paměti jednoduše selžou, pokud není přítomen příznak __GFP_NOFAIL.
Přidána byla nová heuristika „penalizace forkbomb“. Jestliže má proces velký počet potomků (kde výchozí hodnota „velkého“ je 1000) s méně než vteřinou doby běhu, je považován za fork bombu. Když taková situace nastane, je skóre upraveno tak, aby takový proces byl mnohem pravděpodobněji OOM zabijákem zvolen. Politika „zabití nejhoršího potomka“ zde stále platí, takže výsledkem tohoto řešení řešení bude fork bomba s 999 potomky. I v tomto případě je ale zabíjení potomků po jednom považováno za lepší výsledek než zabití potenciálně důležitého serverového procesu.
Nejkontroverznější část patche je kompletní přepis funkce badness(), která každému procesu v systému přiřazuje skóre. Tato funkce obsahuje většinu heuristik, kterými se určuje, který proces si nejvíce zasluhuje služby OOM zabijáka; postupem času se v ní nahromadilo mnoho testů, které se pokouší identifikovat procesy, jejichž skon by uvolnil nejvíce paměti a přitom uživateli způsobil co nejméně nepříjemností.
V Davidově sadě patchů staré heuristiky badness() téměř mizí. Místo toho se výpočet mění v jednoduchou otázku toho, kolik procent dostupné paměti proces používá. Jestliže celému systému dochází paměť, pak je „dostupná paměť“ součet celkové dostupné RAM a swapu v systému. Jestliže OOM situaci způsobuje vyčerpání paměti dostupné dané řídící skupině/cpuset skupině, pak je „dostupná paměť“ celkové množství alokované pro danou řídící skupinu. Podobný výpočet se provádí, pokud byly překročeny limity vynucené politikou paměti. Ve všech případech je využívání paměti procesem získáno součtem rezidentní sady [resident set] (počet stránek v RAM, které proces používá) a využitého swapu.
Výsledkem tohoto výpočtu je počet procent vynásobený deseti; proces, který využívá poslední byte jemu dostupné paměti, bude mít skóre 1000; proces, který nevyužívá žádnou paměť, bude mít nulu. Toto skóre je heuristicky laděno jenom minimálně, kód ale stále odčítá malou hodnotu (30) od skóre procesů vlastněných rootem s tím, že jsou o něco cennější než procesy vlastněné uživateli.
Další úprava hodnoty je přičtení hodnoty uložené v proměnné oom_score_adj každého procesu; tu lze nastavit pomocí /proc. Tato hodnota umožňuje upravit to, jak moc je OOM zabiják k danému procesu přitahován. Nastavení -1000 OOM zabijáka úplně vypne, zatímco nastavení na +1000 znamená, že danému procesu je na záda namalován obrovský terč. Jeden z důvodů, proč je tento patch kontroverzní, je odlišné jméno a sémantika této hodnoty od oom_adj, kterou OOM zabiják aktuálně používá; jinými slovy je to změna ABI. David implementoval mapovací funkci mezi těmito dvěma hodnotami, kterou se snaží problémy zmírnit; oom_adj je zastaralé [deprecated] a roku 2012 má být odstraněno.
Opozice vůči této změně ale zachází za potíže s ABI. Pochopit proč není vždy jednoduché; reakce jednoho z revidovatelů je jediné slovo nack. Námitky se podle všeho týkají toho, že patch úplně nahrazuje badness() místo toho, aby ji rozvíjel novým směrem; také se objevily obavy, že bude mít nový algoritmus horší výsledky. Je pravda, že nebyly zaslány žádné přesvědčivé důkazy, které by tuto změnu ospravedlňovaly, ale získat v tomto případě přesvědčivé důkazy je obtížné. Není žádný jednoduchý benchmark, který by dokázal kvantifikovat rozhodnutí OOM zabijáka. Máme tedy k dispozici jenom odpovědi jako:
Patche správy paměti bývá obtížné začlenit a přepis OOM zabijáka rozhodně nebude výjimka. V tomto případě to začíná vypadat tak, že bude zapotřebí vyšší moc, která zasáhne a rozhodne. A skutečně, Andrew Morton je připraven zasáhnout, řekl:
V závislosti na tom, jak se Andrew rozhodne, tedy může být v 2.6.36 na skladě nový OOM zabiják. Pro většinu uživatelů bude tato nová vlastnost asi tak vzrušující, jako když dostanou k narozeninám nový záchodový čistič, ale pokud to někdy pomůže jejich systému dobře přežít OOM situaci, nakonec ji ocení.
Tato omezená verze bude pravděpodobně začleněna s tím, že doba spotřeby vyprší v 2.6.27- asi to má byť 2.6.37...
u takto komplexniho fs ktery jeste nema ani stabilni diskovy format?Podle varování v Kconfigu ne, fakticky jo, diskový formát už se nezměnil hodně dlouho.
"ReiserFS odešel do věčných lovišť"
To mi vysvětlete, něco mi uniklo?
Však je to dobrej systém, to není nikdo kdo by reisera vyvýjel? Kdy pustěj toho vrahouna?
Edward Šiškin (vývojář Reiser4) plánuje svoje dílo v brzké době začlenit do vanilky, takže by ta nejistota kolem vývoje mohla trochu opadnout, a „starý“ ReiserFS je sice málo udržovaný, ale to je spíš příznakem toho, že je dost stabilní a prostě není potřeba ho dál upravovat. Mimoto do něj nedávno přistálo obrovské množství patchů kvůli akci „Kill the Big kernel lock“, tudíž nějaká údržba probíhá a jeho jaderný kód ještě zcela neosiřel.
Jediný problém ReiserFS je to, že se při návrhu nepočítalo s ACL, kvótami nebo xattry, takže tyhle modernější fce do něj byly dost ošklivě dohackovány a jejich používání není tolik otestováno (osobně mám právě s rozšířenými atributy špatné zkušenosti). Dnes se od jeho používání odrazuje, já ale vážně nevím proč. Pořád je to FS dost rychlý a v porovnání s Ext4 nebo brtfs je IMO i stabilnější.
Edward Šiškin (vývojář Reiser4) plánuje svoje dílo v brzké době začlenit do vanilky, takže by ta nejistota kolem vývoje mohla trochu opadnoutPlánuje neznamená, že mu to projde.
ReiserFS je sice málo udržovaný, ale to je spíš příznakem toho, že je dost stabilní a prostě není potřeba ho dál upravovat.A přesto je schopný samovolně se rozsypat na funkčním hardwaru.
Plánuje neznamená, že mu to projde.Doufat ale můžeme, ne?
A přesto je schopný samovolně se rozsypat na funkčním hardwaru.Myslíš tu známou chybu s xattrs? Hans byl sice hovado, ale věděl, proč nackovat přidávání vlastností, na které ten FS nebyl stavěný. Když ho ostatní vývojáři přehlasovali, mají, co chtěli.
Myslíš tu známou chybu s xattrs?Myslím, že ne, protože xattrs se tam nepoužívaly.
No chcel som pretaktovať procesor na vyššiu frekveciu. Pretože sa procesor bránil, tak úspešnému štartu predchádzalo približne desať reštartov, potom upozornenie na to že systém nieje konzistentný.Když ono se při přetaktování procesoru může stát ledacos – a poměrně běžně se například stává, že procesor uvnitř funguje OK, ale nestíhá komunikovat s okolím, takže třeba může místo všech dat na disk zapisovat nuly (případně zapisovat o kousek vedle). To z počátku vypadá nevinně, ale pak zjistíte, že je přepsaná komplet celá struktura filesystemu. (Už to, že si ext3 stěžoval, že je FS nekonsistentní, místo aby prostě chybu opravil podle žurnálu, naznačuje, že to maličkost nebyla.) Pokud se vážně stalo něco podobného, pak nemůžete mít žádnému FS za zlé, že to nepřežil. (Kdysi v dávných dobách jsem opravoval disk, který se někdo pokoušel 5 minut používat ve stavu, kdy řadič zapisoval 7. bit každého 16-bitového slova jako nulu. Takový puzzle se ještě za pár hodin ruční práce s hexeditorem složit dá.)
S extom som začínal ako každý Linuxák, ale kto si vidí pred nos a rád porovnáva a skúša, tak ho rýchlo zavrhne, nemyslím len na chybu čo som opísal, ale chod systému, nevysvetlitelné spomalenia, problémy so softom, ktoré si nezapisujem a preto to ani nijak dokazovať nechcem, ale každému kto narazí na nevysvetlitelní problém doporučujem skonči s extom a veľa ľuďom to pomôhlo, nielen Reiser.Vida, a já radím přesný opak: pokud se vám systém chová nespolehlivě a záhadně, zahoďte všechny ostatní filesystemy a použijte starý dobrý ext2/3. Vrchol moderního návrhu to rozhodně není, výkon má slušný, ale ne špičkový, ovšem co do spolehlivosti ho v linuxovém světě vážně nepřekoná vůbec nic. A také vím, co je uvnitř
Reiser ide celé roky sám, možno mám len šťastie, ale po tom čase aj keby sa už konečne niečo stalo, asi by som to skôr pričítal HW.
HW problém byl ale i v tom případě přetaktovaného padajícího stroje s ext3.
To jako při pohledu na plotnu? Vyjadřujte se konkrétně.
To nič nemení na tom že reči odporcov sú len čisté drístyA Vaše řeči nejsou? Nevšiml jsem si, že byste vyslovil jediný solidní argument proti ext3.
Ale to je vec ostatných kvázi programátorov takých ako som ja, že myslíme len jednoducho.Na to samozřejmě máte plné právo. Jen se pak nesmíte divit, že to, co tvrdíte, sotvakdo bere vážně
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.