Portál AbcLinuxu, 26. dubna 2024 12:53

Jaderné noviny – 10. 2. 2010

3. 3. 2010 | Jirka Bourek
Články - Jaderné noviny – 10. 2. 2010  

Aktuální verze jádra: 2.6.33-rc7. Citát týdne: Al Viro. Kdo napsal 2.6.33 (statistiky přispěvatelů do linuxového jádra, kdo toho nejvíce naprogramoval a kdo ty lidi platil). Podpora skriptování v perf.

Obsah

Aktuální verze jádra: 2.6.33-rc7

link

Současné vývojové jádro je 2.6.33-rc7 vydané 6. února. Musím přiznat, že bych si přál, aby byl seznam regresí touto dobou kratší… Ale rozhodně jsme několik věcí opravili a je to už týden, takže tady je -rc7. Přál bych si, abych mohl říct, že je to poslední -rc, ale o tom silně pochybuji a téměř určitě bude přinejmenším o jedno víc. Detaily vizte v kompletním changelogu.

Stabilní aktualizace: Jádro 2.6.32.8 bylo vydáno 9. února. Omlouvám se za zpoždění při vydání, ale lidé nahlásili několik pádů spojených s tím, že byl bezpečnostní problém opravdu opraven a správně backportován, navíc jsem cestoval na a z FOSDEM, což všechno zabralo nějaký čas. Nejaktuálnější stabilní aktualizace 2.6.27 zůstává 2.6.27.45.

Citát týdne: Al Viro

link

Abych pravdu řekl, jsem asi takhle -><- blízko tomu napsat neotisknutelný výlev o háčcích [hooks] obecně, o s nimi spojeném stylu vývoje a o výsledných problémech. A přitom jmenovat a ukazovat spoustu příkladů.

LSM je v podstatě odpadkový koš a v podstatě všechno ošklivé končí v něm. To je v pohodě, pokud se někdo nestará o to, jestli jeho kód dává smysl, a jenom ho chce schovat před nepřátelskýma očima.

-- Al Viro

Kdo napsal 2.6.33

link

Jonathan Corbet, 9. února 2010

Vydání předverze 2.6.33-rc7 naznačuje, že se tento vývojový cyklus blíží ke konci, i když si Linus myslí, že bude potřeba -rc8. Jako tradičně se Jaderné noviny dívají na několik statistik spojených s tímto cyklem a s tím, odkud tento kód přišel.

V době psaní tohoto článku si svou cestu do 2.6.33 našlo 10 500 neslučovacích sad změn – poměrně standardní číslo. Tyto změny přidaly téměř 900 000 řádek kódu a smazaly téměř 520 000 jiných; výsledkem je, že jádro tentokrát narostlo o pouhých 380 000 řádek kódu. Podle aktuálního seznamu regresí bylo v 2.6.33 nahlášeno 97 regresí, z nichž zůstává 20 nevyřešeno.

Do kódu 2.6.33 přispělo nějakých 1 152 vývojářů. Nejaktivnější z nich byli:

Nejaktivnější vývojáři 2.6.33
Podle sad změn
Ben Hutchings1451,4 %
Frederic Weisbecker1451,4 %
Arnaldo Carvalho de Melo1381,3 %
Luis R. Rodriguez1301,2 %
Masami Hiramatsu1281,2 %
Bartlomiej Zolnierkiewicz1241,2 %
Eric Dumazet1081,0 %
Alan Cox1051,0 %
Manu Abraham1021,0 %
Thomas Gleixner1011,0 %
Eric W. Biederman970,9 %
Roel Kluin910,9 %
Alexander Duyck880,8 %
Paul Mundt870,8 %
Johannes Berg800,8 %
Wey-Yi Guy770,7 %
Alex Deucher760,7 %
Jean Delvare730,7 %
Al Viro720,7 %
Podle změněných řádek
Bartlomiej Zolnierkiewicz20646818,1 %
Henk de Groot503554,4 %
Jerry Chuang496274,3 %
Ben Skeggs375553,3 %
Philipp Reisner231822,0 %
Eilon Greenstein231232,0 %
Tomi Valkeinen225082,0 %
Mike Frysinger131161,1 %
Ben Hutchings126801,1 %
Jakob Bornecrantz116131,0 %
Wu Zhangjin113251,0 %
Greg Kroah-Hartman104680,9 %
Rajendra Nayak99780,9 %
Manu Abraham96250,8 %
jack wang91710,8 %
Masami Hiramatsu89730,8 %
Alan Cox76720,7 %
David VomLehn73310,6 %
Arnaldo Carvalho de Melo72170,6 %

I když se na čelních příčkách objevují některá ze stálých jmen, jsou zde i nějací nově příchozí. Ben Hutchings odvedl spoustu práce na síťových ovladačích včetně přidání ovladače SolarFlare SFC9000 (který má několik spoluautorů). Frederic Weisbecker byl aktivní v několika oblastech, přidal kód hardwarových bodů přerušení [breakpoints], pracoval na odstranění velkého jaderného zámku [Big Kernel Lock] ze souborového systému reiserfs a také na sledování a nástroji perf. Práce Arnalda Carvalho de Melo se téměř kompletně týkala subsystému událostí výkonnosti a obzvláště nástroje perf. Luis Rodriguez nadále pracuje na subsystému bezdrátových ovladačů, nejvíce na ovladači Atheros, a největší příspěvek Masamiho Hiramatsu je práce na dynamickém sledování [dynamic probing].

Ve sloupci „podle změněných řádků“ Bartlomiej Zolnierkiewicz dál opravuje některé ovladače bezdrátových zařízení ve stromě staging, přičemž maže spoustu kódu; také stále pracuje na IDE. Henk de Groot přidal ovladač Agere pro čipové sady HERMES II, Jerry Chuang přidal ovladač pro Realtek rtl8192u a Ben Skeggs většinu ovladače Nouveau.

Autor článku byl schopen identifikovat u příspěvků do 2.6.33 182 zaměstnavatelů. Nejaktivnější z nich byli:

Nejaktivnější zaměstnavatelé v 2.6.33
Podle sad změn
(žádný)153514,6 %
Red Hat122311,6 %
Intel10119,6 %
(neznámý)8688,3 %
IBM5004,8 %
Novell3903,7 %
Nokia3193,0 %
(konzultant)3163,0 %
Fujitsu2041,9 %
Texas Instruments1991,9 %
Atheros Communications1691,6 %
(školství)1661,6 %
AMD1651,6 %
Oracle1361,3 %
Analog Devices1301,2 %
Renesas Technology1261,2 %
Pengutronix1251,2 %
HP1241,2 %
Solarflare Communications1231,2 %
Podle změněných řádků
(žádný)30489526,7 %
(neznámý)1097169,6 %
Red Hat929918,1 %
Broadcom542724,8 %
Realtek499514,4 %
Intel463024,1 %
Nokia375053,3 %
Novell272352,4 %
IBM267832,3 %
(konzultant)258452,3 %
Texas Instruments242322,1 %
LINBIT232472,0 %
Analog Devices196771,7 %
VMWare160451,4 %
Samsung157071,4 %
Solarflare Communications150541,3 %
JiangSu Lemote Corp.114391,0 %
AMD92180,8 %
Universal Scientific Industrial Co.91940,8 %

Jako obvykle si Red Hat drží pozici na začátku seznamu, ale ostatní ho dohánějí; možná se dočkáme dne, kdy Red Hat bude jenom jedním z několika velkých přispěvatelů. Některé čtenáře možná překvapí, že na čelních příčkách vidí Broadcom, vzhledem k tomu, že tato firma nemá jako přispěvatel nejlepší pověst. Pravda je taková, že Broadcom zaměstnává několik vývojářů přispívajících do různých ovladačů v subsystémech síťování a SCSI; problémy jsou jenom v říši bezdrátových zařízení.

Jenom tak ze srandy autor opsal „procenta sad změn“ posledních deseti vydání do tabulky a dostal tento graf:

[Procentuální zastoupení přispěvatelů]

Toto rozdělení je za poslední tři roky překvapivě stabilní. Nejzjevnější identifikovatelné trendy jsou pravděpodobně plynulé nárůsty hodnot u Intelu a Nokie.

Vývojový proces dál pokračuje plynule. Když zanedbáme občasné stížnosti na to, že se některé firmy vývojového procesu neúčastní naplno, je celkový obraz takový, že stovky firem spolupracují na vytváření linuxového jádra, i když jinde spolu nemilosrdně soupeří. Významné procento kódu, který pochází od vývojářů pracujících ve svém volném čase, nicméně ukazuje, že Linux není jenom firemní záležitost. Vystavěli jsme vývojovou komunitu, která je schopna zabudovat zájmy a práci ohromujícího množství lidí do jediného jádra.

Jako vždycky díky Gregu Kroah-Hartmanovi, který věnoval spoustu práce tomu, aby v tabulkách výše omezil počet procent u záznamů (neznámý).

Podpora skriptování v perf

link

Jake Edge, 10. únor 2010

Nástroj perf pro analýzu chování systému rychle získává další funkce. Od začlenění do hlavní řady2.6.31, kde sloužil jako prostředek pro přístup k různým čítačům výkonnosti [performace counters] v CPU, svůj záběr rozšířil. Přibližně ve stejné době se do jádra dostala podpora pro obsluhu jaderných událostí jako událostí čítačů výkonnosti. V nedávné době Tom Zanussi přidal podporu pro používání skriptů v perlu a pythonu s nástrojem perf, takže ještě zjednodušil sofistikované zpracování událostí výkonnosti [perf events].

Podpora perlu již v hlavní řadě je, ale Tom nedávno přidal skriptovací engine pro python. Interpretery pro perl i python lze zabudovat do spustitelného souboru perf, což umožňuje zpracovávat čistá sledovaná data v kterémkoliv z těchto dvou jazyků.

Skriptování v perlu lze použít od verze 2.6.33-rc, ale podpora pythonu je k dispozici pouze po aplikování Tomových patchů na strom tip. Překlad perfu v adresáři tools/perf, což vyžaduje vývojové verze různých knihoven a nástrojů (glibc, elfutils, libdwarf, perl, python, atd.), poté dává přístup k nové funkcionalitě.

S perfem jsou dodávány různé příklady – skripty, které může vypsat perf sám:

# perf trace -l
List of available trace scripts:
  syscall-counts [comm]                system-wide syscall counts
  syscall-counts-by-pid [comm]         system-wide syscall counts, by pid
  failed-syscalls-by-pid [comm]        system-wide failed syscalls, by pid
  workqueue-stats                      workqueue stats (ins/exe/create/destroy)
  check-perf-trace                     useless but exhaustive test script
  failed-syscalls [comm]               system-wide failed syscalls
  wakeup-latency                       system-wide min/max/avg wakeup latency
  rw-by-file <comm>                    r/w activity for a program, by file
  rw-by-pid                            system-wide r/w activity

To je seznam směsi skriptů v perlu a pythonu, které žijí v adresářích tools/perf/scripts/{perl,python} a po make install jsou nainstalovány do správného místa (ve výchozím nastavení /root/libexec).

Skripty samy o sobě jsou z větší části generovány příkazem perf trace. Tomova dokumentace pro perf-trace-perlperf-trace-python popisuje proces použití perf trace k vytvoření kostry skriptu, který lze poté editovat a přidat do něj potřebnou funkcionalitu. Přidání dvou podpůrných skriptů v shellu (pro záznam a hlášení) do správného adresáře přidá nové skripty do seznamu, který vypisuje příkaz perf trace popsaný výše.

Nainstalované skripty lze poté využít následovně:

# perf trace record failed-syscalls
^C[ perf record: Woken up 11 times to write data ]
[ perf record: Captured and wrote 1.939 MB perf.data (~84709 samples) ]

Tím jsou zachycena data z nástroje perf do souboru pojmenovaného perf.data, který následně lze zpracovat takto:

# perf trace report failed-syscalls
perf trace started with Perl script \
    /root/libexec/perf-core/scripts/perl/failed-syscalls.pl


failed syscalls, by comm:

comm                    # errors
--------------------  ----------
firefox                     1721
claws-mail                   149
konsole                       99
X                             77
emacs                         56
[…]

failed syscalls, by syscall:

syscall                           # errors
------------------------------  ----------
sys_read                              2042
sys_futex                              130
sys_mmap_pgoff                          71
sys_access                              33
sys_stat64                               5
sys_inotify_add_watch                    4
[…]

# perf trace report failed-syscalls-by-pid
perf trace started with Python script \
    /root/libexec/perf-core/scripts/python/failed-syscalls-by-pid


syscall errors:

comm [pid]                           count
------------------------------  ----------

firefox [10144]
  syscall: sys_read
    err = -11                         1589
  syscall: sys_inotify_add_watch
    err = -2                             4

firefox [10147]
  syscall: sys_futex       
    err = -110                           7
[…]

Tento jednoduchý příklad ukazuje použití skriptu failed-syscalls k sesbírání dat a jejich následnému zpracování odpovídajícím skriptem v perlu stejně jako kompatibilním skriptem v pythonu (failed-syscall-by-pid), který data dělí trochu jinak. První hlášení ukazuje počet systémových volání během několika vteřin, kdy se sledovalo. Ukazuje počet chyb podle procesu a podle systémového volání.

Druhé hlášení kombinuje obojí a ukazuje každý proces společně s tím, jaká systémová volání ve spojení s ním selhala a kolikrát. Také existují odpovídající skripty, které počítají všechna systémová volání, ne jenom ta, která selhala, a hlásí je podobně. Jiné dodávané skripty se zabývají latencí probouzení, aktivitou čtení/zápisů do souboru a statistikami pracovních front.

Tyto možnosti skriptování zjednoduší jaderným hackerům – nebo možná i těm, kteří jimi nejsou – přístup k funkcionalitě nástroje perf. Stav sledování a osazení jádra se v posledních vývojových cyklech rychle zlepšuje a nezdá se, že by se tempo mělo v brzké době zpomalit.

Související články

Jaderné noviny – 3. 2. 2010
Jaderné noviny – 27. 1. 2010
Jaderné noviny – 20. 1. 2010
Jaderné noviny – 12. 1. 2010

Odkazy a zdroje

Kernel coverage at LWN.net: February 10, 2010

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.