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.

Srovnáme-li výkon s výkonem na běžném pevném disku

průměrný read-only výkon na tradiční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

read-only výkon XFS na SSD disku

read-only výkon nilfs2 na SSD disku

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.

průběh tps na XFS během read-only testu

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á.

průběh tps na XFS během read-only testu s 2kB bloky

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ů.

latence během read-only testu na ext4/ordered

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)

průběh tps během read-only testu na nilfs2

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.

úspěšnost databázové cache na SSD 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).

vytížení CPU a využití disku během read-only testu na SSD disku

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é)

vytížení CPU a využití disku během read-only testu na tradičním disku

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).

Komentáře

K tomuto článku zatím žádné komentáře neexistují (nebo čekají na schválení).

Nový komentář

Všechny komentáře podléhají schválení - mezi odesláním komentáře a jeho zobrazením na této stránce tedy může být prodleva. Vyplníte-li e-mailovou adresu, budete o schválení či neschválení komentáře informováni.

V titulku ani v textu nejsou povoleny HTML tagy - budou automaticky odstraněny. Odstavec ukončíte prázdným řádkem.

(nepovinné)