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 06:00 | Komunita

V Praze na půdě Elektrotechnické fakulty ČVUT dnes probíhá RT-Summit 2017 – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt. Přednášky lze sledovat online na YouTube.

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

Blender Animation Studio zveřejnilo první epizodu z připravovaného animovaného seriálu The Daily Dweebs o domácím mazlíčkovi jménem Dixey. Ke zhlédnutí také ve 3D s rozlišením 8K.

Ladislav Hagara | Komentářů: 0
včera 12:34 | Komunita

Aktualizovanou počítačovou hru Warhammer 40,000: Dawn of War III v ceně 39,99 eur běžící také na Linuxu lze o víkendu na Steamu hrát zdarma a případně ještě v pondělí koupit s 50% slevou. Do soboty 19:00 lze na Humble Bundle získat zdarma Steam klíč k počítačové hře Sid Meier's Civilization® III v ceně 4,99 eur běžící také ve Wine.

Ladislav Hagara | Komentářů: 0
včera 00:22 | Nasazení Linuxu

Společnost Samsung oznámila, že skrze dokovací stanici DeX a aplikaci Linux on Galaxy bude možno na Samsung Galaxy S8 a S8+ a Galaxy Note 8 provozovat Linux. Distribuce nebyly blíže upřesněny.

Phantom Alien | Komentářů: 11
19.10. 23:55 | Komunita

Společnost Purism na svém blogu oznámila, že její notebooky Librem jsou nově dodávány se zrušeným (neutralized and disabled) Intel Management Engine (ME). Aktualizací corebootu na již prodaných noteboocích lze Management Engine také zrušit. Více v podrobném článku.

Ladislav Hagara | Komentářů: 0
19.10. 21:44 | Nová verze

Organizace Apache Software Foundation (ASF) na svém blogu slaví páté výročí kancelářského balíku Apache OpenOffice jako jejího Top-Level projektu. Při této příležitosti byl vydán Apache OpenOffice 4.1.4 (AOO 4.1.4). Podrobnosti v poznámkách k vydání. Dlouhé čekání na novou verzi tak skončilo.

Ladislav Hagara | Komentářů: 6
19.10. 19:22 | Pozvánky

Již příští týden - 26. a 27. října se v Praze v hotelu Olšanka odehraje OpenWRT Summit. Na webu konference naleznete program a možnost zakoupení lístků - ty stojí 55 dolarů. Čtvrtek bude přednáškový a v pátek se budou odehrávat převážně workshopy a meetingy.

Miška | Komentářů: 1
19.10. 13:44 | Nová verze

Bylo vydáno Ubuntu 17.10 s kódovým názvem Artful Aardvark. Ke stažení jsou Ubuntu Desktop a Server, Ubuntu Cloud Images, Ubuntu Netboot, Kubuntu, Lubuntu a Lubuntu Alternate, Lubuntu Next, Ubuntu Budgie, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio a Xubuntu. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 22
19.10. 13:00 | Komunita

MojeFedora.cz informuje, že Fedora 27 dostane podporu pro AAC. Podpora multimediálních formátů je ve výchozí instalaci Fedory tradičně limitovaná kvůli softwarovým patentům, ale desktopový tým Red Hatu se ji i tak snaží v poslední době co nejvíce rozšířit. Už nějaký čas obsahuje kodeky pro MP3, H.264, AC3 a nyní byl přidán také kodek pro další velmi rozšířený zvukový formát – AAC.

Ladislav Hagara | Komentářů: 2
18.10. 23:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 145. brněnský sraz, který proběhne v pátek 20. října od 18:00 hodin v restauraci Time Out na adrese Novoměstská 2 v Řečkovicích. Jedná se o poslední sraz před konferencí OpenAlt 2017, jež proběhne o víkendu 4. a 5. listopadu 2017 na FIT VUT v Brně. Běží registrace účastníků.

Ladislav Hagara | Komentářů: 0
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (11%)
 (1%)
 (1%)
 (1%)
 (75%)
 (11%)
Celkem 149 hlasů
 Komentářů: 7, poslední 19.10. 23:06
    Rozcestník

    Jaderné noviny - 30. 6. 2016: Virtuálně mapované zásobníky podruhé

    10. 7. 2016 | Redakce | Jaderné noviny | 2533×

    Stav vydání jádra. Citát týdne: Tom Herbert. Shrnutí Summitu na Glungezeru. WireGuard. Virtuálně mapované zásobníky 2: thread_info vrací úder.

    Stav vydání jádra

    Současný vývojový kernel nese označení 4.7-rc5, vydán byl 26. června. Linus řekl: „Myslím, že se věci uklidňují, i když to podle dvou třetin commitů, které přišly od pátečního rána, moc nevypadá – moje pátky jsou většinou velmi rušné. Ale když se dívám na čísla, jsme zhruba tam, kde normálně s rc vydáními býváme.“

    Stabilní aktualizace: 4.6.3, 4.4.14 a 3.14.73 byly vydány 24. června. Kromě jiného obsahují důležitou bezpečnostní opravu.

    Citát týdne

    Není žádné „jádro jedna“, je mnoho různých klientských jader, v Internetu je mnoho konfigurací, mnoho implementací TCP. Některé jsou bídně navržené, roky pozadu i jinak zoufale nebezpečné. Také jsou lidé, kteří stále používají Windows 95, proboha! Nemůžeme jádrům prostě věřit, že dělají, co dělat mají. Také to od nás nikdo nevyžaduje, v žádném internetovém standardu nenajdete požadavek na implementaci TCP v jádře. Stejné je to u middleboxů a firewallů, existuje spousta implementací, řada z nich nedodržuje standardy a problémy s aktualizací software/firmware představují pro Internet možnou katastrofu. Není to od nás vyžadováno a nikdy nemůžeme předpokládat, že naše pakety půjdou přes dostatečně robustní firewall.

    Sečteno a podtrženo: Pokud vyvíjíte aplikaci v Internetu, která je kritická pro vaše podnikání, nemůžete předpokládat, že operační systémy nebo sítě poskytnou dostatečné zabezpečení; musíte vzít zodpovědnost za svou aplikaci do vlastních rukou. TOU je krok správným směrem.

    -Tom Herbert

    Shrnutí Glungezer realtime summitu

    Daniel Wagner se podělil o shrnutí z realtime summitu, který se nedávno konal na odlehlém místě v Alpách. „Christoph [Hellwig] a já jsme se rozhodli, že zorganizujeme malou konferenci na horách. Díky Christophově znalosti okolí Innsbrucku jsme vybrali chatu na Glungezeru. Nachází se téměř na vrcholu, kam se nedá dojet autem ani lanovkou. John Kacur vyslovil podezření, že Christoph chtěl skrytě podpořit fyzičku real-time vývojářů tím, že je nechá pochodovat skrze rakouské Alpy. Jak se ukázalo, měl pravdu.“

    WireGuard: nový VPN tunel

    Jason Donenfeld oznámil dostupnost „WireGuard“ pro linuxové jádro. „WireGuard je velmi jednoduchá a přitom rychlá a moderní VPN, která používá nejmodernější šifrování. Jejím cílem je být rychlejší, jednodušší, lehčí a použitelnější než IPSec, a to bez bolestí hlavy. Současně je cílem být mnohem výkonnější než OpenVPN.“ Kód je v raném stádiu a komunita jej předtím nikdy neviděla, dokonce se ani neobjevil jako patch. Takže možná bude ještě trvat, než se dostane do hlavního vydání. Zatím je možné kód a další informace najít na wireguard.io.

    Celý článek na LWN.

    Virtuálně mapované zásobníky 2: thread_info vrací úder

    V minulém dílu jste se mohli dočíst o sadě patchů Andyho Lutomirského, která přesunovala jaderné zásobníky do rozsahu vmalloc(). To má spoustu výhod, mezi nimi také eliminaci některých alokací paměti vyššího řádu, vylepšení bezpečnosti a lepší diagnostický výstup při přetečení zásobníku. Jenže je tu jeden drobný háček, a sice 1,5 µs navíc při vytváření nového procesu – cena, se kterou se Linus nebyl ochoten smířit. První pokus o řešení narazil na obskurní datovou strukturu v jádře, ale nakonec se díky tomu povedlo podstatně pročistit část jádra, která se stará o informace o procesech.

    Za výkonnostní regresí stojí využití vmalloc() k alokaci jaderných zásobníků; vmalloc() představuje poměrně nákladný způsob, jak alokovat paměť, a nedostalo se mu stejné pozornosti při optimalizaci, jako například slab alokátorům. Jedním z návrhů bylo kešovat několik jaderných zásobníků, což by umožnilo rychlé opětovné využití ještě teplých zásobníků po ukončení procesu. Věřilo se, že když budou odstraněna volání vmalloc(), kód obecně zrychlí.

    Zbytečná cache

    Andy se dal do realizace této myšlenky a referoval odrazující výsledek: „Implementoval jsem cache pro každé CPU, a je to k ničemu.“ Problém, stručně řečeno, spočívá v tom, že zdroje procesu (včetně jaderného zásobníku) nejsou uklizeny bezprostředně po ukončení procesu. Místo toho se mechanismus RCU (read-copy-update) postará o to, aby na tyto zdroje před uvolněním nezůstaly žádné odkazy. Takže (1) uvolnění jaderného zásobníku se zpozdí až do konce dalšího cyklu RCU (grace period); (2) zdroje všech procesů, které skončily během tohoto cyklu, budou uvolněny naráz. Tím pádem bude cache jaderných zásobníků téměř neustále prázdná, potom se najednou zaplní velkým počtem uvolněných zásobníků, jenže většina z nich se tam nevejde, a proto bude prostě uvolněna. Jinými slovy, četnost cache hit bude blízká nule – zvláště při zátěži bohaté na vytváření nových procesů.

    Teoreticky by jaderný zásobník po skončení procesu neměl být potřeba, takže by se mohlo zdát, že by k uvolnění zásobníku mohlo dojít okamžitě, a to i když je zapotřebí zachovat ostatní datové struktury. Problém je v tom, že základní informace, které si jádro o procesech udržuje, se nacházejí na dvou různých místech:

    • Velká struktura task_struct se nachází v <linux/sched.h>. Tato struktura, která je (až na znepokojivé množství bloků #ifdef) nezávislá na architektuře, obsahuje většinu informací, které jádro potřebuje o běžícím procesu vědět.
    • Malá struktura thread_info, jejíž podoba závisí na architektuře.

    Struktura task_struct se nachází na haldě – jako většina ostatních datových struktur jádra. Avšak struktura thread_info pobývá ve spodní části jaderného zásobníku, čímž znemožňuje opětovné využití tohoto zásobníku, dokud na ni něco může odkazovat. Toho času Linus usiloval o změny, které by umožnily rychlé uvolnění struktury thread_info, zatímco struktura task_struct by přetrvávala, leč brzy se ukázalo, že tudy cesta k jednoduchému řešení nevede. K některým informacím v thread_info, zvláště se to týká pole příznaků (flags), může být přistupováno vcelku nepředvídatelně, tudíž tyto informace musí zůstat dostupné, dokud má jádro jakékoli informace o přidružených procesech.

    Existence těchto dvou struktur je v podstatě historický artefakt. V počátcích Linuxu existovala pouze task_struct a nacházela se na jaderném zásobníku. Jenže časem zásobník přerostla, ačkoliv její umístění na jaderném zásobníku mělo velkou výhodu: strukturu bylo snadné nalézt zamaskováním některých bitů z ukazatele na zásobník, tzn. k udržování její polohy nebylo potřeba ztrácet vzácné místo v registrech. V případě některých často používaných polí šlo o výhodu, o kterou jaderní vývojáři nechtěli přijít. Takže když došlo k přesunu task_struct z jaderného zásobníku, hrstka jejích důležitých částí zůstala v nově vytvořené struktuře thread_info. Výsledné řešení o dvou strukturách se používá i v současných jádrech, ovšem do budoucna tomu tak být nemusí.

    Jak se zbavit thread_info

    Jádro vcelku nedávno přešlo na ukládání různých typů často potřebných informací do proměnných specifických pro dílčí CPU. Plánovač některé zásadní informace o aktuálně běžících procesech ukládá do oblasti vyhrazené dílčím CPU. Ukazuje se, že to je rychlejší než přístup na dno jaderného zásobníku. Tím pádem se zmenšil objem užitečných dat v thread_info, a tak je nasnadě otázka: nemohli bychom tu strukturu odstranit úplně? Nejedná se dokonce ani o novou otázku. Přesun struktury pryč ze zásobníku byl jedním z Andyho cílů od samého počátku. Ovšem problematika výkonu dodává tomuto problému na naléhavosti.

    Linus rychle přišel na to, že někteří uživatelé thread_info vlastně nepotřebují, a to dokonce aniž by byly nutné další změny. Typické použití spočívá v nalezení struktury task_struct, leč ukazatel na ni je obvykle již k dispozici. Linus tyto případy vyřešil a výsledek připravil pro vydání 4.7-rc5. Tento typ změny se možná nedá považovat za opravu chyby, pro něž je pozdní cyklus běžně určen, ale Linus dal jasně najevo, že změny považuje za přijatelné: „Toto jsou přesně ty ‚ryze historické důvody pro špatnou volací konvenci‘ a souhlasím s tím ve fázi rc vydání, abych to lidem, kteří si s nimi budou hrát, zjednodušil.“

    Posunul práce dále, a to tak, že bylo možné (poněkud redukovanou) strukturu thread_info odsunout ze zásobníku a zahrnout ji do task_struct. Dostal se až do stavu, kdy šlo upravené jádro zavést na testovacím systému. Pak se věci chopil Andy a změny integroval do své větší řady patchů.

    V době psaní tohoto článku byla řada patchů ve čtvrté revizi. Mnoho polí thread_info je přesunuto do task_struct, přičemž je také upravován kód, který k těmto polím přistupuje. Nakonec se do task_struct přesune i samotná struktura thread_info, která už obsahuje pouze pole příznaků. To vyžaduje řadu změn nízkoúrovňového kódu jednotlivých architektur, takže momentálně se změny dotýkají pouze architektury x86. Vypadá to, že další architektury budou následovat. I bez ostatních prací představuje eliminace samostatných struktur thread_info užitečný úklid a vylepšení zabezpečení.

    S ohledem na skutečný cíl sady patchů (přesun jaderných zásobníků do rozsahu vmalloc()) odstranění struktury thread_info umožní uvolnění jaderného zásobníku, jakmile skončí příslušný proces – bez potřeby cyklu RCU. To zase umožní přidat malé cache pro dílčí CPU, které udrží až dva volné jaderné zásobníky. Díky této cache se podle Andyho stane z 1,5µs výkonnostní regrese 0,5-1µs nárůst výkonu.

    Takže v této fázi má Andy řadu patchů, které zjednodušují část ústředního kódu jádra, poskytují okamžitou detekci přetečení jaderných zásobníků, poskytují lepší diagnostiku, když už k přetečení dojde, vylepšují bezpečnost jádra a dokonce i zrychlují jeho běh. Není tedy překvapením, že už je těžké najít další námitky. Jednou zbývající otázkou může být, kdy tento kód začlenit, a odpovědí se zdá být začleňovací okno 4.8. Dá se říct, že protože jde o fundamentální změny a nepochybně se objeví ještě jedna nebo dvě nepříjemnosti, jedná se o agresivní přístup. Na jednom překvapení se ostatně v době psaní článku pracovalo. Nicméně vývojový cyklus 4.8 by měl poskytnout dostatek času pro práci na takových překvapeních a ve finále půjde o výsledek, který bude stát za to.

           

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

    11.7.2016 00:55 pc2005 | skóre: 34 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Jaderné noviny - 30. 6. 2016: Virtuálně mapované zásobníky podruhé
    Linus rychle přišel na to, že někteří uživatelé thread_info vlastně nepotřebují, a to dokonce aniž by byly nutné další změny. Typické použití spočívá v nalezení struktury task_struct, leč ukazatel na ni je obvykle již k dispozici.
    No nevím, tohle se tuším na arch/microblaze řešilo jako globální proměnná (ukazatel) na aktuálně běžící task a byla sranda to správně vyměnit s přepínáním úlohy v assembleru (například i při vyjímce paměti a nebo přerušení).

    Akorát bude problém rychle přiřadit stack neběžící úloze k té struktuře (prohledávání nějakého seznamu, řekl bych).
    Chuck Norris řekl babičce, že si dá jen 3 knedlíky. A dostal 3 knedlíky. | 帮帮我,我被锁在中国房
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.