Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.
Byla vydána nová verze 10.3 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu bezpečnostních oprav, vylepšení funkcí a oprav chyb.
Cloudflare představil open source redakční systém EmDash. Jedná se o moderní náhradu WordPressu, která řeší bezpečnost pluginů. Administrátorské rozhraní lze vyzkoušet na EmDash Playground.
Bratislava OpenCamp 2026 zverejnil program a spustil registráciu. Štvrtý ročník komunitnej konferencie o otvorených technológiách prinesie 19 prednášok na rôzne technologické témy. Konferencia sa uskutoční v sobotu 25. apríla 2026 v priestoroch FIIT STU v Bratislave.
Na iVysílání lze zhlédnout všechny díly kultovního sci-fi seriálu Červený trpaslík.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl v březnu 5,33 % (Windows -4,28 %, OSX +1,19 %, Linux +3,10 %). Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 24,48 %. Procesor AMD používá 67,48 % hráčů na Linuxu.
Společnost Apple slaví padesáté narozeniny. Založena byla 1. dubna 1976.
FreeTube, desktopový klient pro YouTube využívající lokální API, byl vydán ve verzi 0.24.0. Toto velké opravné vydání implementuje SABR (Server-Based Adaptive Bit Rate), což řeší část nedávných problémů s načítáním videí z YouTube, a aktualizuje základní komponenty jako Electron nebo přehrávač Shaka Player.
Je tu opět apríl. O víkendu zmizel kamion s 12 tunami tyčinek KitKat. Firmy to využívají k aprílovým žertům. Groupon má super akci. Koupíte 1 tyčinku a dostanete 100 zdarma. Ryanair si přelepil letadla. Šéf Outlooku se ptá, proč mají v baráku 14 beden tyčinek KitKat (𝕏). Prusa Research představuje Prusa Pro ACU a vysvětluje proč přílišné sušení škodí vaším filamentům. Telefon Sony Xperia má miliónnásobný zoom (𝕏). PC.net představil Super Ultrabox 2600 se zajímavými parametry. Další aprílové novinky například na April Fools' Day On The Web.
Současné vývojové jádro je stále 2.6.39-rc7. Linus oznámil svůj záměr vydat finální verzi 2.6.39 18. května, ale k tomu v době psaní tohoto článku ještě nedošlo. Pravděpodobně jednoduše čeká na to, až vyjdou Jaderné noviny; 2.6.39 téměř určitě bude venku v době, kdy budete tento článek číst.
Stabilní aktualizace: v uplynulém týdnu žádné nevyšly.
-- Andrew Morton (který poskytl i obrázek zmíněné panenky)
napsal Jonathan Corbet, 17. května 2011
Během minulých vývojových cyklů byla k vidění cílená snaha zlikvidovat prosakování jaderných adres do uživatelského prostoru. Má se za to, že odhodlaný útočník by tyto adresy mohl použít k tomu, aby zjistil, kde jsou v paměti důležité struktury; to je velmi důležitý krok při snaze tyto struktury poškodit. Dává tedy smysl vyhnout se odhalování jaderných adres v souborech v /proc a na dalších místech, kde jádro předává informace uživatelskému prostoru.
V počátku vývojového cyklu 2.6.39 byl začleněn patch, který cenzuruje jaderné adresy v /proc/kallsyms a /proc/modules. Na takovém systému /proc/kallsyms vypadá takto:
... 0000000000000000 V callchain_recursion 0000000000000000 V rotation_list 0000000000000000 V perf_cgroup_events 0000000000000000 V nr_bp_flexible 0000000000000000 V nr_task_bp_pinned 0000000000000000 V nr_cpu_bp_pinned ...
Není potřeba říkat, že vynulování všech informací o adresách způsobí, že tento soubor bude mnohem méně užitečný než dříve. Co ale k této změně přitáhlo pozornost, bylo hlášení, že perf v takovém případě hlásí nesmyslné informace. Zdá se, že perf nedetekoval skrývání jaderných adres, takže s klidem použil nuly.
Jednoznačně je to chyba v perfu; opravena bude v krátkosti. Mnoho vývojářů si ale stěžovalo na skrývání jaderných adres ve výchozím nastavení. Kvůli takovému chování je systém hůře použitelný a určitě dojde i na další nepříjemná překvapení. Lidé, kteří chtějí dodatečné zabezpečení poskytované touto vlastností, si o ně mají explicitně říci. David Miller poukázal na to, že další bezpečnostní technologie – například SELinux – také nejsou ve výchozím nastavení zapnuté.
Tento argument zvítězil, takže finální 2.6.39 nebude jaderné ukazatele skrývat. Každý, kdo je chce skrýt, musí nastavit kernel.kptr_restrict na 1.
napsal Jonathan Corbet, 17. května 2011
Mechanismus řídících skupin umožňuje správci seskupit procesy do skupiny a na tuto skupinu aplikovat politiku pro omezení využívání zdrojů. Tato vlastnost je tu už nějaký čas, ale teprve odnedávna můžeme vidět její významnější používání. Řídící skupiny jsou základem pro plánování CPU podle skupin (včetně automatického skupinového plánování podle sezení, které bylo začleněno do 2.6.38), správu procesů v systemd atd. Tato vlastnost je zjevně užitečná, ale také má mezi mnoha jadernými vývojáři jádra špatnou pověst a často je lze slyšet mumlat, že by se řídící skupiny měly z jádra úplně vytrhnout. Ve skutečném světě by nicméně jejich vytržení bylo čím dál tím problematičtější, takže dává smysl zvážit alternativu: opravit je.
Jednou ze stížností je to, že řídící skupiny byly k existujícím jaderným mechanismům „přibity hřebíkem“ místo toho, aby do nich byly správně integrovány. Vzhledem k tomu, že se objevily teprve nedávno, není to velké překvapení – když se do dlouho existujícího jaderného kódu přidávají významné nové vlastnosti, je přirozené držet se stranou a minimalizovat změny ve stávajícím kódu. Přibít takto kód na stranu ale není dobrá cesta k optimálnímu řešení, které bude možné dlouhodobě udržovat. Nedávná práce na řadiči paměti tento problém zdůrazňuje – a ukazuje na zlepšení této situace.
Mapa systémové paměti se skládá z jedné struct page pro každou fyzickou stránku v systému; lze ji považovat za rozsáhlé pole struktur, které odpovídá poli stránek:
![]()
Jádro udržuje globální seznam nejméně používaných stránek [least recently used, LRU] a s jeho pomocí sleduje aktivní stránky. Nově aktivované stránky se ukládají na konec seznamu; když je potřeba stránky odebírat [reclaim], stránky na začátku seznamu se zkoumají nejdříve. Struktura vypadá nějak takto:
![[Aktivní LRU]](/images/clanky/jn/memcg/memcg2.png)
Většina záludného kódu v systému pro správu paměti se zabývá tím, jak jsou tyto stránky vkládány na seznam a jak se v něm pohybují. Skutečný stav je samozřejmě o něco komplikovanější. Jádro ve skutečnosti udržuje dva LRU seznamy, ten druhý obsahuje „neaktivní“ stránky, které byly odmapovány, ale stále v systému existují:
![[Dva LRU]](/images/clanky/jn/memcg/memcg3.png)
Jádro přesune stránky z aktivního do neaktivního seznamu, když si myslí, že v blízké budoucnosti nebudou použity. Stránky v neaktivním LRU lze rychle přesunout do aktivního seznamu, pokud se k nim pokusí přistoupit nějaký proces. Neaktivní seznam lze považovat za určitou testovací oblast pro stránky, u kterých systém zvažuje, že by je mohl brzy zabrat pro použití jinde.
Situace je samozřejmě ještě o něco komplikovanější. Současná jádra ve skutečnosti udržují pět LRU seznamů. Anonymní stránky mají samostatný aktivní a neaktivní seznam – politika pro zabírání stránek je zde odlišná a pokud systém běží bez swapu, nemusí být vůbec možné nějaké stránky zabrat. Také existuje seznam stránek, o kterých se ví, že je nepůjde znovu zabrat – příkladem mohou být stránky, které byly zamčeny v paměti. Jo, a samozřejmě je potřeba říci, že každá tato sada existuje pro každou paměťovou zónu. Takže i když se počet seznamů zvyšuje, jako celek se tato sada nazývá „globální LRU“.
Vytvořit obrázek, ve kterém by byly zachyceny všechny tyto seznamy, by přetížilo poměrně neadekvátní kreslířské schopnosti autora článku, takže představit si takovou strukturu budiž cvičení pro čtenáře.
Řadič paměti přidává další úroveň složitosti, protože potřebuje zabírat stránky patřící specifickým řídícím skupinám. Řadič potřebuje u každé stránky sledovat víc informací včetně jednoduchého ukazatele spojujícího každou stránku s řídící skupinou, které je účtována. Přidat tyto informace do struct page rozhodně nebylo možné; tato struktura je už teď přecpaná a je jenom malý zájem ji zvětšovat. Řadič paměti tedy přidává pro každou stránku novou strukturu page_cgroup; v podstatě tím vytváří novou stínovou mapu paměti:
![[Stínová mapa stránek]](/images/clanky/jn/memcg/memcg4.png)
Když jsou aktivní řídící skupiny pro paměť, pro každou skupinu se udržuje další kompletní sada LRU seznamů. Struktury list_head potřebné pro udržování těchto seznamů se uchovávají ve struktuře page_cgroup. Výsledkem je zmatená struktura, která vypadá nějak takto:
![[LRU specifické pro memcg]](/images/clanky/jn/memcg/memcg5.png)
(Situace je opět o něco komplikovanější, než je zde vyobrazeno; mezi jinými věcmi je mezi LRU seznamy a struct mem_cgroup série překrývajících struktur.)
Správa tímto způsobem má mnoho nevýhod. Globální zabírání stránek používá globální LRU jako vždy, takže při své práci kompletně ignoruje řídící skupiny. Zabere tak stránky bez ohledu na to, jestli patří skupině, která přesahuje limit. Zabírání podle řídících skupin naproti tomu pracuje pouze s jednou skupinou naráz; výsledkem je to, že některé skupiny jsou omezovány, zatímco na jiné se nesahá. Násobné LRU seznamy jsou nejenom složité, ale také drahé. Struktura list_head má na 64bitovém systému 16 bytů. Pokud systém má 4GB paměti, má milion stránek a jenom pro infrastrukturu spojenou s LRU seznamy pro jednotlivé skupiny je tak vyhrazeno 16 milionů bytů.
Na tuto situaci naráží vývojáři, když říkají, že řídící skupiny byly ke zbytku jádra „přibity“. Dané uspořádání bylo efektivním způsobem, jak zjistit, co představuje správa paměti tímto způsobem, ale rozhodně je zde prostor pro zlepšení.
Patche pro naturalizaci memcg, jejichž autorem je Johannes Weiner, reprezentují pokus zlepšit tuto situaci tím, že se řadič paměti lépe integruje do zbytku subsystému virtuální paměti. Jádrem této práce je odstranění duplicitních LRU seznamů. S touto sadou patchů konkrétně přestává existovat globální LRU – všechny stránky existují přesně v jednom LRU seznamu specifickém pro skupinu. Stránky, které nepatří žádné specifické skupině, jdou do LRU seznamu pro „kořenovou“ skupinu na vrcholu hierarchie. Zabírání podle skupin zjednodušeně přebírá práci po starším kódu globálního zabírání; i systém, na kterém jsou řídící skupiny zakázány, se považuje za systém, ve kterém je právě jedna řídící skupina obsahující všechny běžící procesy.
Algoritmy pro zabírání paměti se v této situaci rozhodně musí změnit. Základní algoritmus nyní nejprve projde hierarchii řídících skupiny [depth-first traversal] a v každé se pokusí zabírat stránky. Neexistuje žádné globální stárnutí stránek; každá skupina má svoje nejstarší stránky bez ohledu na to, co se děje v ostatních skupinách. Pro každou skupinu se samozřejmě zvažují měkké a tvrdé limity, když se zjišťuje, kolik paměti se má uvolnit. Konečným výsledkem je to, že globální zabírání stránek se rozprostře mezi všechny řídící skupiny, přičemž je implementována politika každé skupiny. Do tohoto mechanismu byly integrovány i měkké limity, takže jejich vynucování je nyní rovnoměrněji rozdělené mezi všechny řídící skupiny v systému.
Johannesův patch zlepšuje situaci a zároveň zmenšuje současný kód o více než 400 řádek; také se zbavuje ceny za duplikaci LRU seznamu. Jeho nevýhodou je, že provádí zásadní změny v algoritmech zabírání paměti jádrem; takové změny mohou na specifických typech zátěže způsobit překvapivé regrese, a tudíž vyžadují hodně testování a zkoumání. Pokud se taková překvapení neobjeví, vypadá tento patch již ve své první fázi jako slibný krok směrem k tomu, aby se z řídících skupin stala pořádná vlastnost jádra.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: