Portál AbcLinuxu, 2. května 2024 06:53

Jaderné noviny – 24. 5. 2012: Čtyři bajty, na kterých sejde

11. 6. 2012 | Luboš Doležel
Články - Jaderné noviny – 24. 5. 2012: Čtyři bajty, na kterých sejde  

Aktuální verze jádra: 3.4. Citáty týdne: Dave Täht, Steven Rostedt, Thomas Gleixner, Linus Torvalds. Otevírá se začleňovací okno verze 3.5. Odstraňování čtyř bajtů z jaderného ABI.

Obsah

Aktuální verze jádra: 3.4

link

Vyšlo jádro verze 3.4, a to 20. května. Mezi významné funkce patří bezpečnostní modul Yama, podpora pro x32 ABI, podpora pro asymetrický multiprocessing, dm-verity a ještě více. Další podrobnosti najdete na stránce na KernelNewbies.

Začleňovací okno pro verzi 3.5 je v době psaní článku otevřené, více najdete v článku níže.

Stabilní aktualizace: verze 3.0.32 a 3.3.7 vyšly 21. května, verze 3.2.18 vyšla 21. května a verze 2.6.34.12 vyšla 22. května.

Citáty týdne: Dave Täht, Steven Rostedt, Thomas Gleixner, Linus Torvalds

link

Dorazil dostatek informací na to, abych byl po všech těch vylepšeních v Linuxu za poslední rok a po BQL, codel a fq_codel spokojen, že jsme zvítězili ve významné bitvě ve válce proti bufferbloatu.

-- Dave Täht

	else if(!strcmp(str, "pony")) {
		tsc_clocksource_reliable = 1;
		sched_clock_stable = 1;
		tsc_perfect_smp_synchronization = 1;
	}

-- Steven Rostedt

	else if (!strcmp(str, "real")
	     panic("Can't handle real TSCs!\n");

-- Thomas Gleixner

Předpověď: místo toho, aby Oracle uznal, že byli s tou svojí dementní žalobou proti Androidu pěkní idioti, tak se budou nakrucovat a budou vykládat, jak jim nakonec bude dáno za pravdu a zaplatí právníkům, aby proces posunuli na vyšší úroveň debility.

Někdy bych si skutečně přál, abych neměl vždycky pravdu. Je to hotové prokletí, to vám povídám.

-- Linus Torvalds

Otevírá se začleňovací okno verze 3.5

link

Krátce po vydání verze 3.4 Linus rozjel celý proces nanovo s vývojovým cyklem 3.5. Hned první den bylo přetaženo více než 2500 změn a v době psaní tohoto textu jich bylo sloučeno už 4600. Vypadá to, že půjde o zajímavý cyklus se spoustou novinek a odstraněním starého nepořádku. Prozatím zde najdete tyto zajímavé změny viditelné uživatelům:

Změny viditelné vývojářům zahrnují:

Pokud bude platit obvyklý vývojový cyklus, tak můžeme očekávat uzavření okna kolem 4. června. Více se dozvíte v příštích týdnech.

Odstraňování čtyř bajtů z jaderného ABI

link

Čtyři bajty se nemusejí zdát jako moc místa – a obvykle ani nejsou – ale když je toto místo vyplýtváno milionkrát, tak už se to začíná hromadit. Navíc pokud se tyto bajty staly součástí jaderného ABI (ať už to tak bylo zamýšleno, nebo ne), tak bude těžké se jich zbavit. Tento konkrétní problém byl opět řešen na mailing listu linux-kernel a týká se hlaviček pro sledovací události [trace event].

Je tomu něco přes rok, co jsme se dívali na nevyužité pole lock_depth v hlavičkách událostí. Frederic Weisbecker přidal toto pole jen dočasně, aby pomohlo při odstraňování velkého jaderného zámku (BKL) a jakmile byl BKL fuč, tak Steven Rostedt odstranil tyto čtyři, pak už zbytečné, bajty z hlaviček. Jenže mezitím začal PowerTOP přistupovat k událostem v perf ringu, takže odstranění lock_depth rozbilo PowerTOP. Toto pole nebylo PowerTOPem doopravdy používáno, ale tento nástroj očekával, že struktura bude mít určitou velikost, což se po odstranění zbytečného pole změnilo.

To vedlo k odvolání celého odstranění, což znamená, že každá zaznamenaná událost v ftrace nebo perf má extra režii. Formát událostí je samopopisný, takže není třeba, aby nástroje jako PowerTOP zkoumaly binární data a dělaly předpoklady o formátu těchto dat. Jenže ono bylo snazší číst data napřímo než je parsovat, a proto tak PowerTOP dělal. Rostedt vytvořil knihovnu pro parsování událostí ve formátu, v jakém je jádro poskytuje, aby k podobné situaci v budoucnu už nedošlo. PowerTOP 2.0 tuto knihovnu používá, takže Rostedt poslal prosbu o komentáře, ve které se ptá, kdy by se mělo pole lock_depth odstranit – mezitím bylo přejmenováno na padding.

Linus si nedělal kvůli zbytečným bajtům vrásky, ale chtěl vědět, do kterých distribucí se už dostal nový PowerTOP. Ukázalo se, že PowerTOP ve Fedoře 14 (kterou Linus stále občas používá) je natolik starý, že události perf nepoužívá vůbec. Novější Fedory (16 a 17) používají PowerTOP 1.98, který na jádrech bez padding fungovat nebude.

V diskuzním vlákně byl učiněn předpoklad, že distribuce přejdou na PowerTOP 2.0 ve vydáních, která přijdou ještě letos, ale stále tu máme uživatele, kteří si sestavují vlastní jádra na stávajících distribucích. Existující distribuce mají navíc různé životnosti a některé z nich nepřejdou na nový PowerTOP vůbec. Rostedt se zeptal, jak dlouho jádro musí podporovat starší distribuce. PowerTOP je, jak se ukazuje, v jiné kategorii aplikací, protože jde o vývojářský nástroj. Proto je Torvalds ochoten učinit tuto změnu, i když se tím vykašlou na některé distribuce.

Ale rozbíjení něčeho jako F14-15 nebo něčeho typu SLES (nebo „Debian Starobylní“ nebo jak se říká těm věcem, kde běhají jen prehistorické binárky)? To je v pohodě. Nesmí se to *uchvátat*, ale ne, pokud tyto distribuce v podstatě neaktualizují, tak se o ně nemůžeme navždycky starat kvůli něčemu jako powertop.

U věcí, co rozbíjejí *normální* aplikace, je to jiné. Tam pravidlo musí znít „nikdy“.

Arjan van de Ven souhlasil a ukázal na verzi 3.6, ve které by už se mohl padding odstranit s tím, že ti, kdo neaktualizovali distribuci, aby se k nim tak dostal nový PowerTOP, asi ani nebudou aktualizovat jádro. Rostedt řekl, že patch připraví pro verzi 3.6 nebo 3.7.

Ačkoliv jak Torvaldsovi, tak Ingu Molnarovi přišly čtyři bajty jako nepodstatná věc, Rostedt poukázal na to, že pro uživatele trasování jde o častý problém. Navíc neslouhlasí s Molnarovým tvrzením, že jde jen o kosmetický detail:

4 bajty nejsou kosmetický detail u události, která má 32 bajtů. To je režie 1/8. Kdybychom se mohli zbavit 4 bajtů ze struktury stránky, udělali bychom to? Šlo by jen o 4 bajty na [každých] 4096 bajtů. To je režie jen 1/1024. Události perfu jsou ale samozřejmě větší než 32 bajtů. Je to jedna z největších stížností, které na perf slýchám, totiž stížnosti na velikost jeho událostí. Na zlepšení bychom měli tvrdě pracovat.

V situacích, kde se hraje o každý bajt, například na embedded zařízeních nebo u lidí, co se snaží do svého systému namačkat ještě víc procesů, může snížení režie událostí představovat zlepšení. Zachycení více událostí pomocí stejného objemu paměti zvyšuje šanci na odhalení problému, kvůli kterému bylo trasování povoleno. Když se před rokem problém objevil, David Sharp z Google poznamenal, že velikost událostí představuje pro tohoto vyhledávacího giganta velký problém. A asi nebudou sami.

I když formát dat v ring bufferu perfu může brzo být uzavřenou kapitolou – ačkoliv je možné, že se najdou i další aplikace, co ručně tahají data z tohoto ring bufferu – body sledování [tracepoints] stále představují nedořešený problém v ABI. Zatím se řeší hlavě přidávání bodů sledování, ale jednoho dne bude třeba nějaké odstranit nebo upravit. Pokud budou nástroje záviset na tom, že konkrétní body poskytují konkrétní informace, budou tyto změny představovat problém. A to problém obtížně řešitelný.

Odkazy a zdroje

Kernel coverage at LWN.net: May 24, 2012

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

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
Jaderné noviny – přehled za listopad 2023

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