Jadrový protokol - čo prináša (3) časopis o infraštruktúre
Trendy a novinky Protokol jadra

AppArmor, vstupné body pre antivírusové skenery v prístupe, novo napísaný program Zabudnutie pamäte a základy kódu Xen-Dom0 sú niektoré z najdôležitejších noviniek v jadre Linuxu 2.6.36. Vďaka určitej reštrukturalizácii sa táto verzia stáva o niečo menšou ako jej predchodca, a to aj napriek niekoľkým stotisíc riadkom nového kódu.
V stredu ráno vydal Linus Torvalds šiestu verziu Linuxu 2.6.36 pred vydaním. Naznačil, že by čoskoro chcel vydať 2.6.36, ale možno nakoniec pridá ďalšiu predbežnú verziu.
Protokol jadra to berie ako príležitosť na pokračovanie minisérie „Čo prináša 2.6.36“ s popisom inovácií týkajúcich sa vecí ako správa pamäte, systém zostavovania a podpora rôznych architektúr CPU a systému. Prvý diel série sa zaoberal zmenami v grafickom hardvéri, druhý súborovými systémami, úložiskom a sieťovým hardvérom; štvrtá časť o zmenách v ACPI, PCI, správe napájania a ovládačoch pre USB, FireWire, V4L/DVB a Co. dokončí mini sériu za pár dní.
Bezpečnosť
Potom, čo sa vývojári aplikácie AppArmor, ktorú spoločnosť Novell zverejnila v roku 2006, už niekoľko rokov neúspešne pokúšali zahrnúť kód jadra na vylepšenie zabezpečenia, vo verzii 2.6.36 sa konečne našlo jadro (vrátane dokumentácie 1, 2, 3). Podobne ako SELinux, aj AppArmor môže obmedziť aplikácie na konkrétne akcie; Útočníci, ktorí získajú prístup do systému prostredníctvom bezpečnostnej medzery, napríklad v softvéri servera, môžu preto spôsobiť iba obmedzené škody.
AppArmor má povesť ľahšej správy ako SELinux. Posledný menovaný uprednostňuje Red Hat a okrem iných ho využívajú aj Red Hat Enterprise Linux (RHEL) a Fedora. Spoločnosť Novell sa dlho zameriavala na AppArmor, ale v roku 2007 sa oddelila od vlastného vývojového oddelenia AppArmor a od roku 2008 tiež používa SELinux. Výsledkom bolo, že vývoj AppArmor sa výrazne spomalil, až kým mu John Johansen začiatkom roka nedal nový impulz a nakoniec ho neposunul do oficiálneho jadra. Johansen predtým pracoval v spoločnosti Novell a v súčasnosti je zodpovedný za integráciu AppArmor do Ubuntu v spoločnosti Canonical.
Fanotify, ktorá vzišla z TALPA, potrebovala početné pokusy a niekoľko rokov predtým, ako ju Torvalds integroval (vrátane 1, 2, 3). Stavia na Fsnotify integrovanom v 2.6.31 a ponúka vstupné body, cez ktoré sa môžu napríklad antivírusové skenery pripojiť a skontrolovať súbory pri prístupe k malvéru skôr, ako je doručený ich obsah („kontrola pri prístupe“). Niekoľko článkov na LWN.net (vrátane 1, 2, 3) poskytuje základné informácie o tom, ako funguje Fanotify, a o problémoch so staršími verziami Fanotify.
[Aktualizácia 14. októbra 2010, 9:30] Iba pár dní pred dokončením systému Linux 2.6.36 vývojári dočasne deaktivovali užívateľské rozhrania Fanotify, aby mohli napraviť niektoré nedostatky, z ktorých niektoré majú vplyv aj na ABI (1, 2, 3) - to znamená, že Fanotify momentálne nie je možné použiť. Ladenie a reaktivácia rozhraní používateľského priestoru sú plánované pre jadro 2.6.37; Stále nie je jasné, či sa tieto opravy pravdepodobne dostanú aj do jedného zo stabilných jadier série 2.6.36. [/Aktualizácia]
Správa pamäte a vlákien
Vývojári jadra významne zmenili a do veľkej miery prepísali zabijáka Out of Memory (OOM), ktorý pri nedostatku pamäte zabíja procesy, aby mohol systém pokračovať v práci (1, 2, 3). Z dôvodu týchto zmien sa jemná úprava OOM uplatňuje cez/proc /
/ oom_adj je teraz „zastarané“ a mal by zmiznúť v auguste 2012. LWN.net poskytuje ďalšie základné informácie o zmenách OOM v článku „Prepísanie iného vraha OOM“.
Hackeri jadra tiež integrovali „Concurrencey Managed Workqueues“, ktoré optimalizujú prácu s vláknami jadra (vrátane 1, dokumentácia). Vďaka tomu by jadro malo efektívnejšie využívať zdroje, lepšie škálovať a vychádzať s menej vláknami na mnohých systémoch - užívatelia si tiež všimnú druhé, pretože to skracuje zoznam vlákien jadra vydaných ps -A. Vývojár poskytuje ďalšie výhody a dôvody zmien v podrobnom e-maile na svojich opravách a ako súčasť požiadavky Git-Pull; LWN.net minulý rok na jeseň napísal článok o súbežne riadených pracovných frontoch.
[virtualizácia zalomenia stránky, Kbuild]
Kód architektúry
Zoznam procesorových architektúr podporovaných jadrom sa s 2.6.36 opäť rozrastá a teraz obsahuje aj 32-bitové procesory TILEPro a TILE64 (vrátane 1, 2, 3) vyvinuté spoločnosťou Tilera. Sú to procesory VLIW podobné MIPS s mnohými jadrami, ktoré navzájom komunikujú prostredníctvom siete iMesh. Pretože pracujú veľmi hospodárne, do serverového racku je možné umiestniť viac ako 10 000 procesorových jadier. Podpora pre procesory Nvidia Tegra, ktoré sú založené na architektúre ARM (vrátane 1, 2, 3), pochádza z prostredia Androidu. Ďalej jadro teraz obsahuje asi 90 percent ovládačov pre Ben NanoNote (vrátane 1, 2, 3, 4, 5, 6, 7, 8) - vreckového počítača s otvorenou hardvérovou platformou, ktorý je od jari k dispozícii aj v Európe. je k dispozícii.
Správca KVM Avi Kivity vo svojej požiadavke Git-Pull píše, že v 2.6.36 nie sú v KVM žiadne zásadné nové funkcie. Naznačuje však niektoré optimalizácie výkonu a spomína podporu príkazov procesora Xsave (1, 2) a AVX (Intel Advanced Vector Extension) v hosťujúcich systémoch.
Prehľad žiadostí o Git-Pull od Jeremyho Fitzhardinga a Konrada Rzeszutka Wilka poskytuje prehľad zmien v kóde Xen. Vďaka opravám zhromaždeným prvými sa ovládače Paravirt teraz dajú použiť aj v plne virtualizovaných doménach („pv-on-hvm“); Kvôli ďalším zmenám môže Linux ako paravirtualizovaný hosťovací systém pristupovať k zariadeniam PCI prostredníctvom akejsi virtuálnej IOMMU, ktorú poskytuje hostiteľ (Dom0) (vrátane 1). Niektoré zo zmien tiež položia základy, na ktorých by mal byť založený kód na prevádzkovanie jadra Linuxu ako „počiatočnej domény“ - druh zbavenej podpory Dom0. Tento kód je v súčasnosti diskutovaný na LKML a mohol by sa presunúť do hlavnej vývojovej vetvy Linuxu v jednej z ďalších verzií.
Lean
Kód Kbuild teraz ponúka štyri nové ciele:
- „oldnoconfig“ nahrádza „loose_nonint_oldconfig“ a nastaví všetky možnosti konfigurácie v konfiguračnom súbore jadra „.config“ na „nie“, ktoré predtým neboli nastavené.
- "listnewconfig" nahrádza "nonint_oldconfig" a vypíše všetky možnosti, ktoré ešte neboli nastavené v ".config".
- „alldefconfig“ vytvorí „.config“, v ktorom sú všetky možnosti dané predvolenými nastaveniami zadanými súbormi Kconfig.
- "savedefconfig" zapíše konfiguračný súbor s názvom "defconfig", v ktorom sú uvedené iba možnosti, ktoré sa líšia od štandardného nastavenia súborov Kconfig.
S pomocou tohto posledného cieľu vývojári vytvorili desiatky štandardných konfiguračných súborov pre rôzne architektúry systémov a procesorov podporovaných jadrom Linuxu, ktoré nahradzujú predchádzajúce štandardné konfiguračné súbory. Pretože tento tiež predtým obsahoval položky pre všetky možnosti, ktoré súbory kconfig jadra špecifikovali ako štandard, zodpovedajúce potvrdenie je takmer 6 MB a odstráni viac ako dvestotisíc riadkov v zdrojoch jadra.
Správcovia podpory Itanium (IA64) a Power predtým týmto spôsobom zjednodušili svoje konfiguračné súbory (1, 2). Všetky tieto zmeny sú hlavným dôvodom, prečo by mal byť zdrojový kód 2.6.36 o niečo menší ako jeho priamy predchodca - je to mimoriadne neobvyklé, pretože za posledných pár rokov sa jadro s každou novou verziou rozrástlo o niekoľko stotisíc riadkov.
Diéta pre štandardné konfiguračné súbory začala už v 2.6.35, keď vývojári jadra zmenšili súbory pre systémy ARM. Celá vec to pre používateľa nič nezmení, pretože ako predtým vytvorí príkaz „make defconfig“ základný konfiguračný súbor pre váš vlastný systém.
[rôzne zalomenie stránky, malé perličky]
rôzne
- Jadroví hackeri ďalej obmedzili použitie protokolu Big Kernel Lock (BKL) v kóde infraštruktúry a mnohých ovládačov - vrátane subsystému TTY, čo spôsobilo ťažkosti aj niektorým z najskúsenejších jadrových hackerov. Vývojári sa tak posúvajú bližšie k cieľu jadra pracujúceho na štandardných systémoch bez tohto ťažkopádneho uzamykacieho mechanizmu, ktorý zhoršuje škálovateľnosť a výkon systému.
- Kód x86 teraz podporuje upozornenia na limit napájania procesorov Intel Sandy Bridge, ktoré sa očakávajú začiatkom budúceho roka (1, 2, 3). Nový ovládač Hwmonitor pkgtemp je založený na ňom a dokáže načítať teplotu procesora (1, dokumentácia)
- V určitých situáciách plánovač procesov znižuje konkurenciu medzi vláknami jadra, ktoré chcú získať výlučnú kontrolu nad obsadeným zdrojom. To umožňuje aktívnemu procesu nerušene pracovať, čo v niektorých prípadoch výrazne zvyšuje dátovú priepustnosť (Commit, článok LWN.net).
- Rovnako ako u svojich predchodcov, aj verzia 2.6.36 prináša množstvo zmien v ladení, sledovaní výkonu a sledovacom kóde. Jadroví hackeri odstránili napríklad doplnok Ftrace kmemtrace, pretože funkcie sa teraz dajú vykonávať pomocou stopových udalostí typu „kmem“ a „perf kmem“. Ako už bolo popísané v prvej časti série „Čo prináša 2.6.36“, jadro na systémoch s podporou Intel KMS teraz ponúka debuggerový plášť KDB na analýzu príčiny havárie X servera. keď prepnutie na textovú konzolu už nie je možné a nie je nakonfigurovaná žiadna sériová konzola.
- Takmer mesiac po skončení okna na zlúčenie vykonali hackeri jadra zmenu plánovača procesov, prostredníctvom ktorého by plánovač mal skrátiť maximálne čakacie doby, najmä na desktopových systémoch, keď iné procesy vyžadujú paralelne čas CPU - čo sľubuje lepšie Rýchlosť odozvy, vďaka ktorej by sa systém mal cítiť rýchlejšie. Diskusia, ktorá predchádzala zmene a komentár k potvrdeniu, vysvetľujú pozadie a poskytujú namerané hodnoty, podľa ktorých sa maximálna latencia v testovacom scenári takmer znížila na polovicu.
- S 2.6.36 chcú jadroví hackeri eliminovať problém, ktorý spôsoboval, že sa systémy s 2.6.35 a niektorými staršími verziami jadra za určitých podmienok cítili extrémne pomaly alebo občas prestali reagovať, zatiaľ čo jadro prenieslo väčšie množstvo dát na pomalé médium (napr. USB kľúč) napísal (vrátane 1).
- Vylepšenie zabezpečenia Tomoyo teraz ponúka „Interaktívny vynútiteľný režim“, pomocou ktorého môžu správcovia rozhodnúť, či majú ignorovať porušenie pravidiel. Ako to funguje, ukazuje video na YouTube.
- Stefani Seibold zmenil API Kfifo, ktoré už bolo podstatne revidované v 2.6.32, aby zlepšilo výkon a poskytlo lepšie API (vrátane 1, 2). Staré volania API sú stále podporované, nové možnosti sú vysvetlené na niekoľkých príkladoch.
- Coccinelle je možné teraz volať cez make target „coccicheck“ - program na analýzu sémantického kódu, ktorý môže programátorom uľahčiť prácu pri refaktoringu kódu. Podrobnosti o možnostiach poskytuje dokumentácia k jadru a článok zverejnený na serveri LWN.net na jar minulého roku.
Malé perličky
Mnoho menších, ale v žiadnom prípade nepodstatných zmien, nájdete v nasledujúcom zozname s anglickými nadpismi záväzkov pre príslušnú zmenu. Rovnako ako mnoho odkazov v predchádzajúcom texte, aj záznamy odkazujú na webové predok pobočky Git udržiavaný Linusom Torvaldsom s „oficiálnymi“ zdrojmi jadra na webe Kernel.org. Komentár potvrdenia zobrazený prostredníctvom týchto odkazov a oprava vydaná pod ním poskytuje oveľa viac informácií o príslušných zmenách.
Pred každým odkazom sú v hranatých zátvorkách písmená a čísla. „C“ označuje opravy so zmenami v súboroch Kconfig, ktoré obsahujú texty pomoci a možnosti konfigurácie, ktoré sa zobrazujú počas konfigurácie jadra pomocou nástrojov „make menuconfig“, „make xconfig“ a podobných nástrojov. „D“ znamená opravy, ktoré menia dokumentáciu, ktorá sa nachádza vo vetve jadra v časti Dokumentácia /. Písmeno „N“ označuje zmeny, ktoré vytvárajú nový súbor. Číslo poskytuje hrubý dojem o veľkosti opravy: „1“ znamená zmeny medzi 10 a 20 kByte vrátane komentárov, „2“ zmeny, ktoré majú veľkosť medzi 20 a 30 KBytov; Zmeny bez čísla sú menšie ako 10 kB, zatiaľ čo opravy s číslom „9“ majú veľkosť 90 kB alebo väčšiu.
Ladenie, sledovanie výkonu a sledovanie kódu