Hlavní navigace

Výkon databáze na různých souborových systémech

Petr Krčmář

Který souborový systém mám použít pro produkční server, na kterém poběží PostgreSQL? Tuto otázku si klade řada správců serverů, ale ptají se na to i zákazníci nebo začátečníci rozhlížející se po světě serverů. Je v tom vůbec nějaký rozdíl? Vyplatí se řešit výhody různých systémů či jejich parametrů?

Běžná otázka zákazníků při nasazování aplikací je, jaký souborový systém mají nasadit na provoz databáze. Obvyklou odpovědí je něco jako: „my máme benchmarky z roku 2003 a podle nich…“ Takový přístup naprosto ignoruje vývoj, který je ohromně rychlý. V roce 2003 tu z pohledu souborových systémů byli ještě dinosauři, začal svou přednášku na LinuxDays Tomáš Vondra. Dlouhodobě se zabývá návrhem a správou databází a snaží se změřit dopady různých souborových systémů, které se velmi rychle vyvíjí a v posledních letech nabízí mnoho různých novinek. Stejně tak podle Vondry velkou revoluci znamenala SSD úložiště, která mají úplně jiné parametry než rotační disky a kdo dnes nenasazuje flashové disky, dělá obrovskou chybu.

Čtěte: SSD na serveru: výhody, zkušenosti a mýty

Moderní souborové systémy jsou vyzrálé, mají moderní funkce a jsou schopné využít výhod nových úložišť. Mezi běžné zástupce patří Ext3/4 nebo XFS, které mají tradiční design a jsou velmi spolehlivé. Jejich nevýhodou je, že je třeba nasazovat další komponenty na provoz na více fyzických discích, LVM nebo správu snapshotů. To je tradiční přístup, ale zvyšuje komplexitu řešení a propojení samostatných komponent neumožňuje provádět některé věci jednoduše.

Tomáš Vondra, LinuxDays 2015

V posledních deseti letech se prosazují nové souborové systémy jako ZFS nebo Btrfs, které mají výrazně odlišný návrh a už dnes jsou vlastně prověřené časem a provozem, protože dávno nejde o žhavou novinku. Integrují různé vrstvy, čímž zjednodušují správu. Navíc jsou připravené na běžný hardware, na kterém jsou chyby běžné. Součástí linuxového jádra je Btrfs, které podle Vondry ale zatím není připraveno na produkci, i když ho některé distribuce už používají jako výchozí. Proti tomu ZFS je prověřené a velmi stabilní, ale je potřeba ho doinstalovat jako samostatný modul distribuovaný pod licencí CDDL, která je nekompatibilní s GNU GPL.

Souborové systémy nabízejí celou řadu optimalizačních voleb, které mají větší či menší dopad na výkon na nich nainstalovaných databází. U Btrfs je možné například vypnout podporu copy-on-write (CoW), což zvýší výkon, ale přijdete například o kontrolu integrity pomocí kontrolních součtů. Dále je možné nastavovat volby určené speciálně pro SSD. Bohužel v dokumentaci se nepíše, jaké volby to jsou. Kromě toho umí Btrfs spekulativní kompresi, která se zapíná jen na datech, na kterých to má smysl.

U ZFS je možné měnit velikost stránky, ovlivnit práci se ZIL nebo natavit omezení velikosti vlastní ARC cache. Pozor na nastavování cache, PostgreSQL výrazně závisí na cache implementované v souborovém systému. Velikost paměťové stránky může také ovlivnit výsledek, důležité je vědět, že PostgreSQL interně používá 8KB stránky, které je možné nastavit i na souborovém systému.

Tomáš Vondra pak představil vlastní benchmarky, které prováděl na počítači se čtyřjádrovým Intel i5, 8 GB RAM, SSD Intel, distribucí Gentoo a PostgreSQL 9.4. Při testech používal nástroj pgbench, který se snaží udělat co nejvíce různě velkých transakcí. Tento provoz se dá přirovnat k jednoduché webové aplikaci, kdy si uživatelé zobrazují jednotlivé články. Je možné také volit objem dat: od malého (200 MB), přes střední (50 % RAM) až po velký (200 % RAM). U malých velikostí prakticky nehraje roli IOPS, protože je vše v cache. Je možné provést různé mixy testů, při kterých si otestujete čtení, zápis a různé varianty zátěže. Zatím mám otestováno asi 40 kombinací nastavení a souborových systémů a každý benchmark běžel přibližně čtyři dny. Veškerá data jsou k dispozici na gitovém repozitáři.

Při read-only testech na malých datech se stírá rozdíl mezi souborovým systémem jednoduše proto, že se s disky vůbec nepracuje. Pokud máte malou databázi a jen z ní čtete, vůbec vás souborové systémy nemusí zajímat.

U velkých dat se k diskům už začne přistupovat a objeví jisté rozdíly. Například ZFS ve výchozím stavu vůbec neškáluje a má obrovské problémy. Stačí ale nastavit velikost bloku na 8kB a situace se výrazně změní. Btrfs je na tom velmi podobně jako takto nastavené ZFS a vypnutím CoW dojde k malému zlepšení. Celkově si ale souborové systémy při čtení vedou velmi podobně.

Při zápisech už jsou rozdíly výrazně větší, protože databáze musí čekat na to, až souborový systém vrátí informaci o tom, že data byla bezpečně zapsána. Úplně nejlépe v těchto testech dopadají Ext4 a XFS, pokud je dobře nastavíte. Tomáš Vondra udělal na vyžádání také testy s ReiserFS, který dopadl mírně hůře. Ukazuje to, že takový ten hype kolem tohoto souborového systému byl zbytečný.

Při čtení i zápisu velkých dat jsou rozdíly už obrovské a například ZFS už začíná zaostávat. I když jsem se snažil ZFS vyladit, stejně jsem nedostal ani polovinu výkonu proti Ext. Je to daň za vlastnosti tohoto souborového systému, který si dává záležet na konzistenci dat. Vondra sám říká, že to pro něj bylo zklamání.

Tyto testy ukazují jen na datovou propustnost souborového systému, ale nezohledňují variabilitu jednotlivých transakcí. Máte sice velký výkon, ale velmi záleží na jednotlivých transakcích: některá trvá milisekundu, jiná deset. Vy ale chcete pokud možno rovnoměrné rozložení. To vám říká, že databáze každou sekundu vyřídí konstantní množství transakcí. S tím má typicky problém copy on write souborový systém Btrfs, kterému pravidelně padá výkon a databáze čeká. Při vypnutí CoW se situace zlepší, proti tomu ZFS podává už ve výchozím stavu lepší výsledky. Nejlépe podle očekávání opět dopadly jednoduché souborové systémy Ext4 a XFS.

Souborové systémy Ext4 a XFS podávají prakticky stejné výkony, liší se jen minimálně a dá se to pravděpodobně ještě změnit ještě pomocí konfigurace. Ext4 nabízí vyšší propustnost, ale má vyšší rozptyl latencí; XFS má síce mírně nižší propustnost, ale podává stabilní výkony. Zásadní vliv mají „write barriers“, ale při jejich vypnutí je třeba mít dobré disky a RAID řadiče. Naopak menší vliv má TRIM, ovšem u něj zase záleží na typu disku a především jeho zaplnění. Pokud benchmark disk nezaplní a výrobce SSD nechává ještě kapacitní rezervu, dokáže se řadič vyrovnat i s vypnutým TRIM.

Přímé porovnání Btrfs a ZFS je zase závislé na CoW technikách, které znamenají přibližně poloviční výkon. Z hlediska výkonu je stále lepší kombinovat LVM a jednoduchý souborový systém jako Ext4 nebo XFS. ZFS je sice v linuxovém jádře trochu vetřelcem, ale je podle Vondry značně vyzrálejší než Btrfs. Všechny problémy, které jsem při testech měl, jsem měl s Btrfs. Má značně nestabilní a nekonzistentní chování, které nechci vidět na produkčním serveru.

Odkazy

Našli jste v článku chybu?

19. 10. 2015 3:35

Databáze zajišťuje datovou integritu (jako cizí klíče, unique, etc). Jenže pak se musí toto všechno reálně zapamatovat.

Představte si klasickou transakci. Když dáte commit, tak tak nějak očekáváte, že tam ty data opravdu budou. Ne, že zmizí, protože někdo vypnul počítač dřív, než db engine stihl zapsat data na disk, nebo než se provedl sync.

Samozřejmě, vždycky je tam nějaká důvěra, db věří, že když skončí sync, tak že data jsou zapsaná. sync věří, že když mu FS řekne ok, tak že jsou zapsaná. …

19. 10. 2015 9:11

muf (neregistrovaný)

Port pro Windows jsem potkal taky, takže to není novinka. Fungovalo to snad jak na NT4.0, tak NT 3.51 a raw device byl pochopitelně problém.
Woknaři byli navíc zděšeni, že k tomu není klikátko. Např. onconfig běžel v textovém režimu "DOS" okna.


120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

Root.cz: Nová třída SD karet A1 s vysokým výkonem

Nová třída SD karet A1 s vysokým výkonem

DigiZone.cz: SES zajistí HD pro M7 Group

SES zajistí HD pro M7 Group

Vitalia.cz: 7 originálních adventních kalendářů pro mlsné

7 originálních adventních kalendářů pro mlsné

DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

Vitalia.cz: Jak vybrat ořechy do cukroví a kde mají levné

Jak vybrat ořechy do cukroví a kde mají levné

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

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

DigiZone.cz: Ohrozí Freedom TV přechodové sítě?

Ohrozí Freedom TV přechodové sítě?

Vitalia.cz: Test na HIV je zdarma i za pět set

Test na HIV je zdarma i za pět set

Podnikatel.cz: E-Ježíšek si zařádí: nákupy od 2 do 5 tisíc

E-Ježíšek si zařádí: nákupy od 2 do 5 tisíc

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

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

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

Co všechno ovlivňuje ženskou plodnost?

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

Horní cesty dýchací. Zkuste fytofarmaka

Měšec.cz: Za palivo zaplatíte mobilem (TEST)

Za palivo zaplatíte mobilem (TEST)

Vitalia.cz: Nejlepší obranou při nachlazení je útok

Nejlepší obranou při nachlazení je útok

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

Vitalia.cz: To nejhorší při horečce u dětí: Febrilní křeče

To nejhorší při horečce u dětí: Febrilní křeče

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

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

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET