StorageReview.com

Sysbench OLTP Benchmark

Sysbench OLTP-applikationens benchmark körs ovanpå en MySQL-databas som kör lagringsmotorn InnoDB. Lagringsmotorns uppgift är att hantera gränssnittet från databasen på disken till applikationerna som läser och skriver data till och från lagringsmotorn. Lagringsmotorn hanterar i sin tur IO-trådar och loggar, och den håller en cache i minnet för att minimera diskåtkomst. Tabellen nedan ger en förenklad översikt av motorn.

Eftersom InnoDB-motorn har en cache i minnet som kallas buffertpoolen, kommer prestandan att påverkas direkt av förhållandet mellan arbetsuppsättningens storlek och storleken på buffertpoolen. Med andra ord, om buffertpoolen är tillräckligt stor för att hålla arbetsuppsättningen eller arbetsuppsättningen är tillräckligt liten för att passa i buffertpoolen, kommer de flesta operationer aldrig att vara IO-bundna. Men om databasen är för stor för att passa in i minnet, kommer IO-prestanda att diktera transaktionssvarstider och genomströmning. Vi karakteriserar enhetens prestanda i den här situationen där databasen inte får plats i minnet, vilket leder till ökad IO-trafik från InnoDB-lagringsmotorn.

Flera trådar (antalet beror på databaskonfigurationen för högpresterande applikationer och varierar från 32 till 128) läser data på ett slumpmässigt sätt från stödlagret med en blockstorlek på 16Kbyte. Dessa läsningar är relaterade till databasförfrågningar som begär data från stödlagret. När läsningar bearbetas, cachelagras de automatiskt i buffertpoolen. När buffertpoolen fylls upp använder InnoDB en LRU-policy (Least Recently Used) för att avhysa äldre sidor för att ge plats åt nyare data.

Databasskrivningar dirigeras först till transaktionsloggen och till buffertpoolen. Transaktionsloggen är en sekventiellt skriven ringbuffert som uppdateras för varje skrivtransaktion. Beroende på MySQL-konfigurationen kan den här uppdateringen leda till en omedelbar skrivning på disken, eller så kan den finnas kvar tillfälligt i RAM-minnet som en buffert som så småningom spolas till disken av filsystemet. Storleken på denna loggbuffert varierar, men är vanligtvis runt 256 MB. Rekommenderade inställningar för ACID-kompatibilitet kräver att loggskrivningarna träffar disken vid varje databas-commit. Dessa skrivningar är 4K långa.

Loggen gör bara "fysiologiska" skrivningar där deltat mellan tidigare data och nya data skrivs. För originaldata skriver InnoDB till buffertpoolen i RAM, som också måste tömmas asynkront. Processen att skriva ut data tillbaka till filsystemet är konfigurerbar och sker i bakgrunden. Skrivningarna är också 16K. Skrivningarna är faktiskt dubbelskrivningar där motorn först skriver data till en mellanliggande plats som kallas dubbelskrivbufferten. Motorn kopierar sedan dessa data till sin slutliga plats i filsystemet. Detta är nödvändigt för att undvika problemet med "rivna sidor" där en 16KB databassida delvis skrivs till disken på grund av strömavbrott eller annan katastrofal händelse.

Ursprunget till Sysbench Benchmark

Vi tog med oss ​​Sysbench-testinställningen till vårt labb efter flera samtal med Micron om hur de simulerar verkliga MySQL-applikationsmiljöer för SSD-testning och mätning. De utvecklade en testmetod kring Sysbench efter att ha upptäckt att syntetiska lagringsriktmärken sällan gav en fullständig bild av hur en enhet kommer att bete sig under en viss applikationsbelastning. Sysbench-testet tillåter Micron att simulera en miljö som närmast representerar en standard MySQL-databas arbetsbelastning, som är utbredd i applikationer som Facebook, Craigslist och Booking.com

Vi arbetade särskilt nära Moussa Ba, som hjälpte till att skriva den här artikeln. Moussa är en mjukvaruingenjör i Microns PCIe-utvecklingsteam där hans arbete inkluderar applikations- och systemprogramvaruoptimering för högpresterande IO-enheter.

Sysbench OLTP Benchmark

Sysbench är ett systemprestandariktmärke som inkluderar en testprofil för OnLine Transaction Processing (OLTP). OLTP-testet är inte en approximation av ett OLTP-test, utan är snarare ett äkta databasstödd benchmark som utför transaktionsfrågor till en instans av MySQL i en CentOS-miljö.

Det första steget i att sätta upp riktmärket är att skapa själva databasen, vilket görs genom att ange antalet tabeller i databasen samt antalet rader per tabell. I vårt test definierade vi 100 tabeller med 10 miljoner rader vardera, vilket resulterade i en databas med 1 miljard poster. Denna databas var 260GB.

Sysbench har två driftlägen: standardläge som läser och skriver till databasen och ett skrivskyddat läge. Standard R/W-läget kommer att exekvera följande frågetyper: 5 SELECT-frågor, 2 UPPDATERA-frågor, 1 DELETE-fråga och 1 INSERT. Om man tittar på IO-antal är det observerade läs/skrivförhållandet cirka 75 % läser och 25 % skriver.

Sysbench testmiljö

Lagringslösningar testas med Sysbench OLTP-riktmärket i StorageReview Enterprise Test Lab använda fristående servrar. Vi använder för närvarande off-the-shelf kanal PowerEdge R730s från Dell för att visa både realistisk prestanda och ett stabilt pris/prestanda-förhållande, och byter endast lagringsadaptern eller nätverksgränssnittet för att ansluta vår R730 till olika lagringsprodukter. PowerEdge R730 har visat sig erbjuda stor kompatibilitet med tredjepartsenheter, vilket gör den till en utmärkt plattform för denna mångsidiga testmiljö. R730 utnyttjar också Intels kraftfulla arkitektur av Haswell-klass, som ger oss beräkningskraften att på ett korrekt sätt betona ett brett utbud av lagringserbjudanden och maximera deras prestandapotential.

Första generationens Sysbench Benchmark-miljö

Lenovo ThinkServer RD630 – SATA/SAS/PCIe-testplattform

  • 2594-ABU Toppsäljarmodell
  • Dubbla Intel E5-2650-processorer (2.0 GHz, 8-kärnor, 20 MB cache)
  • 128 GB RAM (8 GB x 16 DDR3, 64 GB per CPU)
  • 100 GB mikron RealSSD P400e SSD (via LSI 9207-8i) Boot Drive
  • 960 GB Micron M500 (via 9207-8i) förbyggd databaslagring
  • CentOS 6.3 64-bitars
  • Percona XtraDB 5.5.30-rel30.1
    • Databastabeller: 100
    • Databasstorlek: 10,000,000 XNUMX XNUMX
    • Databastrådar: 32
    • RAM-buffert: 24GB

Andra generationens Sysbench Benchmark-miljö

Dell PowerEdge R730 – SATA/SAS/PCIe-testplattform

  • Dubbla Intel E5-2690 v3-processorer (2.6 GHz, 12-kärnor, 30 MB cache)
  • 256 GB RAM (16 GB x 16 DDR4, 128 GB per CPU)
  • 100 GB Boot SSD, 480 GB Databas Storage SSD
  • 2 x Mellanox ConnectX-3 InfiniBand-adapter
  • 2 x Emulex 16GB dual-port FC HBA
  • 2 x Emulex 10GbE nätverkskort med dubbla portar
  • CentOS 6.6 64-bitars
  • Percona XtraDB 5.5.30-rel30.1
    • Databastabeller: 100
    • Databasstorlek: 10,000,000 XNUMX XNUMX
    • Databastrådar: 32
    • RAM-buffert: 24GB

Dell PowerEdge R730 Virtualized Sysbench 4-nodskluster

  • Åtta Intel E5-2690 v3-processorer för 249 GHz i kluster (två per nod, 2.6 GHz, 12-kärnor, 30 MB cache)
  • 1 TB RAM (256 GB per nod, 16 GB x 16 DDR4, 128 GB per CPU)
  • SD-kortstart (Lexar 16GB)
  • 4 x Mellanox ConnectX-3 InfiniBand Adapter (vSwitch för vMotion och VM-nätverk)
  • 4 x Emulex 16GB dual-port FC HBA
  • 4 x Emulex 10GbE nätverkskort med dubbla portar
  • VMware ESXi vSphere 6.0 / Enterprise Plus 8-CPU

Huvudmålet med den här plattformen är att belysa hur företagslagring fungerar i en verklig företagsmiljö och arbetsbelastning, istället för att förlita sig på syntetiska eller pseudosyntetiska arbetsbelastningar. Syntetiska arbetsbelastningsgeneratorer är bra på att visa hur bra lagringsenheter presterar med ett kontinuerligt syntetiskt I/O-mönster, men de tar inte hänsyn till någon av de andra externa variablerna som belyser hur enheter faktiskt fungerar i produktionsmiljöer. Syntetiska arbetsbelastningsgeneratorer har fördelen av att visa ett rent I/O-mönster gång på gång, men de kommer aldrig att replikera en verklig produktionsmiljö. Att introducera applikationsprestanda ovanpå lagringsprodukter börjar visa hur väl lagringen interagerar med dess drivrutiner, det lokala operativsystemet, applikationen som testas, nätverksstacken, nätverksväxling och externa servrar. Det här är variabler som en syntetisk arbetsbelastningsgenerator helt enkelt inte kan ta hänsyn till, och de är också en storleksordning mer resurs- och infrastrukturkrävande när det gäller den utrustning som krävs för att utföra just detta riktmärke.

Övergripande Sysbench-prestandaresultat

Vi testar ett brett utbud av lagringslösningar med Sysbench OLTP benchmark som uppfyller testmiljöns minimikrav. För att kvalificera sig för testning måste lagringsenheten ha en användbar kapacitet som överstiger 260 GB och vara inriktad på att fungera under stressiga företagsförhållanden. Lokalt anslutna lagringsenheter som SAS, SATA och PCIe SSD testas på en barmetallserver med en Sysbench-instans. Nyare SAN och hyperkonvergerade plattformar kör antingen 4, 8, 12 eller 16 virtuella datorer samtidigt för att visa hur väl flera arbetsbelastningar fungerar samtidigt på var och en. Denna testmetologi hjälper till att avmystifiera prestandajämförelserna mellan nyare hyperkonvergerade system mot traditionella SAN-lagringsmatriser.

Hyperkonvergerade / SAN-virtualiserade Sysbench-prestandaresultat (16 VM Aggregate)

Hela enheter 32-tråds aggregat TPS Genomsnittlig svarstid (ms) 99:e percentilens latens (ms)
X-IO ISE 860
(4) Dell R730, X-IO ISE 860 AFA
(2) 10TB volymer
6625  80  418

Hyperkonvergerade / SAN-virtualiserade Sysbench-prestandaresultat (12 VM Aggregate)

Hela enheter 32-tråds aggregat TPS Genomsnittlig svarstid (ms) 99:e percentilens latens (ms)
X-IO ISE 860
(4) Dell R730, X-IO ISE 860 AFA
(2) 10TB volymer
7160  54  177

Hyperkonvergerade / SAN-virtualiserade Sysbench-prestandaresultat (8 VM Aggregate)

Hela enheter 32-tråds aggregat TPS Genomsnittlig svarstid (ms) 99:e percentilens latens (ms)
X-IO ISE 860
(4) Dell R730, X-IO ISE 860 AFA
(2) 10TB volymer
6568  39  83
VMware VSAN (ESXi 6.0)
(4) Dell R730xd, 80 1.2 TB hårddiskar, 16 800 GB SSD:er
4259  60  131

Hyperkonvergerade / SAN-virtualiserade Sysbench-prestandaresultat (4 VM Aggregate)

Hela enheter 32-tråds aggregat TPS Genomsnittlig svarstid (ms) 99:e percentilens latens (ms) Toppfördröjning (ms)
DotHill Ultra48 Hybrid
(4) Dell R730, DotHill Ultra48 Hybrid
(2) 14-diskar RAID1-pooler, 40 1.8 TB hårddiskar, 8 400 GB SSD:er
4645  28  51  676
X-IO ISE 860
(4) Dell R730, X-IO ISE 860 AFA
(2) 10TB volymer
4424  29  57  983
VMware VSAN (ESXi 6.0)
(4) Dell R730xd, 80 1.2 TB hårddiskar, 16 800 GB SSD:er
2830  45  94  480
Nutanix NX-8150 (ESXi 6.0)
(4) NX-8150, 80 1TB hårddiskar, 16 800GB SSD:er
RAID0 x 4 vDisk Databas Volym
2390  54  173  4784
Nutanix NX-8150 (ESXi 6.0)
(4) NX-8150, 80 1TB hårddiskar, 16 800GB SSD:er
Standarddatabasdistribution
1422  90  216  5508

PCIe Application Accelerator / Multi-SSD/HDD RAID Sysbench prestandaresultat

Hela enheter 32-tråds genomsnittlig TPS Genomsnittlig responstid 99:e percentilens latens
Huawei ES3000 2.4TB
MLC PCIe SSD x 1
2734.69  11.7  19.84
Huawei ES3000 1.2TB
MLC PCIe SSD x 1
2615.12  12.23  21.80
Fusion ioDrive2 Duo 2.4TB
MLC PCIe SSD x 1
2521.06  12.69  23.92
Micron P320h 700GB
SLC PCIe SSD x 1
2443.56  13.09  22.45
Micron P420m 1.4TB
MLC PCIe SSD x 1
2361.29  13.55  25.84
Fusion ioDrive2 1.2TB
MLC PCIe SSD x 1
2354.06  13.59  29.35
Virident FlashMAX II 2.2TB
MLC PCIe SSD x 1
2278.11  14.04  26.04
LSI Nytro WarpDrive 800GB
MLC PCIe SSD x 1
1977.67  16.18  39.94
LSI Nytro WarpDrive 400GB
MLC PCIe SSD x 1
1903.14  16.81  39.30

Individuella SAS / SATA SSD-resultat

Hela enheter 32-tråds genomsnittlig TPS Genomsnittlig responstid 99:e percentilens latens
Toshiba HK3R2 960GB
MLC SATA x 1
1673.23 19.12 49.65
SanDisk CloudSpeed ​​Eco 960GB
cMLC SATA x 1
1556.99 20.55 49.05
Intel S3700 800GB
eMLC SATA x 1
1488.71  21.49  40
Toshiba PX02SM 400GB
eMLC SAS (6 Gb/s) x 1
1487.03 21.52 62.02
Smart Optimus 400GB
eMLC SAS x 1
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
eMLC SAS x 1
1335.3 23.96 48.42
OCZ Talos 2 R 400GB
eMLC SAS x 1
1421.15 22.51 45.06
SanDisk Extreme 480GB
MLC SATA x 1
1303.48 24.55 53.56
STEC s842 800GB
eMLC SAS x 1
1293.56  24.74  67.20
Intel S3500 512GB
eMLC SATA x 1
1,287.65 24.85 64.15
Intel S3500 480GB
eMLC SATA x 1
1241.59  25.77  54.27
Seagate 600 Pro 400GB
eMLC SATA x 1
1198.2  26.7  62.69
Hitachi SSD400S.B 400GB
SLC SAS x 1
1191.47  26.85  47.87
OCZ Vector 512GB
MLC SATA x 1
1130.03  28.32  62.67
SanDisk Extreme II 480GB
MLC SATA x 1
981.34  32.61  102.58
Hitachi SSD400M
eMLC SAS x 1
878.9  36.41  68.03
Toshiba eSSD
SLC SAS x 1
758.41  42.19  140.59
Micron M500 480GB
MLC SATA x 1
668.6  47.86  461.80