Co přinesl Kernel 2.6 nového
Kompilace jádra -S kernelem 2.6 se změnila koncovka jaderných objektů a to z .o na .ko (kernel object). Při kompilaci je možno vidět zúžený výpis, který je o něco přehlednější. Přehlednější je také kompilační menu (došlo k jiné organizaci menu a to zejména kvůli jinému pohledu na hardware, viz. níže).
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).
Historie - Linux 1.0 - 1994 podporoval pouze i386. Linux1.2 - 1995 již podporoval architektury alpha, sparc a mips. Linux 2.0 - 1996 přibyli další architektury a poprvé se zde objevuje podpora SMP. Linux 2.2 - 1999 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 – 2004 co přibylo zde se za chvíli dozvíme
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 znamená velký pokrok, neb jsme se zbavily Intelovského omezení, což nám dává prostor pro další vývoj.
Nové procesory. V jádře 2.6 byla nově přidána podpora těchto procesorů: Motorola m68k Dragonball a Coldfire (často jsou v Palm Pilotech) a dále procesoru NEC v850.
Procesor 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é podpory, tak byla již v 2.4, ale v 2.6 není limit pro aplikace max. 512MB paměti, což každý dokáže snadno ocenit.
Subarchitektury - Dříve byla mezi uživately osobních počítačů 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 na Visual Workstation od SGI. V 2.6 byl tento kocept standardizován. Převahuje snaha oddělit jen to co je skutečně nutné – je to vidět i v menuconfig.
S touto standardizací přibily dvě nové platformy a to Voyager od NCR (486-686 32 procesorů) a PC-9800 (donedávna dominující v Japonsku, pracující na procesorech 8086 až Pentium se SMP). Je málo známe, že Microsoft dodával Windows 95 pro tuto platformu, ale je tomu skutčně tak. V roce 2002 byla byla tato platforma výrobcem opuštěna ve prospěch PC :-(
Díky podpoře nových procesorů se nám 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 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ů. „Ubohé“ SMP má pouze jednu množinu paměti, která je sdílena všemi procesory, takže dochází k hodně kolizím a 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ž je něco jako PCI karty. Je tu zřejmě jistá podobnost NUMA s úzce provázaným clusterem. Zpoždění při přidávání nových procesorů téměř neroste. Vzhledem k naprosto odlišné technoloii bylo třeba napsat pro architekturu NUMA úplně nový plánovač úloh.
Jak to vypadá s optimalizací? Došlo k velmi velké optimalizaci pro Pentium 4 Xeon, Pentium 3-M, Pentium 4-M a dalších mobilních procesorů od AMD. Jádro 2.6 se také 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í :-)
Hyperthreading – byl sice už v 2.4.17, ale v 2.6 došlo k podstatným změnám v ködu. Jeden procesor se u Hyperthreadingu navenek tváří jako dva. 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, protože u 2.4 byl občas výkon s HT horší než bez HT.
Porovnání výkonu 2.4 .vs 2.6




Lepší škálovatelnost – 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). 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.
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. 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.
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 , což je také nový adresář, který přibyl s příchodem kernelu 2.6) pracovat s modulem o kterém si systém myslí, že nebude s naším hardware pracovat.
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čna. 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 :-)
V jádře 2.6 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.
Otevřené standardy – 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. Java od Sunu ale bohužel nebude fungovat se zaplou podporou NTPL, protože se nedrží standardu. Vzhledem k tomu, že 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.
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.
Adresář /sys – zde je vidět často 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,...).
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.
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.
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.
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.
Sběrnice USB – velké rozšíření podpory. USB 2.0 (přenos rychlostí až 480MB oproti 12 MB u USB 1.1). Nyní je možné mít mnohem více zařízení stejného typu. To je přirozeně dobré například pro Tiskové servery.
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í. 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á.
Podpora IrDA – již byla v 2.4, ale nyní je i s úsporou energie a samozřejmě také došlo k integraci do nového modelu.
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“. I této „vymoženosti“ jsme s jádrem 2.6 dočkali.
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. Třeba ř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.
Podpora EDD (Enhanced Disk Device) BIOS. Systém ví jak se server dívá (myšleno hardwarově) na disková zařízení (ví, co je připojeno). Dobré pro získání konfigurace a dále může systém zjistit z jakého zařízení byl zaveden, takže ví kam instalovat např. GRUB (což je dobré pro linuxové instalátory).
Všechny sběrnice byly 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).
Souborové systémy. Nově 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 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é 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 %.
Zlepšní kompatibility s jinýmy operačními systémy. Např. podpora správce logických disků (Dynamic Disk),což je schéma z WinXP, které umožňuje lepší změny velikostí oddílů. Dále máme možnost přístupu na NTFS – i se zápisem (pouze v experimentální formě). A 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