Portál AbcLinuxu, 30. května 2024 14:55

Jaderné noviny – 4. 7. 2013: Co se chystá v Linuxu 3.11

22. 7. 2013 | Luboš Doležel
Články - Jaderné noviny – 4. 7. 2013: Co se chystá v Linuxu 3.11  

Aktuální verze jádra: 3.10. Citáty týdne: Steven Rostedt, Rusty Russell, Paul McKenney. Průvodce vylaďováním systému souborů na flash. Hledají se témata pro Kernel Summit 2013. Počty referencí pro každé CPU zvlášť. Začleňovací okno řady 3.11 se otevírá.

Obsah

Aktuální verze jádra: 3.10

link

Jádro 3.10 vyšlo 30. června. V Linusově oznámení se píše: Celkově vzato bylo toto vydání vcelku obvyklé a ne nijak zvlášť náchylné k problémům, navzdory mému blábolení okolo přesného data vydání. Jak už to tak bývá, většina patchů se týká ovladačů (vychází to skoro přesně na dvě třetiny), zatímco zbytek je rovnoměrně rozdělen mezi architektury a 'to ostatní'. Tentokrát tu nemáme žádné nové velké architektury, i když se tam najdou samostatné nové funkce. Mezi některé tyto nové funkce patří řada vylepšení ve Ftrace, mechanismus notifikací o nedostatku paměti, běh bez tiku, podpora správy výkonu multi-clusteru na ARM (součást řešení big.LITTLE), bloková cachovací vrstva bcache a spousta dalších věcí. Podrobnosti najdete na KernelNewbies.

V době psaní tohoto textu je začleňovací okno verze 3.11 stále otevřené; níže najdete přehled toho, co bylo doposud začleněno.

Stabilní aktualizace: verze 3.9.8, 3.4.51 a 3.0.84 vyšly 27. června, verze 3.2.48 vyšla 30. června a verze 3.9.9, 3.4.52 a 3.0.85 vyšly 3. července.

Citáty týdne: Steven Rostedt, Rusty Russell, Paul McKenney

link

Hmm, vsadil bych se, že lockdep a trasovač větví [branch tracer] asi nebudou dohromady moc dobře fungovat. Oba rádi někoho šikanují a teď chtějí zmlátit toho stejného kluka. Problém je v tom, že oba chtějí toho kluka na mlácení sami pro sebe a nechtějí na to pomoc od někoho cizího.

-- Steven Rostedt

Na svou obranu říkám, že jsem vlastně netvrdil, že to ten patch opravdu vykoná. Řekl jsem, že „může“.

-- Rusty Russell

V této fázi chci testery, kteří se pro testování sami rozhodli. Nešťastné oběti to budou testovat později. Tím nemyslím testery randconfigu, ty považuju za dobrovolné nešťastné oběti.

-- Paul McKenney

Průvodce vylaďováním systému souborů na flash

link

Tim Bird oznámil dostupnost rozsáhlého průvodce vylaďováním Linuxu pro úložná zařízení na bázi flash [PDF]. Je to výsledek několika měsíců práce s cílem zjistit dopad různých nastavení Linuxu za použití různých systémů souborů běžících na blokových zařízeních na bázi flash. Dokument připravilo Cogent Embedded a financovala to pracovní skupina CE z Linux Foundation. Kromě popisu různých voleb pro doladění výkonu dokument popisuje i různé metody měření výkonu systémů souborů a obsahuje rozsáhlé grafy zobrazující dopad všemožných voleb.

Hledají se témata pro Kernel Summit 2013

link

Bylo zahájeno plánování letošního Kernel Summitu (23.-25. říjen v Edingurghu); stejně jako v minulých letech výbor hledá návrhy na vhodná témata, která by se měla prodiskutovat. Nejlepšími tématy bývají ta, která se nehodí do žádné z debat nebo minisumitů zaměřených na konkrétní subsystém a která nejde vyřešit klasicky přes e-mail nebo IRC. Mezi ně patří problémy s vývojovým procesem nebo témata napříč subsystémy.

Počty referencí pro každé CPU zvlášť

link

Počítání referencí se v jádře používá k tomu, aby se vědělo, kdy už není jaká datová struktura potřeba a je možné se ji zbavit. Obvykle se reference vyjadřují pomocí proměnné typu atomic_t, případně jsou zabalené do struktury jako kref. Pokud se ale reference přidávají a odebírají během života objektu často, pak se proměnná atomic_t může stát výkonnostním problémem. Jádro 3.11 bude obsahovat nový mechanismus čitačů referencí počítající pro každé CPU zvlášť, který by měl v těchto situacích zlepšit škálovatelnost.

Tento mechanismus navržený Kentem Overstreetem je definován v <linux/percpu-refcount.h>. Obvykle se používá tak, že se vloží struktura percpu_ref do datové struktury, která se má sledovat. Čítač musí být inicializován pomocí:

int percpu_ref_init(struct percpu_ref *ref, percpu_ref_release *release);

Kde release() je funkce, která se má zavolat, jakmile počet referencí klesne na nulu:

typedef void (percpu_ref_release)(struct percpu_ref *);

Volání percpu_ref_init() nastaví počet referencí na jednu. Reference se přidávají a ubírají pomocí:

void percpu_ref_get(struct percpu_ref *ref);
void percpu_ref_put(struct percpu_ref *ref);

Tyto funkce pracují nad polem čítačů zvlášť pro každé CPU, takže v systému nezpůsobí přehazování linek cache. Je tu ale jeden potenciální problém: percpu_ref_put() musí zjistit, zda počet referencí poklesl na nulu, a pokud ano, pak musí zavolat funkci release(). Výpočet součtu hodnot v poli čítačů by bylo natolik náročné, že by zrušilo jakékoliv přednosti. Tento problém se obchází díky jednoduchému triku: dokud existuje počáteční reference, pak celkový počet nemůže být nulový, takže percpu_ref_put() to nemusí kontrolovat.

Důsledek to má ten, že vlákno volající percpu_ref_init() musí dát vědět, kdy se zbavuje své reference; to se dělá pomocí volání:

void percpu_ref_kill(struct percpu_ref *ref);

Po tomto volání se čítač referencí degraduje na obvyklý model s jediným sdíleným čítačem atomic_t; tento čítač bude při každém uvolnění reference dekrementován a zkontrolován.

Výkonnostní přednosti takového čítače se pochopitelně projeví jen v situacích, kdy je většina referencí na objekt přidávána nebo odebírána zatímco původní počáteční reference stále existuje. V praxi tomu tak často bývá. Tento mechanismus už našel své použití v kódu řídících skupin; komentáře v hlavičkovém souboru tvrdí, že se používá i v kódu pro asynchronní I/O, ale to není v současném stavu hlavní řady pravda.

Začleňovací okno řady 3.11 se otevírá

link

Bylo nebylo, Linus se kdysi pokusil omezit aktivitu během začleňovacího okna na přibližně 1000 commitů za den. 2. července, kdy začal přetahovat změny pro verzi 3.11, se dostalo do hlavní řady přes 3000 commitů. Je jasné, že tempo 1000 commitů/den v éře 3.x prostě nestačí. Tak jako tak je ale počet nových funkcí začleněných do verze 3.11 zatím docela malý. Většina práce se zatím skládá z pročišťování (například ve stromě staging), přepracování kódu architektury ARM, aby se používala jednotná abstrakce, a odstranění podpory „board file“ u některých podarchitektur ARM.

Mezi změny viditelné uživatelům patří:

Mezi změny viditelné vývojářům patří:

Zavření začleňovacího okna lze očekávat 16. července, ale Linus v posledních vývojových cyklech občas okna krátil. Pokud celý vývojový cyklus bude trvat obvyklých 70 dnů, pak jádro 3.11 můžeme očekávat okolo 10. září.

Odkazy a zdroje

Kernel coverage at LWN.net: July 4, 2013

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

Diskuse k tomuto článku

22.7.2013 00:28 Zopper | skóre: 15
Rozbalit Rozbalit vše Re: Jaderné noviny – 4. 7. 2013: Co se chystá v Linuxu 3.11
Odpovědět | Sbalit | Link | Blokovat | Admin
V "počtech referencí" chybí uzavření tagu <code>. :)
"Dlouho ještě chcete soudit proti právu, stranit svévolníkům?" Ž 82,2
22.7.2013 17:24 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Jaderné noviny – 4. 7. 2013: Co se chystá v Linuxu 3.11
Vivat XML!
22.7.2013 08:22 _dworkin
Rozbalit Rozbalit vše Re: Jaderné noviny – 4. 7. 2013: Co se chystá v Linuxu 3.11
Odpovědět | Sbalit | Link | Blokovat | Admin
... Tentorkát tu nemáme ...

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