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 17:11 | Komunita

Na konferenci herních vývojářů GDC 2019 (Game Developers Conference) měla svůj stánek i společnost Red Hat. Návštěvníci si mohli zahrát počítačové hry na Fedoře 29 s Cinnamonem a Lutrisem.

Ladislav Hagara | Komentářů: 0
dnes 15:33 | Komunita

O víkendu probíhá v Cambridgi (MA) konference LibrePlanet 2019 organizovaná Nadací pro svobodný software (FSF). Na programu je řada zajímavých přednášek. Sledovat je lze také online.

Ladislav Hagara | Komentářů: 1
včera 21:33 | Humor

Richard M. Stallman v článku Install Fests: What to Do about the Deal with the Devil navrhuje, jak se vypořádat s morálním dilematem, zda na „installfestech“ (akcích, kde zkušení uživatelé pomáhají nováčkům nainstalovat GNU/Linux na přinesený hardware) instalovat také nesvobodný software, typicky ovladače. Vzdělávací přístup je „škola hrou“, kdy instalace právě nesvobodného softwaru provádí postava „Ďábla“.

Fluttershy, yay! | Komentářů: 8
včera 14:44 | Komunita

Dalších sedm produktů od společnosti ThinkPenguin získalo certifikaci RYF (Respects Your Freedom, Respektuje vaši svobodu) udělovanou Nadací pro svobodný software (FSF). Poprvé získal certifikaci USB mikrofon, konkrétně TPE-USBMIC. Certifikace RYF byla představena v říjnu 2012.

Ladislav Hagara | Komentářů: 0
včera 13:33 | Komunita

Na Humble Bundle lze získat počítačovou hru Tacoma (YouTube, Wikipedie) běžící také v Linuxu zdarma. Speciální akce končí v neděli v 18:00.

Ladislav Hagara | Komentářů: 0
včera 11:11 | Zajímavý projekt

Na Kickstarteru byla spuštěna kampaň na podporu zařízení NexDock 2. Jedná se o přenosnou dokovací stanici aneb notebook bez procesoru a paměti. Stačí připojit podporovaný telefon s Androidem nebo Raspberry Pi.

Ladislav Hagara | Komentářů: 0
včera 09:55 | Zajímavý článek

Před týdnem byly vydány nové verze 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1 a 6.0.0.beta3 frameworku pro vývoj webových aplikací Ruby on Rails (Wikipedie). Opraveny byly 3 bezpečnostní chyby: CVE-2019-5418, CVE-2019-5419 a CVE-2019-5420. Analýza CVE-2019-5418 (zobrazit si lze libovolný soubor na serveru, například /etc/passwd) na blogu Chybeta.

Ladislav Hagara | Komentářů: 1
21.3. 23:33 | Zajímavý projekt

Na Humble Bundle byla spuštěna akce Humble Book Bundle: Web Programming by O'Reilly. Za 1 dolar a více lze koupit 5 elektronických knih, za 8 dolarů a více lze koupit 11 elektronických knih a za 15 dolarů a více lze koupit 17 elektronických knih věnovaných webovému programování od nakladatelství O'Reilly Media. Část ceny lze určit charitě.

Ladislav Hagara | Komentářů: 0
21.3. 23:00 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 162. brněnský sraz, který proběhne v pátek 22. března od 18:00 v restauraci Slatinský šenk na adrese Zlínská 12.

Ladislav Hagara | Komentářů: 1
21.3. 16:22 | Nová verze

Jonathan Thomas oznámil vydání nové verze 2.4.4 video editoru OpenShot (Wikipedie). Přehled novinek na YouTube. Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.

Ladislav Hagara | Komentářů: 0
Kolik balíčků (v tisících) máte nainstalovaných na svém systému?
 (4%)
 (13%)
 (33%)
 (30%)
 (19%)
 (3%)
 (2%)
 (1%)
 (3%)
Celkem 231 hlasů
 Komentářů: 22, poslední včera 12:39
Rozcestník

Jaderné noviny – 2. 8. 2018: Stručná historie alokátorů paměti v raných fázích zavádění systému

9. 8. 2018 | David Kolibáč | Jaderné noviny | 2650×

Stav vydání jádra. Vydání jádra 4.18 se o týden zpozdí. Citáty týdne: Dan Williams, Linus Torvalds a Al Viro. Stručná historie alokátorů paměti v raných fázích zavádění systému.

Stav vydání jádra

Kernel release status. Jonathan Corbet. 1. srpna 2018

Současné vývojové jádro je 4.18-rc7, vydané 29. července. Linus řekl: „Takže pokud se nestane nic divného, tohle by měl být poslední kandidát na vydání 4.18.“ Něco divného se ovšem stalo, takže bychom měli očekávat ještě jednoho kandidáta na vydání.

Stabilní aktualizace: 4.17.11, 4.14.59, 4.9.116, 4.4.145 a 3.18.117 byly vydány 28. července.

Vydání jádra 4.18 se o týden zpozdí

The 4.18 kernel release will be delayed a week. 31. července 2018

Pokud netrpělivě očekáváte vydání jádra 4.18: zdá se, že Linus ho kvůli problémům odhaleným na poslední chvíli odloží o týden (na 12. srpna). „Pravidelný rytmus vydání _preferuji_, ale když je důvod k odkladu, vydání odložím.“

Citáty týdne

Quotes of the week. 1. srpna 2018

Možná jste se doslechli, že eBPF všechno nahradí a každému dá jednorožce. To se může stát, jestli/až se dočká lepší odpovědnosti, sledovatelnosti, laditelnosti, auditovatelnosti a široké podpory ovladačů XDP. Ovšem nftables je tady s námi dlouhá léta a většinou těchto záležitostí (ne-li všemi) disponuje již dnes.

Dan Williams

Vážně. Žádné překlady. Žádné přípravy na překlady. Je to fakt hnusná díra a utrpení pro všechny.

Je tu další důvod, proč jsem _z principu_ proti překladům jakýchkoliv jaderných rozhraní. Když dostanu hlášení chyby, chci ho prostě prohnat ‚git grep‘. Překlady to fakticky znemožňují.

Takže se to má tak, že chci jednoduchá rozhraní v angličtině. A lidé, kteří s tím mají problém, ať je prostě nepoužívají. Konec vyprávění. Jestli chcete mezinárodní podporu, používejte stávající chybové kódy a smiřte se s tím, že jejich počet je výrazně omezený.

Linus Torvalds

Velmi často je nejlepší strategie, jak přijít na to, co sakra znamená to naprosto nesmyslné hlášení, zkusit hádat, co za větu mohlo být takhle divně přeloženo do angličtiny.

Al Viro

Stručná historie alokátorů paměti v raných fázích zavádění systému

A quick history of early-boot memory allocators. Mike Rapoport. 30. července 2018

Jeden by se mohl domnívat, že alokace paměti při zavádění systému by neměla být složitá: skoro všechna paměť je volná, nedochází k žádnému souběhu a žádné úlohy na pozadí nesoutěží o paměť. Ale i tak je správa paměti během zavádění systému záludný úkol. Fyzická paměť nemusí nutně být spojitá, její rozsah se liší systém od systému a detekce těchto rozsahů může být netriviální. NUMA situaci činí ještě složitější, protože aby se zajistila lokalita alokací, musí se určit přesná topologie paměti. Aby se s tím vším počítalo, jsou i v raných fázích procesu zavádění systému nezbytné sofistikované mechanismy správy paměti.

Nabízí se otázka, proč tedy nepoužívat ten samý alokátor, který Linux používá od samotného začátku? Háček je v tom, že primární alokátor stránek v Linuxu je složitá obluda a také potřebuje alokovat paměť k inicializaci sebe sama. Navíc by se při alokaci datových struktur alokátoru stránek mělo počítat s NUMA. Takže je potřeba jiné řešení, které nám uvede do chodu subsystém správy paměti.

Linux zpočátku alokátor paměti pro rané fáze zavádění systému neměl. Inicializace paměti v jádře 1.0 nebyla tak robustní a všestranná jako dnes. Všechna volání inicializující subsystémy, potažmo vlastně libovolná funkce volaná ze start_kernel(), měla přístup k počáteční adrese jediného bloku volné paměti, a to prostřednictvím globální proměnné memory_start. Když některá funkce potřebovala alokovat paměť, prostě navýšila hodnotu memory_start, o kolik bylo zrovna potřeba. V době vydání verze 2.0 už byl Linux portován na dalších pět architektur, ale správa paměti v raných fázích běhu vytrvala stále stejně jednoduchá. Jediný rozdíl spočíval v tom, že rozsahy fyzické paměti byly detekovány kódem specifickým pro danou architekturu. Nutno však podotknout, že tehdejší hardware byl výrazně jednodušší a bylo snazší detekovat různé konfigurace paměti.

Veškeré rané alokace paměti až do vydání 2.3.23pre3 používaly a patřičně upravovaly globální proměnné udávající začátek a konec volné paměti. Naštěstí byl záhy k dispozici alokátor stránek a slab alokátor, čehož šlo využít při intenzivním zatížení paměti, jako v případě buffers_init() a page_cache_init(). Jak se vyvíjel a zesložiťoval hardware, kód pro jednotlivé architektury narostl o hromadu balastu.

Skupina patchů ve 2.323pre3 obsahovala první implementací alokátoru bootmem, která k reprezentaci stavu jednotlivých stránek fyzické paměti používala bitmapu. Prázdné bity označovaly dostupné stránky a nastavené bity znamenaly, že příslušné stránky paměti byly zabrány nebo chyběly. Veškeré obecné funkce, které měnily memory_start, a kód inicializace na architektuře i386 přešly na bootmem, na ostatních architekturách se tomu tak ovšem nestalo. Na to došlo až k vydání 2.3.48. Mezitím se Linux dočkal portu na Itanium (ia64), což byla první architektura používající bootmem od samého začátku.

Časem se detekce paměti vyvinula od prostého dotazu na BIOS, jak je velký rozšířený blok paměti, k manipulaci s komplexními tabulkami, díly, bankami a klastry. Konkrétně architektura Power64 byla připravena s alokátorem Logical Memory Block (krátce LMB). Paměť je s LMB reprezentována dvěma poli rozsahů. První pole popisuje fyzicky souvislé rozsahy paměti, které jsou v rámci systému dostupné, zatímco pole druhé sleduje alokované rozsahy. Alokátor LMB se dostal i do 32bitové architektury PowerPC, když došlo ke sloučení 32bitové a 64bitové varianty. Později ho převzal SPARC. Časem se propracoval k dalším architekturám a stalo se z něj to, co dnes známe jako memblock.

Alokátor memblock poskytuje dvě základní primitiva, která se používají jako základ komplexnějších API pro alokaci: memblock_add() zaregistruje fyzický rozsah paměti a memblock_reserve() rozsah označí jako zabraný. Obě jsou nakonec založená na memblock_add_range(), které rozsah přidá do příslušného pole z těch dvou výše uvedených.

Zásadní nevýhoda bootmem spočívá v inicializaci bitmapy. Abychom ji mohli vytvořit, musíme znát fyzickou podobu paměti. Jak by správně měla být bitmapa velká? Která paměťová banka má dostatečně velký spojitý rozsah fyzické paměti, aby bitmapu mohla uložit? A samozřejmě, jak roste kapacita paměti, roste i bitmapa bootmem. Na systému se 32GB RAM vyžaduje 1 MB této paměti. Na druhé straně jde memblock použít hned, je totiž založený na statických polích, která jsou dost velká na to, aby obsáhla aspoň první registrace a alokace paměti. Když se vyskytne požadavek na rezervaci paměti, která by přetekla meze pole memblock, velikost tohoto pole se zdvojnásobí. Vychází se přitom z předpokladu, že do doby, kdy taková situace může nastat, se memblocku se přidá dost paměti na to, aby zvládal alokaci nových polí.

Návrh memblocku předpokládá, že než naběhne primární alokátor stránek, požadavků na (de)alokaci by mělo být poměrně málo. Jelikož doba činnosti memblocku, než předá veškerou paměť spřátelenému alokátoru stránek, je omezená, nemusí být nijak zvlášť sofistikovaný.

Aby se usnadnil náročný přechod od bootmem k memblocku, vznikla mezivrstva nobootmem. Nobootmem poskytuje (většinu) rozhraní jako bootmem, ale místo zaznamenávání zabraných stránek v bitmapě spoléhá na rezervacích memblocku. V jádře 4.17 bootmem používá jako jediný alokátor v raných fázích zavádění systému pouze pět z 24 architektur. 14 architektur používá memblock s nobootmem. Zbývajících pět používá memblock a bootmem zároveň.

Aktuálně se pracuje na umožnění použití memblock s nobootmem na všech architekturách. Několik architektur používajících stromy zařízení přešlo v důsledku nedávných změn rané správy paměti v ovladačích stromu zařízení. Dosud došlo ke zveřejnění patchů architektur alpha, c6x, m68k a nios2. Některé z nich již správci příslušných architektur začlenili, jiné jsou zatím revidovány.

Do doby začleňovacího okna 4.20 už snad všechny architektury opustí bootmem. Pak bude možné výrazně pročistit kód správy paměti v raných fázích zavádění systému. Mělo by to zahrnovat odstranění alokátoru bootmem a několika s ním spojených konfigurací jádra. Tím by se dále měl umožnit postupný přesun větší části funkcionality raných fází zavádění z podstromů dílčích architektur do společného kódu. V subsystému správy paměti nikdy není málo problémů, které potřebují vyřešit.

       

Hodnocení: 100 %

        š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ář

9.8.2018 13:36 alkoholik | skóre: 37 | blog: Alkoholik
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2018: Stručná historie alokátorů paměti v raných fázích zavádění systému
Jo, zrovna alokace vetsiho mnozstvi 1GB HugePages na NUMA systemech dokaze vyrobit spousty krasnych kernel panicu.
17.8.2018 00:29 frr | skóre: 33
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2018: Stručná historie alokátorů paměti v raných fázích zavádění systému
Al Viro je Rus?
[:wq]
ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.