Hier noch ein kleiner Benchmark, der schon einige Zeit zurückliegt. Um die Performance eines unserer Datenbankserver zu erhöhen, wurde eine Raid 10 aus 4 SAS-Festplatten durch ein Raid 10 aus SSDs ersetzt. Das die SSDs schneller sein würden, war uns klar. Wir waren nur gespannt, um welchen Faktor sich der Datendurchsatz erhöhen würde. Hier die weiteren Einzelheiten:
Die Ausgangssituation:
Hardware:
SunFire X4150 Server
2 x Quad-Core Intel Xeon X5460 (2x6MB L2, 3.16 GHz)
32 GB DDR2 ECC registered RAM
4 x HDD 73 GB SAS 10000rpm (RAID 10)
vs.
4 x HDD 32 GB SSD (RAID 10)
Software:
RedHat Enterprise Linux 5.3
Der Test:
Als Benchmark-Werkzeug kam der FileIO-Test von sysbench zum Einsatz. Dieser wurde sowohl für das RAID10 aus SAS-Platten, als auch für das RAID10 aus SSDs ausgeführt. Bevor der Test jedoch gestartet wurde, wurden die entsprechenden Rohdaten erzeugt. Dies geschah wie folgt:
#> sysbench --test=fileio --file-total-size=50G prepare sysbench 0.4.12: multi-threaded system evaluation benchmark 128 files, 409600Kb each, 51200Mb total Creating files for the test...
Anschließend wurde der Test mit folgenden Parametern gestartet:
#> sysbench --test=fileio --file-total-size=50G --file-test-mode=rndrw --max-time=300 run
Das Testergebnis:
Nach dem der Benchmark beendet war, erhielt ich folgende Zusammenfassung:
SAS-RAID 10:
sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Extra file open flags: 0 128 files, 400Mb each 50Gb total file size Block size 16Kb Number of random requests for random IO: 10000 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Threads started! Done. Operations performed: 6000 Read, 4000 Write, 12800 Other = 22800 Total Read 93.75Mb Written 62.5Mb Total transferred 156.25Mb (2.5413Mb/sec) 162.65 Requests/sec executed Test execution summary: total time: 61.4835s total number of events: 10000 total time taken by event execution: 57.6007 per-request statistics: min: 0.01ms avg: 5.76ms max: 120.20ms approx. 95 percentile: 15.25ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 57.6007/0.00
SSD-RAID 10:
sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Extra file open flags: 0 128 files, 400Mb each 50Gb total file size Block size 16Kb Number of random requests for random IO: 10000 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Threads started! Done. Operations performed: 6000 Read, 4000 Write, 12800 Other = 22800 Total Read 93.75Mb Written 62.5Mb Total transferred 156.25Mb (24.499Mb/sec) 1567.93 Requests/sec executed Test execution summary: total time: 6.3778s total number of events: 10000 total time taken by event execution: 5.7828 per-request statistics: min: 0.01ms avg: 0.58ms max: 23.38ms approx. 95 percentile: 0.83ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 5.7828/0.00
Das das SSD-RAID schneller sein würde, war ja klar. Aber das es mit 1567 Request/Sec fast 10mal soviel IO durchsetzt, wie das SAS-RAID, hätte ich nicht erwartet.
Clik here to view.

Requests/Sec
Somit braucht das SSD-RAID auch nur 5,78 Sekunden, während das SAS-RAID 57,6 Sekunden für den Benchmark-Lauf braucht.
Clik here to view.

Execution Time
Fazit:
Mit dem SSD-RAID 10 lässt sich der IO-Durchsatz selbst im Vergleich zu dem recht performanten SAS-RAID 10 noch enorm steigern (hier fast 10facher IO-Durchsatz). Damit lässt sich auch bei Datenbanken, insbesondere IO-lastigen, noch einiges an Performance herausholen.