Výsledky benchmarku na SSD - TPC-H

Podíváme-li se na srovnání SSD s tradičním pevným diskem v TPC-H části benchmarku, zjistíme že zvýšení výkonnosti je ještě menší než u read-write pgbench zátěže. Například při srovnání m-time (tj. času spotřebovaného pro vyhodnocení stejně naplánovaných dotazů, podrobněji je definováno v článku o výsledcích TPC-H benchmarku na standardním disku) vypadá na SSD s XFS situace takto

výkon XFS (m-time) se SSD diskem

zatímco na standardním rotačním pevném disku takto

výkon XFS (m-time) s tradičním diskem

tj. SSD disk je jen zhruba 1,5x rychlejší než tradiční rotační disk (což je výrazně horší výsledek než u read-only/read-write pgbenche kde byl nárůst 25x/13x). I pro SSD disk nicméně platí pravidlo že nejlepšího výkonu je dosahováno pro velké databázové bloky a velikost bloků souborového systému nehraje příliš zásadní roli.

Výsledky benchmarku na SSD - read-write pgbench

Takže se podívejme na další SSD výsledky - read-write pgbench. Stejně jako v případě read-only benchmarku platí že výsledky jednotlivých souborových systémů jsou téměř totožné, ale od

BTW v předchozím postu jsem zapomněl zmínit jednu důležitou věc - pokud máte zájem o data sesbíraná během benchmarku, rád vám je poskytnu. Má to jednu technickou chybičku - výsledky pro HDD mají 3.4GB (komprimované 1GB), výsledky pro SSD dokonce 38GB (10GB komprimované), což je příliš mnoho než abych to umístil na tenhle blog. Ale pokud pojedete na pgconf.eu do Amsterdamu, stačí si o data říct ...

Výsledky benchmarku na SSD - read-only pgbench

V předchozích několika postech jsem se zabýval výsledky benchmarku na tradičním SATA pevném disku, v několika následujících se budu věnovat výsledkům stejných testů na SSD disku. Konkrétně v tomto postu se jedná o read-only pgbench benchmarku. Výkon na SSD ve všech testech dle očekávání výrazně narostl, je ale zajímavé sledovat jak se nárůst výkonu mění v závislosti na typu benchmarku a jak se téměř dokonale stírají rozdíly mezi různými souborovými systémy.

Průměrný výsledek přes všechny souborové systémy vypadá takto:

průměrný read-only výkon na SSD

 Výsledky pro SSD jsou již dostupné zde, konkrétně srovnání read-only výkonu je zde.

Výsledky benchmarku / HDD + TPC-H

Minulý týden jsem stručně analyzoval read-only a read-write OLTP část benchmarku, nyní tedy tak přichází na řadu část benchmarku věnovaná DWH/DSS zátěži, založená na TPC-H benchmarku. Nebudu vás napínat, výsledky pro jednotlivé velikosti bloků jsou takovéto

m-score přes všechny souborové systémy

Podrobný popis definice a výpočtu m-score najdete v textu, pro tuto chvíli stačí vědět že vyšší hodnoty znamenají vyšší výkon. Z obrázku je jasně patrné že čím větší bloky (souborového systému i databáze), tím vyšší výkon při vyhodnocování dotazů.

Platí to ale i pro další činnosti obvyklé v DWH aplikacích, tj. load dat, vytváření indexů a cizích klíčů, sběr statistik apod.? A platí to pro všechny souborové systémy nebo existují výjimky?

Výsledky benchmarku / HDD + read-write pgbench

Minule jsem se zabýval výsledky read-only pgbench běhů, tentokrát je tak na řadě read-write zátěž. Průměrná hodnota tps přes všechny souborové systémy vypadá se zapnutými write bariérami takto

průměrný výkon s read-write zátěží a zapnutými write bariérami

Z obrázku je vidět že stejně jako v případě read-only zátěže platí že vyššího výkonu je dosahováno spíše s menšími databázovými bloky, a i tentokrát mezi 1kB a 32kB bloky cca 30%.

Výsledky benchmarku / HDD + read-only pgbench

V předcházejícím postu jsem se stručně zabýval výsledky benchmarku, zejména tomu jak interpretovat generované obrázky. Nyní se konečně dostávám k interpretaci první části výsledků, konkrétně read-only části OLTP zátěže (tj. výsledků read-only běhů pgbenche).

Srovnání TPS přes všechny testované souborové systémy (podrobné srovnání najdete zde), při vynechání XFS (jediný systém s blokem 512B, jen zbytečně komplikuje obrázek) vypadá situace takto

průměrná read-only tps přes všechny souborové systémy

Z obrázku je patrné že nejvyššího výkonu je dosahováno pro malé databázové bloky a velké bloky souborového systému. Závislost na velikosti bloku souborového systému ale není u všech souborových systémů stejně silná - u některých téměř neexistuje, u některých je relativně silná.

Velikost bloku filesystému vs. PostgreSQL

Nedávno jsem byl dotázán jak závisí výkon PostgreSQL na velikosti bloků filesystému a databáze, a zejména jak je to u SSD disků které mají interně 512kB bloky zatímco tradiční HDD mají sektory o velikosti 512B nebo 4096B.

Když podobná otázka padne v pgsql-peformance, standardní odpověď je "Použij 8kB, Luku!" s tím že 8kB je rozumný kompromis a volbou jiné hodnoty se nic moc nezíská. Ale skutečně je to tak? Platí to pro všechny souborové systémy? A platí to univerzálně pro různé typy zátěže? A mění na tom něco SSD disky? A jak je to vlastně s bloky souborového systému?

Zajímavé otázky na které bez pořádných dat nelze odpovědět ... prostě čas na benchmark!

1