Ich sehe keine Leistungssteigerungen bei Postgres beim Schreiben. Ich dachte, ich würde dies mit einer einzelnen SSD im Vergleich zu einem Hardware-RAID-10-Array mit (16) SAS-Laufwerken mit 15.000 U / min tun.
Ich habe einen Dell R820 mit einer PERC H700-Hardware-RAID-Karte und 16 SAS-Laufwerken mit 15.000 U / min in einem RAID 10-Array sowie eine 800 s Intel s3700 SSD. Der Server verfügt über 128 GB RAM und 64 Kerne Xeon E5-4640 mit 2,40 GHz, auf denen CentOS 6.4 und Postgres 9.2.4 ausgeführt werden.
Ich verwende pgbench, um die SAS-Laufwerke in einem RAID 10-Array mit der einzelnen SSD zu vergleichen.
SAS RAID 10-Ergebnisse mit 15.000 U / min
pgbench -U postgres -p 5432 -T 50 -c 10 pgbench Startvakuum ... Ende. Transaktionstyp: TPC-B (Art von) Skalierungsfaktor: 1 Abfragemodus: einfach Anzahl der Kunden: 10 Anzahl der Threads: 1 Dauer: 50 s Anzahl der tatsächlich verarbeiteten Transaktionen: 90992 tps = 1819.625430 (einschließlich Verbindungsaufbau) tps = 1821.417384 (ohne Verbindungsaufbau)
Einzelne Intel s3700 SSD Ergebnisse
pgbench -U postgres -p 5444 -T 50 -c 10 pgbench Startvakuum ... Ende. Transaktionstyp: TPC-B (Art von) Skalierungsfaktor: 1 Abfragemodus: einfach Anzahl der Kunden: 10 Anzahl der Threads: 1 Dauer: 50 s Anzahl der tatsächlich verarbeiteten Transaktionen: 140597 tps = 2811.687286 (einschließlich Verbindungsaufbau) tps = 2814.578386 (ohne Verbindungsaufbau)
In der Praxis haben wir einen sehr schreibintensiven Prozess, der ungefähr 7 Minuten dauert, und das RAID 10-Array und die SSD befinden sich innerhalb von 10 oder 15 Sekunden voneinander.
Ich habe von der SSD eine weitaus bessere Leistung erwartet.
Hier sind Bonnie ++ Ergebnisse für die SSD:
Version 1.96 ------ Sequenzielle Ausgabe ------ - Sequenzielle Eingabe- - Zufällige- Parallelität 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Maschinengröße K / s% CP K / s% CP K / s% CP K / s% CP K / s% CP / s% CP openlink2.rady 252G 532 99 375323 97 183855 45 1938 99 478149 54 +++++ +++ Latenz 33382us 82425us 168ms 12966us 10879us 10208us Version 1.96 ------ Sequentielles Erstellen ------ -------- Zufälliges Erstellen -------- openlink2.radyn.com -Create-- --Read --- -Delete-- -Create-- --Read --- -Delete-- Dateien / Sek.% CP / Sek.% CP / Sek.% CP / Sek.% CP / Sek.% CP / Sek.% CP 16 5541 46 +++++ +++ +++++ +++ 18407 99 +++++ +++ +++++ +++ Latenz 1271us 1055us 1157us 456us 20us 408us
Hier sind die Bonnie ++ - Ergebnisse für die RAID 10-Laufwerke mit 15.000 U / min:
Version 1.96 ------ Sequenzielle Ausgabe ------ - Sequenzielle Eingabe- - Zufällige- Parallelität 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Maschinengröße K / s% CP K / s% CP K / s% CP K / s% CP K / s% CP / s% CP openlink2.rady 252G 460 99 455060 98 309526 56 2156 94 667844 70 197.9 85 Latenz 37811us 62175us 393ms 75392us 169ms 17633us Version 1.96 ------ Sequentielles Erstellen ------ -------- Zufälliges Erstellen -------- openlink2.radyn.com -Create-- --Read --- -Delete-- -Create-- --Read --- -Delete-- Dateien / Sek.% CP / Sek.% CP / Sek.% CP / Sek.% CP / Sek.% CP / Sek.% CP 16 12045 95 +++++ +++ +++++ +++ 16851 98 +++++ +++ +++++ +++ Latenz 7879us 504us 555us 449us 24us 377us
Hier sind dd Ergebnisse für die SSD:
dd if = / dev / zero von = / path / on / ssd bs = 1M count = 4096 conv = fdatasync, notrunc 4294967296 Bytes (4,3 GB) kopiert, 12,7438 s, 337 MB / s
Und hier sind die dd-Ergebnisse für die RAID 10-Laufwerke mit 15.000 U / min:
dd if = / dev / zero von = / path / on / array bs = 1M count = 4096 conv = fdatasync, notrunc 4294967296 Bytes (4,3 GB) kopiert, 8,45972 s, 508 MB / s
Ich würde die Postgres-Konfiguration veröffentlichen, aber es ist klar, dass die SSD das RAID 10-Array nicht übertrifft, sodass sie nicht anwendbar zu sein scheint.
Funktioniert die SSD also so, wie sie sein sollte?
Oder ist das RAID 10 mit 16 schnellen Laufwerken so gut, dass es eine einzelne SSD übertrifft? Ein RAID 10-Array der SSDs wäre fantastisch, aber bei jeweils 2.000 US-Dollar ist der Preis von 8.000 US-Dollar schwer zu rechtfertigen (es sei denn, wir waren sicher, dass wir die erhofften 2- bis 5-fachen Zuwächse bei den Leistungssteigerungen in der realen Welt sehen würden).
==========================================
Es stellt sich heraus, dass wir 16 SAS-Laufwerke im Array haben, nicht 8. Ich denke, der kombinierte Durchsatz ist
Hier sind die Benchmarks der Iozone, die mehr Licht ins Dunkel bringen. Das RAID10-Array liefert ziemlich konsistent bessere Ergebnisse. 4 oder 8 der SSDs in RAID 10 würden wahrscheinlich das SAS-Array schlagen (natürlich zu einem hohen Preis).
SSD-Benchmark http://pastebin.com/vEMHCQhR
RAID-10-Benchmark mit 16 Laufwerken http://pastebin.com/LQNrm7tT
Hier ist die Postgres-Konfiguration für die SSD, falls jemand Verbesserungspotenzial sieht, um die SSD http://pastebin.com/Qsb3Ks7Y zu nutzen
pg_test_fsync
, und anstatt dd
, Verwendung sysbench
‚s Disk - I / O - Tests.