Portál AbcLinuxu, 19. května 2024 12:31

Jaderné noviny 169

10. 6. 2002 | Leoš Literák
Články - Jaderné noviny 169  

Multithreaded Core Dump, vylepšení virtuální paměti a zpětná kompatibilita.

Do konference přišlo celkem 1315 emailů, nejvíce psali Alan Cox, Martin Dalecki, Linus Torvalds, David S. Miller, Vojtěch Pavlík a Pavel Machek.

Multithreaded Core Dump, 33 emailů

Mark Gross zaslal patch, který implementuje podporu multithreaded core dumpu pro jádra 2.5.14 a 2.5.15. Otestoval jej na dvou i čtyřprocesorovém stroji pod velkou zátěží generovanou benchmarkem na chatování. Podle jeho názoru je implementace stabilní. Erich Focht se zeptal, jak patch bude řešit situaci, když suspendované vlákno bude v kernelovém modu (možnost v 2.5). Vamsi Krishna S. odpověděl: Pokud je vlákno v kernelovém modu a jiné vlákno vytváří core dump (přesněji zachycuje stav registrů jiného vlákna), pak zachytíme _user mode_ registr vlákna ze spodu zásobníku jádra. GDB ukáže stav volání [back trace - lepší překlad?] až do okamžiku, kdy vlákno vstoupilo do jádra (int 0x80) a registr EIP bude ukazovat na instrukci za systémovým voláním (návratová adresa).

Pavel Machek měl pocit, že našel problém: Vlákno 1 je v jádře a drží zámek A. Potřebujete zámek A pro dump stavu. Když přesunete 1 do phantom runqueue, ztratíte schopnost získat A a výsledkem je uváznutí. Podle Marka Grosse však problém není závažný. Jedinou možností je, když kernel či ovladač si vezmou zámek a drží jej během volání metod sleep_on(), což podle něj naznačuje programovací chybu. Jenže jak Pavel tak Andi Kleen našli vyjímky: Toto sice platí pro spinlocky [český překlad?], nikoliv pro semafory. Jak subsystém virtuální paměti, tak virtuální souborový systém používají semafory intenzivně a spí, zatímco je drží. Po několika emailech přesvědčili Marka, že se jedná o skutečný problém. Proto zaslal nový patch, který vychází z předpokladu, že vlákna už má uloženy [suspended] ve phantom run queue, takže není třeba získat semafor v elf_core_dump. Toto řešení uspokojilo většinu vývojářů.

Vylepšení virtuální paměti, 8 emailů

Ed Tomlinson zaslal patch a vysvětlil, že nikdy nebyl šťastný ze způsobu, jakým funguje zkracování slab cache [slab cache shrinking]. Toto je pokus, jak to udělat lépe. Benjamin LaHaise mu poděkoval a napsal, že tento kód významně pomůže VM v některých situacích tím, že slab se dynamicky vyladí, místo použití natvrdo zakompilovaných kouzelných čísel. Zároveň se jej zeptal, zda plánuje přeportovat tento patch do řady 2.5. Ed odpověděl zasláním nového patche.

Zpětná kompatibilita, 28 emailů

Během diskuse nad novými patchi pro diskové quoty Linus Torvalds navrhnul odstranit určitý kód, který byl vytvořen pro poskytování zpětné kompatibility. Zeptal se, zda je zde jiný důvod používat tento kód, když stačí přejít na novou verzi nástrojů pro quotu. Alan Cox reagoval s tím, že většina lidí už stejně používá řadu 2.4 a quota nástroje s podporou 32bitových UID, takže se nic moc nestane. Jan Kara tedy napsal, že zašle patch na odstranění tohoto kódu.

Martin Dalecki navrhnul rovnou odstranit i IPC_OLD. Jenže Alan odpověděl, že tento kód nezabírá skoro žádný prostor, ale zajišťuje, aby i staré XFree86 běželo na nových jádrech. Tak proč jej odstranit. Podle Martina je iluzí myslet si, že je možné spouštět tak staré a.out binární soubory na moderním jádru. Christoph Hellwig jej však vyvedl z omylu: Samozřejmě že můžeš. Dokonce i nejnovější verze OpenLinuxu s jádrem 2.4.13-ac používá instalaci založenou na libc4/a.out kvůli nárokům na prostor. A nezapomeňte na staré binárky quake1, kterého si čas od času zahraji :). Martin byl ohromen tím, že to funguje a Alan mu doporučil, ať si příště nejdříve věci ověří, než něco navrhne odstranit. Alan dodal, že máme 100% kompatibilitu až do libc 2.2.2. Starší binárky pravděpodobně nebudou fungovat, neboť jsme odstranili některá obskurní systémová volání.

V tu chvíli Christoph poznamenal, že plánuje pro řadu 2.5 nechat zastaralá systémová volání záviset na CONFIG_COMPAT_*, což umožní jak vytvořit obrovský zpětně kompatibilní kernel, tak i malý kernel bez ní. Ve skutečnosti máme spoustu kódu, který by mohl být odstraněn pro moderní instalace. Martin i Alan schválili tento nápad.

Tento článek vychází ze seriálu Kernel Traffic (http://kt.zork.net) a je zveřejněn pod licenci GPL verze 2.

Další články z této rubriky

Jaderné noviny – přehled za duben 2024
Jaderné noviny – přehled za březen 2024
Jaderné noviny – přehled za únor 2024
Jaderné noviny – přehled za leden 2024
Jaderné noviny – přehled za prosinec 2023

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.