Nadcházející Softwarové novinky

Preview betaverzí dvou úspěšných Open Source programů - FreeBSD a PostgreSQL, které tvoří dohromady výbornou platformu k provozování databází.

19.11.2007 06:00 | Radim Kolář | přečteno 11051×

FreeBSD 7.0

Pravděpodobně nejočekávanějším OSS produktem na poli operačních systémů je v současné době nová major verze operačního systému FreeBSD - 7.0. Novinek je v sedmičce opravdu mnoho, ale nejvýznamnější změny proběhly na poli diskového subsystému, škálovatelnosti a již tradičně v oblasti síťování.

GEOM, objektově orientovaný framework pro přístup k blokovým zařízením, byl rozšířen o několik nových tříd. Nejvíce zájmu vzbudily třídy:

  1. gvirstor - virtualizace diskového prostoru, vytvořte si velký virtuální disk a fyzické disky přidávejte postupně, jak se bude virtuální disk zaplňovat
  2. gjournal - třída pro žurnálování. S jejím využitím lze přidat žurnálování do filesystému UFS2 a pak kvůli zvýšení výkonu přepnout UFS filesystém z režimu soft updates do režimu async. Gjournal se umí vypořádat i s levnými disky neflushujícími správně write cache, pokud je velikost gjournalu větší než cache disku/řadiče.
  3. gmultipath - přístup k datům prostřednictvím několika různých přístupových cest. Používá se pro failover, pokud preferovaná cesta selže, použijeme záložní.

Krom nových GEOM tříd přibyl také iSCSI initiator a serverová část iSCSI se nachází v portech.

Bezesporu největší novinkou na poli storage je integrace filesystému ZFS z projektu Open Solaris.

ZFS

O ZFS bylo a ještě bude napsáno mnoho. ZFS (wikipedia) je revoluce ve světě filesystémů a protože se jedná o 128-mi bitový filesystém, tak se mu často říká The last word in filesystems, čímž se mírně naznačuje, že s příchodem ZFS ztrácí jakýkoliv další vývoj dalších filesystémů smysl. ZFS ale opravdu revoluční je. Poprvé v historii byl integrován RAID, filesystém a volume manager do jednoho celku.

Výhody ZFS oproti stávajícím řešením bych shrnul to několika hlavních bodů:

  1. Technologie RAIDZ/mirror poskytuje ochranu shodnou s RAID 1,5,6
  2. Data jsou navíc stripována mezi všechny dostupné disky. Efektivně to přidává do seznamu výše úrovně RAID 0 a 1+0.
  3. Metadata lze zapisovat až na 3 různá místa současně. Tato ochrana je navíc k ochraně dat poskytované RAID polem.
  4. ZFS netrpí problémem známým jako RAID write hole. Zápis jednotlivých stripe je transakčně jištěn.
  5. Vždy zapisuje celý stripe o proměnné velikosti 512-128KB. Není potřeba postupovat metodou přečíst blok, přepočítat paritu, zapsat.
  6. Filesystém je udržován na disku konzistentní, fsck není potřeba a není potřeba rebuildovat RAID pole pokud dojde k výpadku.
  7. Při uživatelem vynucené kontrole dat se kontroluje jen obsazený prostor.
  8. Každý blok má svůj 256bitový kontrolní součet. Možnost volby z několika algoritmů.
  9. Self healing. Pokud ZFS zjistí chybu integrity dat, opraví nejen data před jejich vrácením aplikaci, ale i realokuje a opraví všechny kopie dat poškozených dat.
  10. Při zápisu se používá metoda Copy On Write. Toto umožňuje konverzi náhodných zápisů na sekvenční, které se pak zapisují prakticky maximálmí možnou diskovou rychlostí.
  11. Volné místo je možné sdílet mezi filesystémy. Filesystémy mohou mít dynamickou velikost a je možné rezervovat volný prostor pro určitý filesystém.

O technologii ZFS by se dalo psát ještě dlouho. Vážným zájemcům doporučuji navštívit ZFS learning center, případně se mrknout na nějaká ta videa 1, 2, 3, 4.

Síťování

Poměrně zásadní změnou je využití technologií TSO (TCP/IP segmentation offload) a LRO (Large Receive Offload) se kterými se lze setkat u 1 Gbit a 10Gbit síťových karet. TSO podporují drivery pro Intel, Broadcom, NVidia, Realtek. LRO podporuje driver pro Myricom Myri10GE.

Druhou významnou změnou je automatické nastavování velikosti TCP send a receive bufferů, dříve se používal default buffer o velikosti 32K, který nyní může automaticky narůstat až do 256 KB. Tato změna teoreticky zvětšuje přenosovou rychlost na sítích s větším RTT (200 ms) až desetinásobně. Jedná se opravdu o významou změnu, moje testování na trase USA - Německo zjistilo nárůst přenosové rychlosti z 1 MB/s na 6 MB/s.

Škálovatelnost

Další významnou změnou je podstatné zlepšení škálovatelnosti na 4 a více procesorových jádrech. FreeBSD řady 6 se dalo použít na nejlépe na dvou, maximálně na čtyřech procesorových jádrech. Použití 6 a více přineslo při typické zátěži zpomalení. U FreeBSD 7 je tento nedostatek již odstraněn a v níže uvedené prezentaci uvidíte lineární škálovatelost FreeBSD na 8 jádrech a další testy škálovatelnosti databází PostgreSQL a MySQL a operačních systémů FreeBSD-7 a Linux 2.6. FreeBSD 7 se schedulerem ULE (bude default v 7.1) v tomto sysbench testu bezproblémů porazilo ostatní soupeře. Absolutně nejlepšího score bylo dosaženo na 8-core AMD Opteron systému s databází PostgreSQL 8.2, což je platforma s výborným poměrem výkon/cena kterou doporučuji pro provozování lower end databázových serverů i já.

Závěr

Pokud jste dočetli až jsem, rozhodně nevynechejte Krisovu prezentaci FreeBSD 7.0, stáhněte si betaverzi a začněte testovat.

PostgreSQL 8.3

Jako druhý program jsem vybral PostgreSQL, jehož nadcházející verze se nachází podobně jako FreeBSD ve stádiu beta testování. Podobně jako FreeBSD 7.0 je i PostgreSQL 8.3 bomba.

Názory na největší hit verze 8.3 se poněkud rozcházejí, změn je tentokrát opravdu dost. Někoho nejvíce zaujme podpora XML, jiný ocení nové datatypy uuid a enum, lidi portující aplikace z Oracle dostanou dlouho očekávané writeable cursory a podporu pro ORDER BY ... NULLS FIRST/LAST, na programu dne je i vylepšené autovacuum, které je nyní poprvné aktivováno ve standardní instalaci a umí čistit více tabulek současně, potěší všechny uživatele velkých tabulek.

OLTP je rychlejší

Poměrně významné změny nastaly v oblasti OLTP. Nejvýznamější je bezesporu podpora asynchroního commitu, po kterém se neprovádí na WAL logu fsync, což vede k významnému nárůstu výkonu, protože se nemusí čekat na disk. Při havárii nedochází k poškození dat, ale k možné ztrátě několika posledních potvrzených transakcí. Další významnou změnou je paralelizace operací během provádění CHECKPOINTu, aby se tím snížila doba kdy musí uživatelé čekat na jeho dokončení. Rychlejším CHECKPOINTům také napomáhá inteligentnější bgwriter, který mění rychlost zápisu s ohledem na aktuální zátěž. Ve starších verzích ve většině případů totiž zapisoval data příliš pomalu. Když už jsme u těch background procesů, nově přibyl process vyhrazený k zápisu WAL logů (ala Oracle).

Pokud se při aktualizaci záznamu nemění hodnota nad kterou je vytvořen index, PostgreSQL se pokusí umístit novou verzi řádky do stejného bloku, aby nebylo potřeba aktualizovat indexy. Pro optimální funkčnost je potřeba v blocích rezervovat pro tento účel trochu (minimálně 15 procent) místa pomocí direktivy FILLFACTOR. Díky všem těmto změnám je OLTP workload rychlejší až o 20 procent. Zájemcům o ladění výkonu bych také doporučil shlédnutí této prezentace.

Konečně fulltext

Docela příjemnou změnou je přesunutí fulltextového vyhledávání z contrib modulu tsearch2 do databázového serveru. Výhody oproti tsearch2 contrib modulu jsou jednoznačné: lepší dokumentace, snadnější konfigurace, odstranění několika dlouhodobých design nedostatků a v neposlední řadě taky pár významných bugfixů. Fulltextové vyhledávání je poměrně na úrovni, umí podporovat různé jazyky a znakové sady, kontrolovat překlepy podle slovníku, stop slova, synonyma, hodnotit kvalitu výsledků a stemming, Fulltextové vyhledávání potěší snad všechny autory web aplikací neboť je přibližně stonásobně rychlejší než operátor ILIKE, který bývá často používán pro tento účel.

PostgreSQL vs MySQL

PostgreSQL bývá velmi často rychlostně srovnáván s MySQL. V minulosti bylo totiž MySQL zejména díky chybějící funkcionalitě výrazně rychlejší. To ale už dnes neplatí, testy PostgreSQL 8.2 oproti MySQL 5.1 používané při ladění škálovatelnosti FreeBSD ukázaly, že PostgreSQL je v průměru o 20 procent rychlejší a nemá problémy se škálovatelností při více uživatelích. Podrobnější testování ukázalo, že u MySQL nastává pokles výkonu pokud počet uživatelů převýší počet procesorových jader.

PostgreSQL si získává v posledních letech stále větší oblibu v podnikovém prostředí a značnou část jeho uživatelů tvoří přeběhlíci z Oraclu. Trochu se o to zasloužila i firma Sun, která nejen integrovala PostgreSQL do svého operačního systému Solaris 10, ale prodává i podporu. Současná cena roční cena základní podpory od Sunu je $1,596, pro srovnání podpora od EnterpriseDB stojí $995/socket.

Seznam všech změn je k dispozici na http://www.postgresql.org/docs/8.3/static/release-8-3.html.

Budoucnost je slibná

Testování dvou výše recenzovaných produktů ukázalo, že kombinace FreeBSD 7.0, PostgreSQL 8.3, ZFS a AMD Opteron je vynikající platforma k provozování databáze a výrazně překonává současný mainstream Linux 2.6 , MySQL 5.0, ext3 a Intel Xenon.

K dokonalosti nám chybí pouze podpora superpages (paměťové stránky větší než 4KB na x86 platfomě), jejiž použití v aplikacích s velkou spotřebou paměti, typicky databáze, přináší nárůst výkonu v desítkách procent. Ty se do FreeBSD-7.0 nedostaly a nachází se ještě ve stádiu vývoje.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=1515