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