abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 16:11 | Komunita

Vývojáři relačního databázového systému PostgreSQL oznámili, že schválili svůj Code of Conduct (CoC) aneb kodex chování vývojářů PostgreSQL.

Ladislav Hagara | Komentářů: 4
dnes 14:44 | Nová verze

Byla vydána verze 1.0 poštovního serveru Courier (Wikipedie). Aktualizovány byly také související balíčky jako Courier authentication library, Courier-IMAP, SqWebMail, maildrop nebo Cone.

Ladislav Hagara | Komentářů: 0
dnes 02:22 | Zajímavý software

Společnost ​Versity Software otevřela svůj archivační souborový systém ScoutFS. Zdrojové kódy jsou k dispozici na GitHubu (kernel space, user space) pod licencí GPLv2.

Ladislav Hagara | Komentářů: 18
dnes 00:44 | Nová verze

Byla vydána verze 4.2 programovacího jazyka Swift (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu. Ke stažení jsou oficiální binární balíčky pro Ubuntu 18.04, Ubuntu 16.04 a Ubuntu 14.04. Přehled novinek ve videozáznamu přednášky z WWDC 2018.

Ladislav Hagara | Komentářů: 1
včera 17:55 | Nová verze

Po třech a půl letech od vydání verze 3.4.1 byla vydána nová verze 3.4.2 programu pro filtrování spamu Apache SpamAssassin (Wikipedie). Z novinek lze zmínit 4 nové pluginy. Pravidla budou ověřována pomocí SHA-256 a SHA-512 místo SHA-1. Řešeny jsou také 4 bezpečnostní chyby. Například chyba CVE-2018-11780 v pluginu PDFInfo zneužitelná ke vzdálenému spuštění kódů (RCE).

Ladislav Hagara | Komentářů: 0
včera 16:22 | Pozvánky

Díky openSUSE Video Teamu lze sledovat živý přenos většiny prezentací z letošní SUSE Labs Conference. Záznamy proběhlých prezentací budou postupně přidávány na kanál SUSE Labs na YouTube.

Michal Kubeček | Komentářů: 0
včera 10:22 | Pozvánky

Na webových stránkách konference LinuxDays byl zveřejněn program přednášek a workshopů. Současně byla spuštěna registrace. Konference proběhne o víkendu 6. a 7. října 2018 v Praze v areálu ČVUT v Dejvicích na Fakultě informačních technologií.

Ladislav Hagara | Komentářů: 0
včera 02:22 | Komunita

Linus Torvalds se v oznámení o vydání 4. rc verze Linuxu 4.19 omlouvá za své chování. Posledním commitem před zvýšením rc3 na rc4 bylo odstranění souboru s Code of Conflict a přidání souboru s Contributor Covenant Code of Conduct vycházejícího z Contributor Covenant. Vývoj Linuxu 4.19 dokončí Greg Kroah-Hartman. Linus Torvalds si bere volno a bude pracovat na svém chování. Pravděpodobně vylepší svého poštovního klienta, aby mu nedovolil odesílat emaily obsahující nadávky.

Ladislav Hagara | Komentářů: 46
16.9. 11:33 | Nová verze

Byla vydána verze 1.23 open source nástroje pro on-the-fly šifrování (OTFE) dat VeraCrypt. Přehled novinek v nejnovější verzi tohoto nástupce TrueCryptu v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
15.9. 11:11 | Nová verze

Byly vydány verze 3.0.3 a 3.16 softwaru Wine (Wikipedie), tj. softwaru vytvářejícího aplikační rozhraní umožňující chod aplikací pro Microsoft Windows také pod GNU/Linuxem. Stabilní verze 3.0.3 je třetí opravnou verzí verze 3.0 vydané v lednu. Opravuje 52 chyb. Z novinek vývojové verze 3.16 lze zmínit například počáteční implementaci OPC Services (Open Packaging Conventions).

Ladislav Hagara | Komentářů: 1
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (13%)
 (15%)
 (20%)
 (23%)
 (24%)
 (3%)
 (1%)
Celkem 353 hlasů
 Komentářů: 33, poslední 16.9. 11:55
Rozcestník

Jaderné noviny – 25. 5. 2017: Přehodnocení „příliš malý, než aby selhal“

15. 6. 2017 | Redakce | Jaderné noviny | 3756×

Stav vydání jádra. Citát týdne: James Bottomley. Přehodnocení „příliš malý, než aby selhal“.

Stav vydání jádra

Současné vývojové jádro 4.12-rc2 bylo vydáno 21. května. Linus řekl: „Jsem zpět u obvyklého časového plánu s nedělním vydáním a všechno vypadá celkem normálně. Toto rc2 je možná o něco větší než obvykle, ale celé začleňovací okno bylo větší než bývá, takže to je možná tím. A není až tak velké.“

Stabilní aktualizace: 4.11.2, 4.10.17, 4.9.29, 4.4.69 a 3.18.54 byly vydány 20. května.

Velké aktualizace 4.11.3, 4.9.30, 4.4.70 a 3.18.55 byly v době psaní tohoto článku v procesu revidování, vydány byly 25. května.

Citát týdne

Kontejnery jsou mnohavrstvé a složité. Pokud na to jako uživatelé nejste připraveni, pak byste měli použít orchestrační systém, který zabrání, abyste něco pokazili.

James Bottomley

Přehodnocení „příliš malý, než aby selhal“

V roce 2014 vyvolalo rozruch zjištění, že jaderný subsystém správy paměti neumožňuje relativně malým žádostem o alokaci selhat. Diskuze se od té doby uklidnila, ale pravidlo „příliš malý, než aby selhal“ stále vyvolává v jaderné komunitě jisté zmatky, jak dokládá nedávná diskuze inspirovaná začleňovacím oknem 4.12. Zdá by se, že pravidlo stále platí, ale vývojáři jsou žádáni, aby se chovali, jakoby tomu tak nebylo.

Na začátku tehdejší diskuze popsal vývojář správy paměti Michal Hocko „nepsané pravidlo“, že malé alokace nikdy neselhávají. „Malost“ určuje jaderná konstanta PAGE_ALLOC_COSTLY_ORDER – obvykle nastavená na tři – práh na většině systémů je tím pádem osm stránek, resp. 32 kB. Téměř všechny alokace paměti v jádře jsou menší (byla vynaloženo nemalé úsilí udržet je do velikosti jedné stránky), takže v důsledku pokusy o alokaci paměti téměř nikdy neselhávají.

To způsobilo nespokojenost hned z několika důvodů. Jedním z nich je, že jaderným vývojářům je od začátku tlačeno, že každá alokace paměti může selhat, takže místa, kde mohlo dojít k selhání, pečlivě ošetřovali, ačkoliv se tento kód nikdy nepoužije. Toto pravidlo může také způsobit, že jádro bude dělat nepříjemné věci – jako například vyvolání obávaného out-of-memory zabijáka – místo toho, aby došlo k selhání požadavku, a to i v případě, kdy je žádající kód připraven se se selháním alokace důstojně vypořádat. Návrhy na změnu tohoto pravidla vždy ztroskotaly z obavy, že povolení selhání alokací by odhalilo chyby napříč jádrem. Většina kódu řešícího selhání dost možná dosud nikdy nebyla vykonána – nebo nemusí vůbec existovat. Takže chování „příliš malý, než aby selhal“ zatím zůstává.

Žádost o začlenění oprav NFS klientu Tronda Myklebusta obsahuje řádek: „Vyčištění a odstranění některých ošetření selhání paměti, když GFP_NOFS teď zaručuje, že nikdy neselže.“ Ten popis byl nepřesný: daný kód používá mempool, který alokuje paměť předem a pokud se používá správně, může skutečně zaručit, že k selhání alokace nedojde. Ale to stačilo, aby se Nikolaj Borisov zeptal, zda to skutečně zaručí úspěch alokace. Pokud ano, bylo by možné z jádra odstranit mnoho nepotřebného kódu ošetřujícího chyby. Hocko odpověděl, že zatímco „malé alokace _v praxi_ nikdy neselžou,“ toto chování není ničím zaručeno a odstranění ošetření selhání alokace je „prostě špatně“.

Myklebust nebyl s touto odpovědí zcela spokojen, požádal o jasné prohlášení, že malé alokace mohou selhat. Toho se mu nedostalo. Místo toho Hocko odpověděl:

Byli bychom raději, kdyby tyto požadavky opravdu selhaly. Snažil jsem se o to v minulosti, ale bylo to považováno za příliš nebezpečné, protože by kvůli chování při selhání musely být zkontrolovány _všechny_ případy v jádře. Takže radši udržujeme status quo.

Status quo – informovat vývojáře, aby byli připraveni na selhání alokací, aniž by k selhání požadavků o alokací skutečně docházelo – je pro všechny, kdo se této diskuze účastní, dosti nepříjemný. V mnoha částech jádra představuje ošetřování chyb velký podíl objemu kódu. Kód může být složité napsat a ještě složitější otestovat. Bývá frustrující být požádán připravit se na situaci, která nikdy nestane.

Vývojáři správy paměti ale toto chování nemohou jen tak změnit. Není pochyb, že v jádře s tisíci nikdy neprovedených, nikdy netestovaných kusů kódu ošetřujícího chyby, budou některé z nich obsahovat chyby. Audit jádra a ověření všech těchto míst by nebylo malým úkolem, mírně řečeno. Možná to není vůbec proveditelné. Co se dělat, je ověřovat a opravovat kód kousek po kousku. Takto byl v roce 2011 konečně odstraněn velký jaderný zámek (big kernel lock, BKL). Tato práce pokračovala tím, že byly postupně odstraňovány závislosti na BKL z malých částí kódu, až ho nakonec nic nepotřebovalo. Trvalo to mnoho let, ale podařilo se.

V případě selhání alokace paměti nebude ověření kódu vždy snadné. Framework pro zavádění chyb se ale dá použít k vynucení alokačních chyb, což může pomoci při testování ošetření kódu. U kódu, který se považuje za správně připravený, lze chování „nikdy neselže“ vypnout v libovolné podané žádosti o alokaci jednoduše přidělením příznaku __GFP_NORETRY, což bylo provedeno ve zhruba stovce alokačních volání v jádře 4.12-rc1. Zda se tento příznak rozšíří do větší části jádra, zůstává otázkou. Stejně jako při procesu odstraňování BKL bude pravděpodobně zapotřebí pomoci skupiny vývojářů ochotné úkolu věnovat hodně času.

Jaderná komunita provádí změny vnitřního API pravidelně. Většinou se jedná o prosté editování kódu nebo použití skriptů Coccinelle. Ale jemné sémantické změny jsou náročnější a vyloučení chování „příliš malý, než aby selhal“ se za takovou změnu jistě považuje. Čím déle v jádře zůstane, tím více kód pravděpodobně zakoření, ale neexistují žádné náznaky, že by se to brzy mohlo změnit.

       

Hodnocení: 86 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.