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:

Výsledky pro SSD jsou již dostupné zde, konkrétně srovnání read-only výkonu je zde.
Srovnáme-li výkon s výkonem na běžném pevném disku

je zřejmé že výkon na SSD velmi výrazně vzrostl, a to zhruba z 270 cca 7000 tps, tj. jedná se o přibližně 25-násobný nárůst. Současně se výrazně zůžil rozsah velikosti bloků pro kterou je maximální výkon dosahován - zatímco u tradičního disku se jedná o bloky mezi 1kB a 4kB, u SDD je zcela zřejmé že 4kB bloky podávají zdaleka nejlepší výkon (minimálně o 40% vyšší než jiné velikosti bloků).
Druhým podstatným zjištěním je že stejně (špičkový výkon cca 7000 tps pro 4kB bloky) se chovají všechny souborové systémy. Například pro XFS a nilfs2 vypadají výsledky takto


Rozdíly jsou víceméně na úrovni statistické chyby, i když některé rozdily jsou přeci jen viditelnější. Např. výborný výkon nilfs2 pro 1kB bloky souborového systému a 4kB databázové bloky (i v tomto případě je ale výkon nilfs2 jen o 15% vyšší než průměr).
Moje teorie je že u SSD disku se snížil dopad I/O operací a čím dál větší roli hraje efektivita práce s načtenými bloky v paměti - shodou okolností velikost 4kB přesně odpovídá velikosti paměťové stránky na platformě x86. Zajímalo by mne zda by tato "optimálnost 4kB bloků" platila i pro systém s tradičním diskem a velkým objemem RAM (dostatečným pro načtení celé databáze) nebo obří cachí na řadiči.
Zajímavý je také pohled na průběh tps - na první pohled je zřejmé že zcela zmizel "postupný náběh" který u tradičního pevného disku mohl zabrat i 5 minut.

Zajímavé je také že zatímco pro 4kB databázové bloky je průběh velmi stabilní, tj. průběh je v podstatě konstantní, pro menší bloky je sice na začátku výkon téměř stejný ale postupně klesá.

Zajímavý je také pohled na latencí, která je v rámci warmupu (prvních 5 minut) výrazně nižší než během samotného testu (druhých 5 minut). Přitom jediné v čem se tyto dva samostatné běhy pgbenche liší je že warmup používá 10 klientů zatímco vlastní benchmark používá 20 klientů.

Tj. ačkoliv celkový výkon se příliš nemění, latence logicky vzrůstá. Rozdíl mezi 10 a 20 klienty je vidět i na průběhu některých běhů - například pro nejrychlejší běh (již zmíněný nilfs2 s 1kB bloky souborového systému a 4kB bloky databáze)

Zajímavý je také pohled na úspěšnost db cache, která závisí jen a pouze na velikosti bloku databáze, a rozsah úspěšnosti je cca 60 - 70%, tj. stejně jako v případě tradičního pevného disku.

Drobné rozdíly oproti tradičnímu disku jsou nejspíše způsobeny drobnou úpravou random_page_cost (snížení s cílem preferovat na SSD náhodné I/O operace).
Možnou příčinou vyrovnanosti všech souborových systémů by mohlo být dosažení 100% CPU, podívejme se tedy na průběh hodnot získaných z iostat, tj. utilizace disku (util%), iowait a celkové využití CPU (tj. 100% - idle).

Je zřejmé že CPU je sice téměř 100% využito (při 10 klientech cca 92%, při 20 klientech téměř 100%), ale naprostá většina času (cca 80%) připadá na iowait, tj. je strávena čekáním na IO operace. Utilizace disku po téměř celou dobu dosahuje 100%.
Troufám si tak tvrdit že i u SSD zůstává úzkým hrdlem právě I/O. Pro srovnání se podívejme na stejný graf u tradičního disku ze kterého je zřejmé že SSD zatěžuje CPU výrazně více (což je ale vzhledem k vyššímu výkonu pochopitelné)

Závěry
- Rozdíly mezi jednotlivými souborovými systémy jsou minimální.
- Závislost na velikosti bloku souborového systému je zcela zanedbatelná.
- Nejlepšího výkonu je jednoznačně dosahováno pro 4kB databázové bloky.
- Zatížení CPU je výrazně vyšší než u tradičního pevného disku, úzkým hrdlem je ale i nadále disk (nicméně pokud použijete pomalejší procesor nebo procesor s menším počtem jader, může to být jinak).




