Zástupci členských států EU se včera shodli na návrhu, který má bojovat proti šíření materiálů na internetu zobrazujících sexuální zneužívání dětí. Nařízení známé pod zkratkou CSAM a přezdívané chat control mělo množství kritiků a dlouho nebyla pro jeho schválení dostatečná podpora. Pro schválení byla potřeba kvalifikovaná většina a dánské předsednictví v Radě EU se snažilo dosáhnout kompromisu. Návrh nakonec po dlouhých týdnech
… více »Britské herní studio Facepunch stojící za počítačovými hrami Garry's Mod a Rust uvolnilo svůj herní engine s&box (Wikipedie) jako open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT. Herní engine s&box je postavený nad proprietárním herním enginem Source 2 od společnosti Valve.
Vývoj programovacího jazyka Zig byl přesunut z GitHubu na Codeberg. Sponzoring na Every.
Stejně jako GNOME i KDE Plasma končí s X11. KDE Plasma 6.8 poběží už pouze nad Waylandem. Aplikace pro X11 budou využívat XWayland.
Poslanci Evropského parlamentu dnes vyzvali k výraznému zvýšení ochrany nezletilých na internetu, včetně zákazu vstupu na sociální sítě pro osoby mladší 16 let. Legislativně nezávazná zpráva, kterou dnes odsouhlasil Evropský parlament poměrem 493 hlasů pro ku 92 proti, kromě zavedení věkové hranice 16 let pro využívání sociálních sítí, platforem pro sdílení videí či společníků s umělou inteligencí (AI) vyzývá také k zákazu … více »
Doom v KiCadu nebo na osciloskopu? Žádný problém: KiDoom: Running DOOM on PCB Traces a ScopeDoom: DOOM on an Oscilloscope via Sound Card.
Po AlmaLinuxu byl v nové stabilní verzi 10.1 vydán také Rocky Linux. Přehled novinek v poznámkách k vydání.
Open source reimplementace počítačových her Tomb Raider I a Tomb Raider II spolu s dalšími vylepšeními a opravami chyb TRX byla vydána ve verzi 1.0. Jedná se o sloučení projektů / enginů TR1X a TR2X do jednoho TRX. Videoukázka na YouTube.
Společnost Seznam.cz spouští konverzační nástroj založený na umělé inteligenci Seznam Asistent. Asistent využívá vlastní jazykový model SeLLMa a dočasně i komerční modely od OpenAI provozované v evropských datacentrech prostřednictvím Microsoft Azure. Dlouhodobým cílem Seznamu je provozovat Asistenta výhradně na interních jazykových modelech a ve vlastních datových centrech.
Software LibrePods osvobozuje bezdrátová sluchátka AirPods z ekosystému Applu. Exkluzivní funkce AirPods umožňuje využívat na Androidu a Linuxu. Díky zdokumentování proprietárního protokolu AAP (Apple Accessory Protocol).
Současný vývojový kernel nese označení 4.2-rc2. Uvolněn byl 12. července. Linus: „Nejedná se o nijak velké rc vydání, vše je relativně v klidu. Nějaké problémy jsme sice v -rc1 měli, ale nešlo o nic závažného, takže budeme doufat, že -rc2 bude mít méně otravných problémů.“
Stabilní aktualizace: 4.1.2, 4.0.8, 3.14.48 a 3.10.84 byly vydány 10. července. Verze 4.0.9, jakmile vyjde, bude poslední ze série 4.0.x.
Nedá mi to, abych trošku nezareptal – co jsme uvolnili 2fa, jen 30 lidí si zřídilo token (ani ne 10 % všech majitelů účtu) a jen 25 z celkového počtu 450 definovaných repozitářů/subdirs má 2fa požadavek."
-kernel.org manager Konstantin Ryabitsev
Ano, je skvělé, pokud dokážeme věci zachytit v -next. Ale nemyslím si, že by patche, které opravují chyby v Linusově stromu, měly čekat ve stromu next před přesunutím do Linusova stromu, protože tyto patche opravují chyby, které již ve stromu next byly, jen se na ně přišlo až v době přesunu do Linusova stromu. Proto si myslím, že je ztrátou času dávat je do next předtím, než je odešleme přímo Linusovi.
Uvědomuji si, že současné sado-masochistické chybové zprávy ve stylu „Error, došlo k chybě, zavřít“ jsou v současném Linuxu jakýmsi statusem quo, jehož nepřehledné hlášení chyb pochází z rané technologické chyby unixového systémového volání, které pokazilo hlášení chyb. Taky vidím, že po letech zneužívání lidé vykazují jisté známky stockholmského syndromu spojeného s tímto problémem, ale ono to tak opravdu nemusí být...
Dlouhodobým aspektem subsystému řízení paměti je, že má po čase sklon fragmentovat paměť. Běží-li systém jistou dobu, může být vyhledání skupin fyzicky souvislých stránek obtížné, proto může kód jádra jít někdy až do krajnosti, aby se vyhnul souvislým blokům stránek. Někdy jsou ovšem velké bloky zapotřebí, vyžaduje je například funkce transparentních velkých stránek. Paměť je možné defragmentovat za pochodu s mechanismem pro shlukování paměti, ale shlukování může být snadno zmařeno stránkami alokovanými jádrem, které nelze jen tak přesunout bokem.
Stránky uživatelského prostoru lze přesouvat snadno, jsou přístupné skrze tabulky stránek, takže přesun stránky je otázkou změny příslušných položek tabulky stránek. Stránky v systémové mezipaměti stránek jsou také přístupné pomocí vyhledávání, takže je možné je také přesouvat. U stránek alokovaných náhodným subsystémem nebo ovladačem jádra to tak jednoduché není. Přímý přístup k nim umožňují ukazatele z jaderného prostoru a bez přesunu všech těchto ukazatelů se s nimi nedá hýbat. Vzhledem k tomu, že je velmi těžké přesouvat stránky jádra, snaží se subsystém řízení paměti oddělit tyto stránky od těch, které přesouvat lze, jenomže takové oddělení je těžké udržet hlavně v případě, kdy dochází k nedostatku paměti. Jediná „nepřesunutelná“ stránka může zmařit shluknutí (compaction) velkého bloku paměti.
Vyřešení tohoto problému v daném subsystému bude vyžadovat spolupráci toho daného subsystému v procesu komprimace; což je přesně to, co patch Gioha Kima pro migraci stránek dělá. Navazuje na speciální kód (představený již v roce 2012), který umožňuje přesouvání ballooningem řízených stránek, patch dokáže kód zobecnit, takže je využitelný i v jiných subsystémech.
Chcete-li, aby ovladač (nebo jiný subsystém jádra) podporoval migraci stránek (a tedy i shlukování), prvním krokem je alokování anonymního inode, který bude tyto stránky reprezentovat:
#include <linux/anon_inodes.h>
struct inode *anon_inode_new(void);
Jediným skutečným účelem tohoto inode je držet ukazatel na strukturu address_space_operations obsahující několik zpětných volání, která se týkají migrace. Příslušné metody:
bool (*isolatepage) (struct page *page, isolate_mode_t mode);
void (*putbackpage) (struct page *page);
int (*migratepage) (struct address_space *space, struct page *page,
struct page *newpage, enum migrate_mode mode);
migratepage() je součástí jádra (v různých podobách) od verze 2.6.16, ostatní věci jsou nové a přináší je Giohův patch. Subsystém jádra musí poskytnout všechny tři operace, jinak není shlukování stránek možné. Jakmile dojde k alokování anonymního inode, jeho pole i_mapping->a_ops by mělo odkazovat ke struktuře address_space_operations, která obsahuje výše vypsané metody.
Asi není třeba zdůrazňovat, že v systému shlukování stránek jsou podporovány pouze celé stránky, paměť alokovaná ze slab cache zůstane nehybná. Aby bylo možné stránku přesunout kódem pro shluknutí, je zapotřebí, aby subsystém jádra (1) označil stránku jako „mobilní“ a (2) nastavil mapovací pole k anonymnímu inode:
__SetPageMobile(page);
page->mapping = anon_inode->mapping;
Jakmile je toto hotovo, může se jádro rozhodnout pro přesun stránky, pokud se ukáže, že je v cestě. Prvním krokem je volání isolatepage(), které odpojí vnitřní mapování a zajistí, že přesun stránky je skutečně možný. Argument mode není relevantní pro většinu kódu mimo subsystém správy paměti, funkce by měla vrátit true, jestliže je přesun stránky možný. Není nutné zastavit chod dané stránky, jde o to zachovat schopnost přesunu.
K migraci stránky může, ale nemusí dojít v závislosti na tom, zda jsou okolní stránky pohyblivé. Pokud k tomu dojde, může být vyvoláno zpětné volání migratepage(). Mělo by udělat cokoli, co je třeba k přesunu stránky, nastavit správně příznaky a aktualizovat všechny interní odkazy na novou stránku. Mělo by použít jakékoliv zámky nutné k tomu, aby se zabránilo souběžnému přístupu v době, kdy probíhá migrace. Návratový kód by v případě úspěšného přesunu měl být MIGRATEPAGE_SUCCESS, jinak se zobrazí chybová hláška. Pokud se migrace podaří, na starou stránku se po návratu migratepage() již nesahá.
Posledním krokem je volání putbackpage(). Má na starost nahradit danou stránku v jakýchkoli vnitřních seznamech a obecně dokončit proces migrace. Jestliže došlo k volání isolatepage(), dojde i na putbackpage() nehledě na to, zda mezi těmito voláními k migraci skutečně došlo.
Jak je vidět, k podpoře migrace na vybraném subsystému jádra je toho třeba docela dost udělat. Vzhledem k tomu to vypadá, že bude podpora omezena na relativně malý počet subsystémů, které využívají velké množství paměti. Giohův patch tímto způsobem adaptuje balloon driver na systémech, které využívají virtualizace, mohou balloon systémy (vzhledem ke své povaze) využívat velké množství paměti, takže možnost jejich přesunu dává smysl. Další případy využití zahrnují trvanlivé I/O buffery (grafické ovladače), které ukládají velké množství paměti. Oprava byť některých těchto ovladačů by měla pomoci při vzniku velkých, fyzicky sousedících oblastí volné paměti, a to i po delší době běhu systému.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Nenapadají mne žádné podstatné výhody, které by takové řešení mělo. Zato mne hned napadne několik nevýhod: