Co přinesl Kernel 2.6 nového



Historie – Připomeňme si některá důležitá data ve vývoji linuxových jader. Jako první se na světě objevil Linux 1.0 a to v roce 1994. Podporoval pouze i386. Dále to byl Linux1.2 – v roce 1995, již podporoval i jiné architektury než jenom x86 – šlo o architekrury alpha, sparc a mips. Linux 2.0 – vyšel v roce 1996, přibyla podpora dalších architektur a poprvé se v linuxovém jádře objevuje podpora SMP. Linux 2.2 – 1999, v tomto jádře došlo k vylepšení SMP. Linux 2.4 – 2001, opět došlo k vylepšení SMP a nově se také objevila podpora USB, PC CARD, PCMCIA a PNP. Konečně Linux 2.6 – uveřejněn v roce 2004, co přibylo zde se za chvíli dozvíme. Do poslední chvíle nebylo jasné, zda-li se nové jádro bude „jmenovat“ 3.0 nebo 2.6. To vše díky velkým rozšířením jako je podpora procesorů NUMA (non uniform memory access) a procesorů bez MMU (memory managment unit).


Co jsou procesory bez MMU ?- (MMU = memory managment unit). Tyto procesory nedisponují mechanismem ochrany paměti, takže každý proces může způsobit pád jiného procesu => menší bezpečnost a to obvzláště na více uživatelských systémech. Nová podpora procesorů bez MMU avšak znamená velký pokrok, neb jsme se zbavily Intelovského omezení, což nám dává prostor pro další vývoj.


Nové procesory. Podívejme se, jaké procesory řada linuxových jader 2.6 nově podporuje. V jádře 2.6 byla nově přidána podpora těchto procesorů: Motorola m68k Dragonball a Coldfire (často jsou nasazovány v Palm Pilotech) a dále procesoru NEC v850. Dále se velmi zlepšila podpora procesoru Opteron, který, jak známo, je 64-bitový a je zpětně kompatibilní s existujícími procesory od Intelu (a jejich klony). Co se týče nově přidané podpory v 2.6, tak zmizel paměťový limit pro aplikace (max. 512MB ), který byl v 2.4. Toto vylepšení dokáže každý snadno ocenit :). S procesory je také úzce spojen Hyperthreading (Jeden procesor se navenek tváří jako dva) – jeho podpora byla sice už v 2.4.17, ale v 2.6 došlo k podstatným změnám v jaderném kódu. Linux byl první s podporou Hyperthreadingu, přestože tyto procesory byly vydány o rok dříve. Microsoft totiž nevěděl, jestli bude chtít poplatky za jeden nebo dva procesory :-). Dále byl sepsán nový plánovač úloh pro tyto procesory, protože u 2.4 byl občas výkon s HT horší než bez HT. Ještě dodejme pár slov o některých dalších optimalizacích týkajících se procesorů. Došlo k velmi velkému zlepšení podpory pro Pentium 4 Xeon, Pentium 3-M, Pentium 4-M a pro pár dalších mobilních procesorů od AMD. Jádro 2.6 se také nyní vyrovná s chybou AMD, kdy systém s víc jak 16 procesory občas při bootu havaroval. Což ale běžného usera asi moc netrápí :-)


Podívejme se nyní na srovnání výkonu dvou 3.2Ghz Xeonů pracujících na jádrech 2.4 a 2.6.





Je to smutné, ale krom ryze databázových operací (kde má 2.6 hodně navrch) testy dopadly jednoznačně vítězne pro řadu 2.4. Vše se ale může postupem času ještě změnit.


Subarchitektury – Pod tímto tajemně vypadajícím heslem se skrývá úplně nový pohled na hardware, který je linuxu 2.6 vlastní. Dříve byla mezi uživately osobních počítačů omezující doměnka, že typ hardware a typ procesoru jsou pevně svázané. Např procesor i386 a architektura PC/AT. Už v jádře 2.4 byla architektura i386 použitelná i na Visual Workstation od SGI. V 2.6 byl tento koncept standardizován. Převahuje snaha oddělit jen to, co je skutečně nutné – je to vidět i v menuconfig. (Pozn. ohledně kompilace: s kernelem 2.6 se změnila koncovka jaderných objektů a to z .o na .ko (kernel object). Při kompilaci je dále možno vidět zúžený výpis, který je o něco přehlednější). S touto standardizací přibyly dvě nové platformy a to Voyager od NCR (osazován procesory až 32 procesory 486-686) a PC-9800 (donedávna dominující v Japonsku, pracující na procesorech 8086 až Pentium se SMP). Je jen málo známe, že Microsoft dodával Windows 95 pro tuto platformu, ale je tomu skutčně tak. V roce 2002 byla tato platforma výrobcem opuštěna ve prospěch PC :-(. Díky podpoře nových procesorů, platforem a architektur se nám ještě více otevřela cesta k podpoře pro větší servery (protože používají procesory i386, ale i jiné), což nám dává velké místo pro budoucí optimalizaci. Příkladem je architektura NUMA (Non Uniform Memory Access). Tato architektura je o krok dále za SMP s velkým počtem procesorů, protože „ubohé“ SMP má pouze jednu množinu paměti, která je sdílena všemi procesory, takže dochází k hodně kolizím. Dále SMP používá pouze jednu sběrnici, která způsobuje efekt úzkého hrdla. Architektura NUMA má procesory se svojí pamětí, což funguje podobně jako PCI karty v PC. Je tedy vidět jistá podobnost architektury NUMA a úzce provázaného clusteru. Zpoždění při přidávání nových procesorů zde téměř neroste. Vzhledem k naprosto odlišné technoloii bylo třeba napsat pro architekturu NUMA úplně nový plánovač úloh.


Lepší škálovatelnost – Podívejme se nyní, které nové vychytávky u 2.6 můžeme najít. Nově můžeme v 2.6 najít podporu Intelovského PAE (Physical Address Extension), takže i 32 bitové x86 systémy mohou nyní mít až 64GB paměti. Počet uživatelů a skupin se zvýšil z 65 tisíc na 4 miliardy (16bit –> 32bit). Také nejvyšší PID (process ID) se zvýšil z 32tisíc -> 1 miliardu, což pomůže zrychlit startování aplikací na velmi vytížených systémech. Nezvýšil se počet otevřených souborů v systému, ale není třeba limit nastavovat ručně, určí se sám. Dále byla vylepšena podpora 64-bitového přístupu k blokovým zařízením, takže i na 32-bitových systémech jako je i386 můžeme mít souborový systém s 2TB. Zajímavou novinkou pro desktopové uživatele jistě je lepší interaktivita jádra - dříve pokud OS dělal něco uvnitř jádra, nemohl být rušen (u víceprocesorových systémů to platilo v rámci jednotlivých procesorů). Jádro je nyní premptivní, což znamená, že může být rušeno. Dostáváme tak lepší odezvu na desktopech, kde je tato vlastnost velmi žádoucí. Přirozeně je třeba uzamykat důležité částí kódu jádra, pokud v nich něco probíhá a to proto, aby nevznikly chyby souběhu - tzv. Race-conditions. S tím také souvisí nové odstranění Big Kernel Locks (velkých jaderných zámků), což jsou pozůstatky z pradávna, kdy byla podpora SMP v ještě počátcích. Co vůbec jsou ty zámky? Mějme dva procesy, ketré používají stejnou datovou strukturu v jádře, je přirozeně třeba, aby tato struktura byla pro jeden z procesů zamčena. Granularita zámků pak znamená jak jemná je úroveň tohoto řešení. Teoreticky může být jen jeden zámek, ale každý jistě uzná, že to není nejlepší způsob :-). Další novinkou je také podpora otevřených standardů – došlo k přepsání infrastruktury vláken tak, aby umožnilo běh NPTL (Native POSIX Thread Library), což nám zajišťuje zvýšení výkonu pro Pentium Pro a vyšší ve více vláknových aplikacích (RedHat používal NTPL už v 2.4). Tato novinka má také své nevýhody. Například Java od Sunu nebude fungovat se zaplou podporou NTPL, protože se nedrží standardu. Vzhledem k tomu, že ale výhod je i tak dost, dojde s největší pravděpodobností k přepsání Javy, tak aby se držela standardu a fungovala i na systémech s NTPL. V jádře 2.6 nově není možné alokovat více paměti než je k dispozici, tj. víc než je RAM + SWAP. Dříve malloc() uspělo, ikdyž pamět nebyla k dipozici. Byla přepsána mechanika přidělování paměti na dluh (memory overcommitment). Paměť na dluh - aplikace často chtějí hodně paměti, dá se alokovat o něco málo více než je k dispozici, protože aplikace paměť stejně nevyužijí nebo jí využijí až za delší dobu. Také je možno tuto vlastnost konfigurovat a to přes sysctl nebo /proc. Můžeme dále odebrat SWAP rovnou při kompilaci jádra. To je důležité „pouze“ pro speciální vnořené systémy kde swap není nutný.


Sjednocený model zařízení – model zařízení je infrastrukutura uvnitř jádra, která se stará o detekci HW a užívání volitelných prostředků. V linuxu 2.2 byl k HW primitivní přístup. Ovladače sběrnic musely samy vědět co dělat s HW a jak ho zjišťovat. V linuxu 2.4 došlo k prvnímu vykročení směrem ke sejdnocenému modelu. Došlo ke sjednocení PCI ,PC Card a ISA PnP. V linuxu 2.6. dochází k pokračování v tomto trendu. Ústřední prvek je objektově orientované rozhraní, které všechny nízkoúrovňové zařízení musí používat – tzv. Kobject, proto stále mluvíme o sjednoceném pohledu na HW. Díky tomuto novému uspořádání lze podporovat i systémy, kde je znalost HW nutná – třeba ACPI (Advanced Power Configuration and Power Interface). Na rozdíl od APM se u ACPI říká jednotlivým zařízením co mají dělat. Nebo Hot plug, což je přidávání zařízení za chodu. Nyní je postup stejný jako při bootu - vytvoří se kobjekt jako při detekci HW při startu systému,což nám dává jednodušší manipulaci s HW. Do nového sjednoceného modelu přibyla MCA (microchannel architecture) a EISA(extended industry standard architecture), byla přidána i databáze jejích jmen. Adresář /sys – zde je vidět zmiňovaný sjednocený pohled na HW. Připomenu, že jsme měli /proc pro procesy, devfs pro zařízení a devpts pro pseudoterminály dle UNIX98. Při přidání nového zařízení dojde k vytvoření nového adresáře (což není ale nutné) v /sys. Admin se sem může dívat na hardware (jméno, stav, napájení, IRQ,...). S hardware jsou úzce spojené moduly. Byly přepsány s cílem zvýšení stability a průhlednosti, jak již bylo zmíněno, tak koncovka .o přešla na koncovku .ko, aby bylo vidět, že je to kernel object. Pro zvýšní stability došlo k odstranění chyb souběhu (race-condition), které byly dlouho v jádřě - zařízení mohlo začít používat modul, který měl být odstraněn až po tom, co modul zjistil, že ho nikdo nepoužívá. Nyní je také možné úplně zakázat uvolnění modulů z jádra. Průhlednost - moduly nemusí být tolik chytré jako dřív, aby detekovaly zařízení která podporují na PCI, PnP ISA. V 2.6 je tato funkčnost standardizována a přístupná zvenčí, takže bude snažší pro zavaděče modulů vidět která zařízení bude modul podporovat. To je dobré třeba pro správu hardware kudzu od Red Hat (vše může pracovat správně ikdyž třeba správce daný hardware úplně nezná). Můžeme také jádro donutit (pomocí /sys), pracovat s modulem o kterém si systém myslí, že nebude s naším hardware pracovat.


Podpora základního HW – spíš jenom vylepšení, protože Linux jde i tak s dobou. Např. sběrnice podporuje linux od ISA až k bezdrátovým sběrnicím. Výjimkou je ovšem ISA PnP, kde linux zaostal za komerčnímy systémy. Dřive byla tato podpora poněkud těžkopádná. V jádře 2.6 bylo vše přepsáno,což dává mnohem lepší podpora PnP BIOSU, datábáze jmen, atd..., a to vede k lepší podpoře ISA PnP. Nově je také zařazena podpora AGP (accellerated graphic ports), což je vysokorychlostní sběrnice, která používá PCI protokol. To je jistě dobrá zpráva pro grafické stanice. Nově také přibyla podpora obecné sběrnice – tzv. legacy bus. Jsou to pouze očekávaná zařízení na jednotlivé architektuře. Př.: PC - sériový port, paralelní, PS/2. Nic důležitého, pouze kosmetická záležitost nutná k přechodu na standardní způsob zacházení s HW. Velmi důležitá sběrnice je jistě sběrnice USB – v 2.6 se dočkala velkého rozšíření podpory. A to USB 2.0 (přenos rychlostí až 480MB oproti 12 MB u USB 1.1). Nyní je také možné mít mnohem více zařízení stejného typu. To je přirozeně dobré například pro Tiskové servery. Další pokrok v podpoře HW zaznamenala bezdrátová zařízení. V poslední době došlo k velkému rozmachu těchto zařízení – jsou to zařízení síťová, ale i např. PDA. Dříve se zařízení dělila na dlouhý dosah (amatérská rádia) a krátký (přes protokol 802.11), nyní došlo k sjednocení, takže dochází k menšímu počtu konfiktních situací a teké nyní existuje řada uživatelských nástrojů, která funguje se všemi podporovanými zařízeními. Došlo také k přechodu na TCP protokol, který se lépe vyrovnává s opakujícími se zpožděními, která jsou pro bezdrátový přenos typická. Přepsání se také dočkala podpora IrDA, která již byla v 2.4, ale nyní je i s úsporou energie a samozřejmě také došlo k její integraci do nového modelu. Nově se objevila podpora stále více oblíbeného BlueTooth. Přenosové zařízení pro PDA, mobily, tiskárny. Funguje jako IrDA, ale vysílač a přijímač na sebe nemusí „vidět“. Všechny sběrnice byly také přirozeně zařazeny do nového modelu zařízení (někdy to byly jen kosmetické úpravy, někdy ale došlo k úplně jinému přístupu). Aktualizace a mnoha změn se dočkala také bloková zařízení – došlo k aktualizaci IDE/ATA a SCSI zařízení. Např. pálení je nyní možné přes IDE. Dříve byla nutná emulace SCSI, což bylo matoucí. IDE je nyní také schopno ptát se BIOSU. Například řadič který IDE zařízení nezná, tak se zeptá BIOSU a nastaví hodnoty podle odpovědi. Většinou to funguje. Linux nyní podporuje SCSI-2 multipath zařízení, která mají víc než 2 LUN (logické jednotky). SCSI-2 je starší než SCSI standard (je z roku 1994). Linux je nyní také shopen testovat média nestandardním způsobem jako ve Windows => lepší kompatibilita se zařízeními, která nedodržují specifikaci. Nově využívat také můžeme EDD (Enhanced Disk Device) BIOS. Systém nyní ví jak se server dívá (myšleno hardwarově) na disková zařízení (ví, co je připojeno). To je dobré pro získání konfigurace a dále může systém například zjistit z jakého zařízení byl zaveden, takže ví kam instalovat např. GRUB (dobré pro linuxové instalátory).


Souborové systémy. Nově v jádře 2.6 přibyla podpora rozšířených atributů a ACL (Access control list). Největších změn došlo u ext2 a ext3. Atributy pro jednotlivé soubory jsou uloženy uvnitř struktury souborového systému. Některé jsou jen pro systém, jiné např. pro roota (přístupné pro čtení i zápis). Řada operačních systémů už hojně atributy využívá. UNIXová tradice trochu pokulhává - budou se muset přepsat příkazy jako je třeba tar, tak aby zachovával atributy. Použití rozšířených atributů je např. v ACL (Access contrio list), což je nadmonožina UNIXovských práv, takže dostáváme jemnější řešení zabezpečení.Interval ukládání žurnálu u žurnálových souborových systémů může nyní být laděn, což je dobré pro notebooky, protože se dá interval nastavit tak, aby se disk neroztáčel zbytečně. V 2.6 můžeme také najít nový scheduler (plánovač) četní z disku. Mámě dvě možnosti výběru statistického předzpracování. A to anticipary (dobré pro desktopy) nebo deadline (pro databázové servery). U desktopů může dojít k zlepšení až o 10000 %, ale běžně dochází k zlepšení „jen“ o 200 %. U databázových serverů dochází ke zlepšení přibližně o 15 %.


Jako poslední zmíníme zlepšní kompatibility s jinýmy operačními systémy. Např. v jádře 2.6 se nově objevila podpora správce logických disků (Dynamic Disk), což je schéma z WinXP, které umožňuje lepší změny velikosti oddílů. Dále máme možnost přístupu na NTFS – i se zápisem (pouze v experimentální formě). A úplně nakonec souborový systém FAT12 byl nově doplněn o opravu chyby obsažené v řadě MP3 přehrávačů.


Zdroje : http://www.linuxzone.cz/index.phtml?ids=10&idc=782

http://www.linuxzone.cz/index.phtml?ids=10&idc=786

http://www.linuxzone.cz/index.phtml?ids=10&idc=789

http://www.2cpu.com/articles/98_1.html


David Pospíšil