Benchmark aplikace Sysbench OLTP běží na databázi MySQL s úložným enginem InnoDB. Úkolem úložného enginu je spravovat rozhraní mezi databází na disku a aplikacemi, které čtou a zapisují data do a z úložného enginu. Úložný engine následně spravuje vlákna a protokoly I/O a uchovává mezipaměť v paměti, aby se minimalizoval přístup na disk. Následující tabulka poskytuje zjednodušený přehled o enginu.
Protože engine InnoDB uchovává v paměti mezipaměť nazývanou buffer pool, bude výkon přímo ovlivněn poměrem velikosti pracovní sady k velikosti buffer poolu. Jinými slovy, pokud je buffer pool dostatečně velký pro pojmutí pracovní sady nebo je pracovní sada dostatečně malá pro to, aby se vešla do buffer poolu, většina operací nebude nikdy vázána na I/O. Pokud je však databáze příliš velká na to, aby se vešla do paměti, pak bude výkon I/O diktovat doby odezvy transakcí a propustnost. Charakterizujeme výkon disku v této situaci, kdy se databáze nevejde do paměti, což vede ke zvýšenému I/O provozu z úložného enginu InnoDB.
Více vláken (počet závisí na konfiguraci databáze pro vysoce výkonné aplikace a pohybuje se od 32 do 128) náhodně čtou data ze záložního úložiště s velikostí bloku 16 kB. Tato čtení souvisí s databázovými dotazy, které vyžadují data ze záložního úložiště. Během zpracování čtení se automaticky ukládají do mezipaměti vyrovnávací paměti. Jakmile se vyrovnávací paměť zaplní, InnoDB používá politiku LRU (Least Recently Used) k vyřazení starších stránek, aby uvolnila místo pro novější data.
Zápisy do databáze jsou nejprve směrovány do transakčního protokolu a do fondu vyrovnávacích pamětí. Transakční protokol je sekvenčně zapisovaná kruhová vyrovnávací paměť, která se aktualizuje pro každou transakci zápisu. V závislosti na konfiguraci MySQL může tato aktualizace vést k okamžitému zápisu na disk, nebo může dočasně přetrvávat v paměti RAM jako vyrovnávací paměť, kterou souborový systém nakonec uloží na disk. Velikost této vyrovnávací paměti protokolu se liší, ale obvykle se pohybuje kolem 256 MB. Doporučená nastavení pro shodu s ACID vyžadují, aby se zápisy protokolu dostaly na disk při každém potvrzení změn v databázi. Tyto zápisy mají délku 4 kB.
Záznam provádí pouze „fyziologické“ zápisy, kde se zapisuje rozdíl mezi předchozími a novými daty. U původních dat InnoDB zapisuje do vyrovnávací paměti RAM, která musí být také asynchronně vyprázdněna. Proces zápisu dat zpět do souborového systému je konfigurovatelný a probíhá na pozadí. Zápisy mají také velikost 16K. Ve skutečnosti se jedná o dvojité zápisy, kdy engine nejprve zapíše data do mezilehlého umístění zvaného vyrovnávací paměť pro dvojitý zápis. Engine poté tato data zkopíruje do jejich konečného umístění v souborovém systému. To je nezbytné, aby se předešlo problému s „roztrženou stránkou“, kdy je 16KB stránka databáze částečně zapsána na disk v důsledku výpadku napájení nebo jiné katastrofické události.
Počátky benchmarku Sysbench
Testovací prostředí Sysbench jsme do naší laboratoře přinesli po několika rozhovorech se společností Micron o tom, jak simulují reálná aplikační prostředí MySQL pro testování a měření SSD. Vyvinuli testovací metodologii na bázi Sysbench poté, co zjistili, že syntetické benchmarky pro úložiště jen zřídka poskytují úplný přehled o tom, jak se disk bude chovat při zatížení konkrétní aplikace. Test Sysbench umožňuje společnosti Micron simulovat prostředí, které nejvěrněji reprezentuje standardní zatížení databáze MySQL, které je běžné v aplikacích, jako jsou Facebook, Craigslist a Booking.com.
Obzvláště úzce jsme spolupracovali s Moussou Ba, který byl spoluautorem tohoto článku. Moussa je softwarový inženýr ve vývojovém týmu PCIe společnosti Micron, kde jeho práce zahrnuje optimalizaci aplikačního a systémového softwaru pro vysoce výkonná I/O zařízení.
Benchmark OLTP v Sysbench
Sysbench je benchmark výkonu systému, který zahrnuje testovací profil pro OnLine Transaction Processing (OLTP). Test OLTP není aproximací testu OLTP, ale spíše skutečným benchmarkem založeným na databázi, který provádí transakční dotazy k instanci MySQL v prostředí CentOS.
Prvním krokem při nastavení benchmarku je vytvoření samotné databáze, což se provádí zadáním počtu tabulek v databázi a také počtu řádků v každé tabulce. V našem testu jsme definovali 100 tabulek s 10 miliony řádků, což vedlo k databázi s 1 miliardou záznamů. Tato databáze měla velikost 260 GB.
Sysbench má dva provozní režimy: výchozí režim, který čte a zapisuje do databáze, a režim pouze pro čtení. Výchozí režim R/W provede následující typy dotazů: 5 dotazů SELECT, 2 dotazy UPDATE, 1 dotaz DELETE a 1 dotaz INSERT. Z pohledu počtu I/O je pozorovaný poměr čtení/zápisu přibližně 75 % čtení a 25 % zápisů.
Testovací prostředí Sysbench
Úložná řešení jsou testována pomocí benchmarku Sysbench OLTP v testovací laboratoři StorageReview Enterprise s využitím samostatných serverů. V současné době používáme standardní servery PowerEdge R730 od společnosti Dell, které prokazují realistický výkon a solidní poměr cena/výkon. Pro připojení našeho serveru R730 k různým úložným produktům měníme pouze úložný adaptér nebo síťové rozhraní. PowerEdge R730 se osvědčil jako skvělá kompatibilita se zařízeními třetích stran, což z něj činí vynikající platformu pro toto rozmanité testovací prostředí. R730 také využívá výkonnou architekturu třídy Haswell od společnosti Intel, která nám dává výpočetní výkon k řádnému využití široké škály úložných nabídek a maximalizaci jejich výkonnostního potenciálu.
Benchmarkové prostředí Sysbench první generace
Lenovo ThinkServer RD630 – testovací platforma SATA/SAS/PCIe
- Nejprodávanější model 2594-ABU
- Dva procesory Intel E5-2650 (2.0 GHz, 8 jader, 20 MB mezipaměti)
- 128 GB RAM (8 GB x 16 DDR3, 64 GB na procesor)
- 100GB mikronů SSD disk RealSSD P400e (přes LSI 9207-8i) Bootovací disk
- 960GB Micron M500 (přes 9207-8i) předpřipravené úložiště databáze
- CentOS 6.3 64bitový
- Percona XtraDB 5.5.30-rel30.1
- Databázové tabulky: 100
- Velikost databáze: 10 000 000
- Vlákna databáze: 32
- Vyrovnávací paměť RAM: 24 GB
Benchmarkové prostředí Sysbench druhé generace
Dell PowerEdge R730 – testovací platforma SATA/SAS/PCIe
- Dva procesory Intel E5-2690 v3 (2.6 GHz, 12 jader, 30 MB mezipaměti)
- 256 GB RAM (16 GB x 16 DDR4, 128 GB na procesor)
- 100GB bootovací SSD, 480GB databázový SSD
- 2 x adaptér Mellanox ConnectX-3 InfiniBand
- 2 x Dvouportový adaptér Emulex 16GB FC HBA
- 2 x Dvouportová síťová karta Emulex 10GbE
- CentOS 6.6 64bitový
- Percona XtraDB 5.5.30-rel30.1
- Databázové tabulky: 100
- Velikost databáze: 10 000 000
- Vlákna databáze: 32
- Vyrovnávací paměť RAM: 24 GB
Virtualizovaný 4uzlový cluster Dell PowerEdge R730 v Sysbench
- Osm procesorů Intel E5-2690 v3 pro 249 GHz v clusteru (dva na uzel, 2.6 GHz, 12 jader, 30 MB mezipaměti)
- 1 TB RAM (256 GB na uzel, 16 GB x 16 DDR4, 128 GB na procesor)
- Bootování z SD karty (Lexar 16GB)
- 4 x adaptér Mellanox ConnectX-3 InfiniBand (vSwitch pro vMotion a síť virtuálních strojů)
- 4 x Dvouportový adaptér Emulex 16GB FC HBA
- 4 x Dvouportová síťová karta Emulex 10GbE
- VMware ESXi vSphere 6.0 / Enterprise Plus 8 procesory
Hlavním cílem této platformy je zdůraznit, jak si podnikové úložiště vede v reálném podnikovém prostředí a s danou pracovní zátěží, namísto spoléhání se na syntetické nebo pseudosyntetické pracovní zátěže. Syntetické generátory pracovní zátěže skvěle ukazují, jak dobře si úložná zařízení vedou s kontinuálním syntetickým vzorem I/O, ale nezohledňují žádné další vnější proměnné, které by osvětlovaly, jak zařízení skutečně fungují v produkčním prostředí. Syntetické generátory pracovní zátěže mají tu výhodu, že opakovaně ukazují čistý vzorec I/O, ale nikdy nereplikují skutečné produkční prostředí. Zavedení výkonu aplikací nad úložné produkty začíná ukazovat, jak dobře úložiště interaguje s ovladači, lokálním operačním systémem, testovanou aplikací, síťovým zásobníkem, síťovým přepínáním a externími servery. To jsou proměnné, které syntetický generátor pracovní zátěže jednoduše nemůže zohlednit, a jsou také řádově náročnější na zdroje a infrastrukturu, pokud jde o vybavení potřebné k provedení tohoto konkrétního benchmarku.
Celkové výsledky výkonu Sysbench
Pomocí benchmarku Sysbench OLTP testujeme širokou škálu úložných řešení, která splňují minimální požadavky testovacího prostředí. Aby bylo úložné zařízení kvalifikováno pro testování, musí mít použitelnou kapacitu přesahující 260 GB a musí být uzpůsobeno pro provoz v náročných podnikových podmínkách. Lokálně připojená úložná zařízení, jako jsou SAS, SATA a PCIe SSD, jsou testována na serveru typu hole-metal s jednou instancí Sysbench. Novější platformy SAN a hyperkonvergované platformy provozují současně 4, 8, 12 nebo 16 virtuálních počítačů, aby se ukázalo, jak dobře na každé z nich funguje více úloh současně. Tato testovací metodologie pomáhá demystifikovat srovnání výkonu mezi novějšími hyperkonvergovanými systémy a tradičními úložnými poli SAN.
Výsledky výkonu hyperkonvergovaného / virtualizovaného SAN Sysbench (agregace 16 virtuálních strojů)
| Přístroj | 32vláknový agregát TPS | Průměrná doba odezvy (ms) | Latence 99. percentilu (ms) |
|---|---|---|---|
| X-IO ISE 860 (4) Dell R730, X-IO ISE 860 AFA (2) 10TB svazky |
6625 | 80 | 418 |
Výsledky výkonu hyperkonvergovaného / virtualizovaného SAN Sysbench (agregace 12 virtuálních strojů)
| Přístroj | 32vláknový agregát TPS | Průměrná doba odezvy (ms) | Latence 99. percentilu (ms) |
|---|---|---|---|
| X-IO ISE 860 (4) Dell R730, X-IO ISE 860 AFA (2) 10TB svazky |
7160 | 54 | 177 |
Výsledky výkonu hyperkonvergovaného / virtualizovaného SAN Sysbench (agregace 8 virtuálních strojů)
| Přístroj | 32vláknový agregát TPS | Průměrná doba odezvy (ms) | Latence 99. percentilu (ms) |
|---|---|---|---|
| X-IO ISE 860 (4) Dell R730, X-IO ISE 860 AFA (2) 10TB svazky |
6568 | 39 | 83 |
| VMware VSAN (ESXi 6.0) (4) Dell R730xd, 80 1.2TB pevných disků, 16 800GB SSD disků |
4259 | 60 | 131 |
Výsledky výkonu hyperkonvergovaného / virtualizovaného SAN Sysbench (agregace 4 virtuálních strojů)
| Přístroj | 32vláknový agregát TPS | Průměrná doba odezvy (ms) | Latence 99. percentilu (ms) | Maximální latence (ms) |
|---|---|---|---|---|
| DotHill Ultra48 Hybrid (4) Dell R730, hybridní DotHill Ultra48 (2) 14diskové RAID1 pooly, 40 1.8TB HDD, 8 400GB SSD disků |
4645 | 28 | 51 | 676 |
| X-IO ISE 860 (4) Dell R730, X-IO ISE 860 AFA (2) 10TB svazky |
4424 | 29 | 57 | 983 |
| VMware VSAN (ESXi 6.0) (4) Dell R730xd, 80 1.2TB pevných disků, 16 800GB SSD disků |
2830 | 45 | 94 | 480 |
| Nutanix NX-8150 (ESXi 6.0) (4) NX-8150, 80 1TB HDD, 16 800GB SSD disků Svazek databáze RAID0 x 4 vDisk |
2390 | 54 | 173 | 4784 |
| Nutanix NX-8150 (ESXi 6.0) (4) NX-8150, 80 1TB HDD, 16 800GB SSD disků Výchozí nasazení databáze |
1422 | 90 | 216 | 5508 |
Výsledky výkonu akcelerátoru aplikací PCIe / Multi-SSD/HDD RAID v Sysbenchu
| Přístroj | Průměrný TPS při 32 vláknech | Průměrná doba odezvy | Latence 99. percentilu |
|---|---|---|---|
| Huawei ES3000 2.4TB 1x MLC PCIe SSD |
2734.69 | 11.7 | 19.84 |
| Huawei ES3000 1.2TB 1x MLC PCIe SSD |
2615.12 | 12.23 | 21.80 |
| Fusion ioDrive2 Duo 2.4 TB 1x MLC PCIe SSD |
2521.06 | 12.69 | 23.92 |
| Micron P320h 700GB 1x SSD disk SLC PCIe |
2443.56 | 13.09 | 22.45 |
| Micron P420m 1.4TB 1x MLC PCIe SSD |
2361.29 | 13.55 | 25.84 |
| Fusion ioDrive2 1.2 TB 1x MLC PCIe SSD |
2354.06 | 13.59 | 29.35 |
| Virident FlashMAX II 2.2 TB 1x MLC PCIe SSD |
2278.11 | 14.04 | 26.04 |
| LSI Nytro WarpDrive 800GB 1x MLC PCIe SSD |
1977.67 | 16.18 | 39.94 |
| LSI Nytro WarpDrive 400GB 1x MLC PCIe SSD |
1903.14 | 16.81 | 39.30 |
Výsledky pro jednotlivé SAS / SATA SSD disky
| Přístroj | Průměrný TPS při 32 vláknech | Průměrná doba odezvy | Latence 99. percentilu |
|---|---|---|---|
| Toshiba HK3R2 960GB 1x MLC SATA |
1673.23 | 19.12 | 49.65 |
| SanDisk CloudSpeed Eco 960GB 1x cMLC SATA |
1556.99 | 20.55 | 49.05 |
| Intel S3700 800GB 1x eMLC SATA |
1488.71 | 21.49 | 40 |
| Toshiba PX02SM 400GB 1x eMLC SAS (6 Gb/s) |
1487.03 | 21.52 | 62.02 |
| Smart Optimus 400GB 1x eMLC SAS |
1477.1 | 21.66 | 52.69 |
| OCZ Talos 2 C 480GB MLC SAS x 1 |
1438.7 | 22.24 | 47.32 |
| OCZ Intrepid 3600 400GB 1x eMLC SAS |
1335.3 | 23.96 | 48.42 |
| OCZ Talos 2 R 400GB 1x eMLC SAS |
1421.15 | 22.51 | 45.06 |
| SanDisk Extreme 480GB 1x MLC SATA |
1303.48 | 24.55 | 53.56 |
| STEC s842 800GB 1x eMLC SAS |
1293.56 | 24.74 | 67.20 |
| Intel S3500 512GB 1x eMLC SATA |
1,287.65 | 24.85 | 64.15 |
| Intel S3500 480GB 1x eMLC SATA |
1241.59 | 25.77 | 54.27 |
| Seagate 600 Pro 400GB 1x eMLC SATA |
1198.2 | 26.7 | 62.69 |
| Hitachi SSD400S.B 400GB SLC SAS x 1 |
1191.47 | 26.85 | 47.87 |
| OCZ Vector 512GB 1x MLC SATA |
1130.03 | 28.32 | 62.67 |
| SanDisk Extreme II 480GB 1x MLC SATA |
981.34 | 32.61 | 102.58 |
| Hitachi SSD400M 1x eMLC SAS |
878.9 | 36.41 | 68.03 |
| Toshiba eSSD SLC SAS x 1 |
758.41 | 42.19 | 140.59 |
| Micron M500 480GB 1x MLC SATA |
668.6 | 47.86 | 461.80 |




Amazon