StorageReview.com

Test porównawczy Sysbench OLTP

Benchmark aplikacji Sysbench OLTP działa na bazie danych MySQL z silnikiem pamięci masowej InnoDB. Zadaniem silnika pamięci masowej jest zarządzanie interfejsem między bazą danych na dysku a aplikacjami odczytującymi i zapisującymi dane do i z silnika pamięci masowej. Silnik pamięci masowej z kolei zarządza wątkami wejścia/wyjścia i logami oraz przechowuje pamięć podręczną w pamięci, aby zminimalizować dostęp do dysku. Poniższy wykres przedstawia uproszczony przegląd silnika.

Ponieważ silnik InnoDB przechowuje pamięć podręczną w pamięci, zwaną pulą buforów, wydajność będzie bezpośrednio zależeć od stosunku rozmiaru zestawu roboczego do rozmiaru puli buforów. Innymi słowy, jeśli pula buforów jest wystarczająco duża, aby pomieścić zestaw roboczy, lub zestaw roboczy jest wystarczająco mały, aby zmieścić się w puli buforów, większość operacji nigdy nie będzie ograniczona przez wejście/wyjście (IO). Jeśli jednak baza danych jest zbyt duża, aby zmieścić się w pamięci, wydajność wejścia/wyjścia (IO) będzie determinować czas reakcji transakcji i przepustowość. Charakteryzujemy wydajność dysku w tej sytuacji, gdy baza danych nie mieści się w pamięci, co prowadzi do zwiększonego ruchu wejścia/wyjścia (IO) z silnika pamięci masowej InnoDB.

Wiele wątków (ich liczba zależy od konfiguracji bazy danych w aplikacjach o wysokiej wydajności i waha się od 32 do 128) odczytuje dane w sposób losowy z pamięci podręcznej o rozmiarze bloku 16 KB. Odczyty te są związane z zapytaniami do bazy danych żądającymi danych z pamięci podręcznej. W miarę przetwarzania odczyty są automatycznie buforowane w puli buforów. W miarę zapełniania się puli buforów, InnoDB stosuje zasadę LRU (Least Recently Used), aby usunąć starsze strony i zwolnić miejsce dla nowszych danych.

Zapisy do bazy danych są najpierw kierowane do dziennika transakcji i puli buforów. Dziennik transakcji to bufor pierścieniowy zapisywany sekwencyjnie, który jest aktualizowany dla każdej transakcji zapisu. W zależności od konfiguracji MySQL, ta aktualizacja może prowadzić do natychmiastowego zapisu na dysku lub może tymczasowo utrzymywać się w pamięci RAM jako bufor, który ostatecznie jest zapisywany na dysk przez system plików. Rozmiar tego bufora dziennika jest zmienny, ale zazwyczaj wynosi około 256 MB. Zalecane ustawienia zgodności z ACID wymagają, aby zapisy do dziennika trafiały na dysk przy każdym zatwierdzeniu bazy danych. Długość tych zapisów wynosi 4 KB.

Dziennik wykonuje wyłącznie zapisy „fizjologiczne”, w których zapisywana jest różnica między poprzednimi a nowymi danymi. W przypadku danych oryginalnych InnoDB zapisuje je do puli buforów w pamięci RAM, która również musi być opróżniana asynchronicznie. Proces zapisywania danych z powrotem do systemu plików jest konfigurowalny i odbywa się w tle. Zapisy również mają rozmiar 16 KB. Są to w rzeczywistości zapisy podwójne, w których silnik najpierw zapisuje dane do pośredniej lokalizacji zwanej buforem podwójnego zapisu. Następnie silnik kopiuje te dane do docelowej lokalizacji w systemie plików. Jest to konieczne, aby uniknąć problemu „podartej strony”, gdzie strona bazy danych o rozmiarze 16 KB zostaje częściowo zapisana na dysku z powodu awarii zasilania lub innego katastrofalnego zdarzenia.

Geneza testu porównawczego Sysbench

Wprowadziliśmy konfigurację testową Sysbench do naszego laboratorium po kilku rozmowach z Micron na temat tego, jak symulują rzeczywiste środowiska aplikacji MySQL do testowania i pomiaru dysków SSD. Opracowali oni metodologię testową opartą na Sysbench, po tym jak odkryli, że syntetyczne testy porównawcze pamięci masowej rzadko dają pełny obraz zachowania dysku pod obciążeniem konkretnej aplikacji. Test Sysbench pozwala Micron symulować środowisko, które najbardziej odpowiada standardowemu obciążeniu bazy danych MySQL, powszechnemu w aplikacjach takich jak Facebook, Craigslist i Booking.com.

Szczególnie ściśle współpracowaliśmy z Moussą Ba, który był współautorem tego artykułu. Moussa jest inżynierem oprogramowania w zespole ds. rozwoju PCIe w firmie Micron, gdzie zajmuje się optymalizacją oprogramowania aplikacji i systemów dla urządzeń wejścia/wyjścia o wysokiej wydajności.

Test porównawczy Sysbench OLTP

Sysbench to test wydajności systemu, który obejmuje profil testowy przetwarzania transakcji online (OLTP). Test OLTP nie jest aproksymacją testu OLTP, lecz rzeczywistym testem bazodanowym, który przeprowadza zapytania transakcyjne do instancji MySQL w środowisku CentOS.

Pierwszym krokiem konfiguracji benchmarku jest utworzenie samej bazy danych, co odbywa się poprzez określenie liczby tabel w bazie danych oraz liczby wierszy w każdej tabeli. W naszym teście zdefiniowaliśmy 100 tabel, z których każda zawierała 10 milionów wierszy, co dało bazę danych zawierającą 1 miliard wpisów. Rozmiar tej bazy danych wynosił 260 GB.

Sysbench ma dwa tryby działania: tryb domyślny, który odczytuje i zapisuje dane do bazy danych, oraz tryb tylko do odczytu. Domyślny tryb R/W wykonuje następujące typy zapytań: 5 zapytań SELECT, 2 zapytania UPDATE, 1 zapytanie DELETE i 1 INSERT. Patrząc na liczbę operacji wejścia/wyjścia, zaobserwowany stosunek odczytu do zapisu wynosi około 75% odczytów i 25% zapisów.

Środowisko testowe Sysbench

Rozwiązania pamięci masowej są testowane za pomocą testu Sysbench OLTP w laboratorium testowym StorageReview Enterprise, wykorzystując serwery autonomiczne. Obecnie korzystamy z gotowych serwerów PowerEdge R730 firmy Dell, aby zapewnić realistyczną wydajność i dobry stosunek ceny do wydajności, zmieniając jedynie adapter pamięci masowej lub interfejs sieciowy, aby połączyć nasz R730 z różnymi produktami pamięci masowej. PowerEdge R730 udowodnił swoją doskonałą kompatybilność z urządzeniami innych firm, co czyni go doskonałą platformą do tego zróżnicowanego środowiska testowego. R730 wykorzystuje również wydajną architekturę Intel klasy Haswell, która zapewnia nam moc obliczeniową pozwalającą na odpowiednie obciążenie szerokiej gamy rozwiązań pamięci masowej i maksymalizację ich potencjału wydajnościowego.

Środowisko testowe Sysbench pierwszej generacji

Lenovo ThinkServer RD630 – platforma testowa SATA/SAS/PCIe

  • 2594-ABU Model bestsellerowy
  • Dwa procesory Intel E5-2650 (2.0 GHz, 8 rdzeni, pamięć podręczna 20 MB)
  • 128 GB pamięci RAM (8 GB x 16 DDR3, 64 GB na procesor)
  • 100 GB mikronów Dysk SSD RealSSD P400e (poprzez LSI 9207-8i) Dysk rozruchowy
  • 960 GB Micron M500 (przez 9207-8i) Gotowa pamięć masowa bazy danych
  • CentOS 6.3 64-bit
  • Percona XtraDB 5.5.30-rel30.1
    • Tabele bazy danych: 100
    • Rozmiar bazy danych: 10 000 000
    • Wątki bazy danych: 32
    • Bufor RAM: 24 GB

Środowisko testowe Sysbench drugiej generacji

Dell PowerEdge R730 – platforma testowa SATA/SAS/PCIe

  • Dwa procesory Intel E5-2690 v3 (2.6 GHz, 12 rdzeni, pamięć podręczna 30 MB)
  • 256 GB pamięci RAM (16 GB x 16 DDR4, 128 GB na procesor)
  • Dysk SSD rozruchowy 100 GB, dysk SSD do przechowywania bazy danych 480 GB
  • 2 x adapter Mellanox ConnectX-3 InfiniBand
  • 2 x Karta HBA FC Emulex 16 GB z dwoma portami
  • 2 x Karta sieciowa dwuportowa Emulex 10GbE
  • CentOS 6.6 64-bit
  • Percona XtraDB 5.5.30-rel30.1
    • Tabele bazy danych: 100
    • Rozmiar bazy danych: 10 000 000
    • Wątki bazy danych: 32
    • Bufor RAM: 24 GB

Klaster Sysbench zwirtualizowany Dell PowerEdge R730 z 4 węzłami

  • Osiem procesorów Intel E5-2690 v3 o taktowaniu 249 GHz w klastrze (dwa na węzeł, 2.6 GHz, 12 rdzeni, pamięć podręczna 30 MB)
  • 1 TB pamięci RAM (256 GB na węzeł, 16 GB x 16 DDR4, 128 GB na procesor)
  • Rozruch z karty SD (Lexar 16 GB)
  • 4 x adapter Mellanox ConnectX-3 InfiniBand (vSwitch dla vMotion i sieci VM)
  • 4 x Karta HBA FC Emulex 16 GB z dwoma portami
  • 4 x Karta sieciowa dwuportowa Emulex 10GbE
  • VMware ESXi vSphere 6.0 / Enterprise Plus 8-CPU

Głównym celem tej platformy jest pokazanie, jak pamięci masowe klasy enterprise działają w rzeczywistym środowisku korporacyjnym i przy danym obciążeniu, zamiast polegać na obciążeniach syntetycznych lub pseudosyntetycznych. Generatory obciążeń syntetycznych doskonale pokazują, jak dobrze urządzenia pamięci masowej działają z ciągłym syntetycznym wzorcem wejścia/wyjścia, ale nie uwzględniają żadnych innych zmiennych zewnętrznych, które opisują, jak urządzenia faktycznie działają w środowiskach produkcyjnych. Generatory obciążeń syntetycznych mają tę zaletę, że raz po raz pokazują czysty wzorzec wejścia/wyjścia, ale nigdy nie odtworzą prawdziwego środowiska produkcyjnego. Wprowadzenie wydajności aplikacji na bazie produktów pamięci masowej pokazuje, jak dobrze pamięć masowa współpracuje ze swoimi sterownikami, lokalnym systemem operacyjnym, testowaną aplikacją, stosem sieciowym, przełącznikami sieciowymi i serwerami zewnętrznymi. Są to zmienne, których generator obciążeń syntetycznych po prostu nie jest w stanie uwzględnić, a ponadto są one o rząd wielkości bardziej wymagające pod względem zasobów i infrastruktury pod względem sprzętu wymaganego do wykonania tego konkretnego testu porównawczego.

Ogólne wyniki wydajności Sysbench

Testujemy szeroką gamę rozwiązań pamięci masowej za pomocą benchmarku Sysbench OLTP, które spełniają minimalne wymagania środowiska testowego. Aby zakwalifikować się do testów, urządzenie pamięci masowej musi mieć pojemność użytkową przekraczającą 260 GB i być przystosowane do pracy w stresujących warunkach korporacyjnych. Lokalnie podłączone urządzenia pamięci masowej, takie jak dyski SSD SAS, SATA i PCIe, są testowane na serwerze bare-metal z jedną instancją Sysbench. Nowsze platformy SAN i hiperkonwergentne obsługują jednocześnie 4, 8, 12 lub 16 maszyn wirtualnych, aby pokazać, jak dobrze wiele obciążeń działa jednocześnie na każdej z nich. Ta metodologia testowania pomaga wyjaśnić porównania wydajności nowszych systemów hiperkonwergentnych z tradycyjnymi macierzami pamięci masowej SAN.

Wyniki wydajności Sysbench dla systemów hiperkonwergentnych/wirtualizowanych w sieci SAN (łącznie 16 maszyn wirtualnych)

Urządzenie 32-wątkowy agregat TPS Średni czas reakcji (ms) 99. percentyl opóźnienia (ms)
X-IO ISE 860
(4) Dell R730, X-IO ISE 860 AFA
(2) woluminy 10 TB
6625  80  418

Wyniki wydajności Sysbench dla systemów hiperkonwergentnych/wirtualizowanych w sieci SAN (łącznie 12 maszyn wirtualnych)

Urządzenie 32-wątkowy agregat TPS Średni czas reakcji (ms) 99. percentyl opóźnienia (ms)
X-IO ISE 860
(4) Dell R730, X-IO ISE 860 AFA
(2) woluminy 10 TB
7160  54  177

Wyniki wydajności Sysbench dla systemów hiperkonwergentnych/wirtualizowanych w sieci SAN (łącznie 8 maszyn wirtualnych)

Urządzenie 32-wątkowy agregat TPS Średni czas reakcji (ms) 99. percentyl opóźnienia (ms)
X-IO ISE 860
(4) Dell R730, X-IO ISE 860 AFA
(2) woluminy 10 TB
6568  39  83
VMware VSAN (ESXi 6.0)
(4) Dell R730xd, 80 dysków twardych 1.2 TB, 16 dysków SSD 800 GB
4259  60  131

Wyniki wydajności Sysbench dla systemów hiperkonwergentnych/wirtualizowanych w sieci SAN (łącznie 4 maszyny wirtualne)

Urządzenie 32-wątkowy agregat TPS Średni czas reakcji (ms) 99. percentyl opóźnienia (ms) Maksymalne opóźnienie (ms)
DotHill Ultra48 Hybrid
(4) Dell R730, hybryda DotHill Ultra48
(2) pule RAID1 z 14 dyskami, 40 dyskami twardymi 1.8 TB, 8 dyskami SSD 400 GB
4645  28  51  676
X-IO ISE 860
(4) Dell R730, X-IO ISE 860 AFA
(2) woluminy 10 TB
4424  29  57  983
VMware VSAN (ESXi 6.0)
(4) Dell R730xd, 80 dysków twardych 1.2 TB, 16 dysków SSD 800 GB
2830  45  94  480
Nutanix NX-8150 (ESXi 6.0)
(4) NX-8150, 80 dysków twardych 1 TB, 16 dysków SSD 800 GB
RAID0 x 4 wolumin bazy danych vDisk
2390  54  173  4784
Nutanix NX-8150 (ESXi 6.0)
(4) NX-8150, 80 dysków twardych 1 TB, 16 dysków SSD 800 GB
Domyślne wdrożenie bazy danych
1422  90  216  5508

Wyniki wydajności Sysbench dla akceleratora aplikacji PCIe / RAID z wieloma dyskami SSD/HDD

Urządzenie Średnia wydajność 32 wątków na sekundę Średni czas reakcji 99. percentyl opóźnienia
Huawei ES3000 2.4 TB
Dysk SSD MLC PCIe x 1
2734.69  11.7  19.84
Huawei ES3000 1.2 TB
Dysk SSD MLC PCIe x 1
2615.12  12.23  21.80
Fusion ioDrive2 Duo 2.4 TB
Dysk SSD MLC PCIe x 1
2521.06  12.69  23.92
Micron P320h 700GB
Dysk SSD SLC PCIe x 1
2443.56  13.09  22.45
Micron P420m 1.4 TB
Dysk SSD MLC PCIe x 1
2361.29  13.55  25.84
Fusion ioDrive2 1.2 TB
Dysk SSD MLC PCIe x 1
2354.06  13.59  29.35
Virident FlashMAX II 2.2 TB
Dysk SSD MLC PCIe x 1
2278.11  14.04  26.04
Dysk LSI Nytro WarpDrive 800 GB
Dysk SSD MLC PCIe x 1
1977.67  16.18  39.94
Dysk LSI Nytro WarpDrive 400 GB
Dysk SSD MLC PCIe x 1
1903.14  16.81  39.30

Indywidualne wyniki SAS/SATA SSD

Urządzenie Średnia wydajność 32 wątków na sekundę Średni czas reakcji 99. percentyl opóźnienia
Toshiba HK3R2 960GB
MLC SATA x 1
1673.23 19.12 49.65
SanDisk CloudSpeed ​​Eco 960 GB
cMLC SATA x 1
1556.99 20.55 49.05
Intel S3700 800 GB
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
Inteligentny Optimus 400 GB
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 400 GB
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 512 GB
eMLC SATA x 1
1,287.65 24.85 64.15
Intel S3500 480 GB
eMLC SATA x 1
1241.59  25.77  54.27
Seagate 600 Pro 400 GB
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 512 GB
MLC SATA x 1
1130.03  28.32  62.67
SanDisk Extreme II 480 GB
MLC SATA x 1
981.34  32.61  102.58
Hitachi SSD400M
eMLC SAS x 1
878.9  36.41  68.03
Dysk SSD Toshiby
SLC SAS x 1
758.41  42.19  140.59
Mikron M500 480 GB
MLC SATA x 1
668.6  47.86  461.80