Hlavní navigace

Lákadla FreeBSD 6.0

Roman Divácký

V krátké době vyjde nová verze unixového operačního systému FreeBSD 6.0. Ani ne po roce od uvedení první produkční verze FreeBSD 5.x je zde nová major verze. Toto je důsledkem nového systému vývoje FreeBSD. Co se tedy změnilo a jaká jsou lákadla nového FreeBSD?

FreeBSD

FreeBSD 6.x je evolučním vylepšením oproti předchozí řadě 5.x, jsou zde mnohá menší vylepšení (at už bugfixy, či velmi četné performance tweaky). Nicméně i v této verzi najdeme mnoho zajímavých novinek. Ty, které považuji za zajímavé, vám lehce představím, zbytek si můžete přečíst v release-notes, popř. na mailing listech či v cvs logách. Nekladu si za cíl kompletní seznam změn. Doufám, že můj článek doplníte v diskusi …

V létě 2005 byl zaplacen z komunitních peněz Poul-Henning Kamp, aby pracoval na přepsání částí IO subsystému (podobně jako je nyní placen Andre Oppermann za optimalizaci síťového stacku). V rámci této práce Poul zoptimalizoval používání zařízení v /dev, kdy napsal takzvaný device vnode bypass, což vyústilo v 2× rychlejší dd if=/dev/zero of=/dev/null. V novém FreeBSD už není možné používat zařízení mimo devfs, což zjednodušilo kód FS (není nutné se o to starat v UFS/FFS a zjednodušila se obsluha device vnode aliasingu). Další věcí, kterou udělal, bylo, že přepsal UFS/FFS, aby mluvilo přímo s GEOMem (io framework ve FreeBSD), a další věci. Celkově by mělo být IO ve FreeBSD 6 lepší (bezpečnější, škálovatelnější a rychlější). Poslední věcí, které se Poul věnoval, bylo přepsání tty subsystému. Tento pokus měl vést k Giant-free tty, nicméně není ještě hotovo. Zatím byl tty subsystém zjednodušen. Viditelnou změnou je přejmenování tty/cua zařízení v /dev.

V tichosti a podporován firmou Isilon Systems, Inc. se na podobnou oblast zaměřil Jeff Roberson, který přepsal VFS tak, aby nepoužívalo Giant mutex, a umožnilo tak několika procesům na různých CPU pracovat v jádře zároveň. Během této práce bylo nalezeno a odstraněno mnoho chyb, ať už závažnějších, které mohly vést k problémům, tak výkonostních. Celkově by měl být kernel na SMP rychlejší díky menšímu zatížení Giant mutexu.

FreeBSD se od Linuxu liší zejména vývojovým modelem. Pokud vás zajímá, jak probíhá vývoj FreeBSD, přečtěte si starší článek Způsob vývoje operačního systému FreeBSD.

Poslední závažnou změnou, která se týká IO, je nový ATA subsystém, který byl výrazně zmodernizován (podpora nových chipsetů, výrazná modularizace atd.). Mimochodem – nyní můžete kontrolovat, kdo vám zatěžuje disky, přímo v top, jen stiskněte písmenko m a je to.

Výše zmíněný zázračný hacker Jeff Roberson (kolují o něm neuvěřitelné historky) svého času napsal nový scheduler pro FreeBSD, takzvaný SCHED_ULE, který je ovšem ve všech řadách 5.x vypnutý kvůli své chybovosti. Všechny známé chyby byly nyní odstraněny, a to jak v UP, tak SMP konfiguracích, a tak nic nebrání tomu tento nový scheduler vyzkoušet.

FreeBSD používá poměrně sofistikovaný systém zamykání, zčásti je to z historických důvodů, zčásti kvůli tomu, že FreeBSD vývojáři jsou velmi vzdělaní. Každopádně první nástřel zamykání, tak jak byl představen v řadě 5.x, byl docela pomalý. V podstatě na všechno se používaly ty nejtěžší blokující mutexy. V řadě 6 je toto změněno. Všechny mutexy jsou teď adaptivní, tj. spinnují, pokud je předpoklad, že mutex bude brzy uvolněn, jinak pořád blokují.

Dalších změn se dočkaly konkrétní subsystémy. John Baldwin předělal kritické sekce, tak aby se u nich nemusela vypínat přerušení. Tím se staly kritické sekce velmi rychlým nástrojem na synchronizaci. Toho bylo hned využito v UMA (memory allocator) i na dalších místech. Výsledkem je poměrně výrazné zrychlení zamykání a tím celého kernelu. V řadě 7 jsou další optimalizace (reference counting), které dále zrychlují některé části kernelu (credentials atp.).

Z dalších zajímavých věcí je třeba zmínit změny v síťování. Byl kompletně nahrazen bridging implementací z NetBSD, isc-dhcp klient byl nahrazen dhcp z OpenBSD atd. FreeBSD 6.0R je také první verzí, kde je zcela bezpečné používat netisr dispatch, tj. že se packet zpracuje přímo v netisr threadu a není frontován pro pozdější zpracování. Dle benchmarku to má zajímavé (veskrze positivní) efekty na výkon. Hodně driverů také bylo přepsáno do MPSAFE podoby, kdy nepoužívají Giant mutex. Docela velkou změnou prošly wifi drivery, hlavně ty od atherosu (vývojář Sam Leffler pro firmu atheros přímo pracuje a je to znát), byl také integrován WPA.

V neposlední řadě bych zmínil integraci portsnap-u do base. Portsnap je sw pro aktualizaci portů, který je rychlejší, bezpečnější a celkově výrazně lepší než cvsup. FreeBSD má tedy poprvé přímo v base nástroj pro aktualizaci portů. K dispozici je mimochodem i testovací běh takzvaného docsnapu.

V celém kernelu bylo provedeno dalších aspoň milion šestset tisíc dvacet optimalizací (fd alokace, některé operace se stringy v libc, malé optimalizace ve vm atd.) a minimálně třicetdva tisíc osmdesát šest malých oprav všude možně. Vzhledem k tomu, že testovací období FreeBSD 6.0 bylo jedním z nejproduktiv­nějších v celé historii projektu (objevovaly se chyby z dob 3.x), tak se nebojím říct, že přestože je to x.0, tak není třeba mít strach tuto verzi nasadit.

Celkově se dá říci, že FreeBSD 6.0R bude velmi podařená verze, která navazuje na řadu 5 a dále ji vylepšuje. Finální verze bude doufejme vydána během několika málo týdnů, a tak neváhejte a nainstalujte si ji!

Anketa

Máte zkušenosti s FreeBSD?

Našli jste v článku chybu?

24. 10. 2005 13:03

KarelH (neregistrovaný)
Osobne bych dal 6.0RC1, idelane release az vyjde. A do Xkech bych dal neco mene rozezranyho nez KDE nebo Gnome, docela slusna stredni cesta (osobni nazor) je treba XFce4, ale jsou i minimalistejsi samozrejme.

24. 10. 2005 9:35

skada (neregistrovaný)
FreeBSD me vzdycky prijemne prekvapoval podporou hardwaru. Oproti tomu, co se vetsinou tvrdi na netu, melo FreeBSD vetsinou lepsi podporu HW nez linux.

V dobe linux kernelu 2.4.0 jsem pouzival notebook Compaq Presation 17XL370. Sitovka v nem byla takovej zvlastni bastl miniPCI combo - sitovka a modem v jednom (alespon jsem to tak pochopil). Na podporu v linuxu jsem cekal az do jadra 2.4.20. FreeBSD bez problemu od verze 4.0.

Pred par dny jsem resil problem s podporou RAID-1 na nForce4 chipsetu…



DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Měšec.cz: Komu musí od ledna zvýšit mzdu?

Komu musí od ledna zvýšit mzdu?

Vitalia.cz: Vychytané vály a válečky na vánoční cukroví

Vychytané vály a válečky na vánoční cukroví

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu

Měšec.cz: Stavební spoření: alternativa i pro seniory

Stavební spoření: alternativa i pro seniory

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?