
Witajcie wszyscy. Kontynuujemy przedstawianie systemu przechowywania danych Aerodisk WOSTOK, opartego na rosyjskim procesorze Elbrus 8C.
W tym artykule dokładnie przeanalizujemy jeden z najbardziej popularnych i interesujących tematów związanych z Elbrusami, a mianowicie - wydajność. Wokół wydajności Elbrusa krąży wiele spekulacji, w tym skrajnie różne opinie. Pesymiści twierdzą, że wydajność Elbrusa obecnie jest "żadna" i aby dogonić "najlepszych" producentów, będą potrzebne dziesięciolecia (czyli w obecnych realiach — nigdy). Z drugiej strony optymiści mówią, że już teraz Elbrus 8C osiąga dobre wyniki, a w najbliższych dwóch latach, wraz z wydaniem nowych wersji procesorów (Elbrus 16C i 32C), będziemy w stanie "dogonić i przegonić" wiodących światowych producentów procesorów.
W Aerodisku jesteśmy praktycznymi ludźmi, dlatego podjęliśmy najprostszy i najbardziej zrozumiały (dla nas) krok: przetestować, zarejestrować wyniki i dopiero później wyciągnąć wnioski. W rezultacie przeprowadziliśmy dość dużą liczbę testów i odkryliśmy szereg cech działania architektury e2k Elbrusa 8C (w tym kilka przyjemnych) i, oczywiście, porównaliśmy to z podobnymi systemami na procesorach Intel Xeon architektury amd64.
Przy okazji, szczegółowo o testach, wynikach i przyszłym rozwoju systemów na Elbrusach porozmawiamy na naszym najbliższym webinarze "OkołoIT" 15.10.2020 o 15:00. Rejestracja jest dostępna pod poniższym linkiem.
→
Stojak testowy
Stworzyliśmy dwa stoiska. Oba stanowiska składają się z serwera z systemem Linux, połączonego poprzez 16G FC-switche z dwoma kontrolerami systemu, w których zainstalowano 12 dysków SAS SSD o pojemności 960 GB (11,5 TB „surowej pojemności” lub 5,7 TB „użytecznej” pojemności, jeśli używamy RAID-10).
Schematycznie stanowisko wygląda następująco.

Stanowisko nr 1 e2k (Elbrus)
Konfiguracja sprzętu jest następująca:
- Serwer Linux (2xIntel Xeon E5-2603 v4 (6 rdzeni, 1,70 GHz), 64 GB DDR4, 2xFC-adapter 16G 2 porty) – 1 szt.
- Switch FC 16 G – 2 szt.
- System Aerodisk Wostok 2-E12 (2xElbrus 8C (8 rdzeni, 1,20 GHz), 32 GB DDR3, 2xFE FC-adapter 16G 2 porty, 12xSAS SSD 960 GB) — 1 szt.
Stanowisko nr 2 amd64 (Intel)
Dla porównania z podobną konfiguracją na e2k użyto podobnej konfiguracji systemu z procesorem o podobnych charakterystykach na amd64:
- Serwer Linux (2xIntel Xeon E5-2603 v4 (6 rdzeni, 1,70 GHz), 64 GB DDR4, 2xFC-adapter 16G 2 porty) – 1 szt.
- Switch FC 16 G – 2 szt.
- System Aerodisk Engine N2 (2xIntel Xeon E5-2603 v4 (6 rdzeni, 1,70 GHz), 32 GB DDR4, 2xFE FC-adapter 16G 2 porty, 12xSAS SSD 960 GB) — 1 szt.
Ważna uwaga: używane w teście procesory Elbrus 8C obsługują pamięć RAM tylko DDR3, co wprawdzie jest „złe, ale nie na długo”. Elbrus 8CV (na razie nie ma go w ofercie, ale wkrótce będzie) obsługuje DDR4.
Metodyka testowania
Do generowania obciążenia użyliśmy popularnego i sprawdzonego programu Flexible IO (FIO).
Obie macierze dyskowe zostały skonfigurowane zgodnie z naszymi zaleceniami dotyczącymi ustawień, opierając się na wymaganiach dotyczących wysokiej wydajności przy dostępie blokowym, dlatego używamy puli dysków DDP (Dynamic Disk Pool). Aby nie zniekształcać wyników testów, wyłączamy na obu macierzach kompresję, deduplikację i pamięć RAM.
Utworzono 8 D-LUN w RAID-10 po 500 GB każdy, łączna pojemność użyteczna wynosi 4 TB (czyli około 70% od możliwej pojemności użytecznej tej konfiguracji).
Będą przeprowadzane główne i popularne scenariusze użycia macierzy dyskowych, w szczególności:
pierwsze dwa testy emulują pracę transakcyjnej bazy danych. W tej grupie testów interesują nas IOPS i opóźnienia.
1) Losowe odczyty małymi blokami 4k
a. Rozmiar bloku = 4k
b. Odczyt/zapis = 100%/0%
c. Liczba wątków = 8
d. Głębokość kolejki = 32
e. Charakter obciążenia = Całkowicie losowe
2) Losowe zapisy małymi blokami 4k
a. Rozmiar bloku = 4k
b. Odczyt/zapis = 0%/100%
c. Liczba wątków = 8
d. Głębokość kolejki = 32
e. Charakter obciążenia = Całkowicie losowe
drugie dwa testy emulują pracę analitycznej części bazy danych. W tej grupie testów również interesują nas IOPS i opóźnienia.
3) Sekwencyjny odczyt małymi blokami 4k
a. Rozmiar bloku = 4k
b. Odczyt/zapis = 100%/0%
c. Liczba wątków = 8
d. Głębokość kolejki = 32
e. Charakter obciążenia = Sekwencyjne
4) Sekwencyjny zapis małymi blokami 4k
a. Rozmiar bloku = 4k
b. Odczyt/zapis = 0%/100%
c. Liczba wątków = 8
d. Głębokość kolejki = 32
e. Charakter obciążenia = Sekwencyjne
trzecia grupa testów emuluje pracę strumieniowego odczytu (np. transmisje na żywo, przywracanie kopii zapasowych) i strumieniowego zapisu (np. monitoring wideo, rejestrowanie kopii zapasowych). W tej grupie testów interesują nas już nie IOPS, ale MB/s oraz opóźnienia.
5) Sekwencyjny odczyt dużymi blokami 128k
a. Rozmiar bloku = 128k
b. Odczyt/zapis = 0%/100%
c. Liczba wątków = 8
d. Głębokość kolejki = 32
e. Charakter obciążenia = Sekwencyjne
6) Sekwencyjny zapis dużymi blokami 128k
a. Rozmiar bloku = 128k
b. Odczyt/zapis = 0%/100%
c. Liczba wątków = 8
d. Głębokość kolejki = 32
e. Charakter obciążenia = Sekwencyjne
Każdy test będzie trwał godzinę, nie uwzględniając czasu rozgrzewania macierzy wynoszącego 7 minut.
Wyniki testów
Wyniki testów zostały zebrane w dwóch tabelach.
Elbrus 8C (macierz dyskowa Aerodisk Wschód 2-E12)

Intel Xeon E5-2603 v4 (macierz dyskowa Aerodisk Engine N2)

Wyniki okazały się bardzo interesujące. W obu przypadkach dobrze wykorzystaliśmy moc obliczeniową macierzy (70-90% wykorzystania), a taki stan rzeczy wyraźnie ujawnia zarówno zalety, jak i wady obydwu procesorów.
W obu tabelach na zielono zaznaczone są testy, w których procesory „czują się pewnie” i osiągają dobre wyniki, natomiast na pomarańczowo zaznaczone są sytuacje, które procesory „nie lubią”.
Mówiąc o losowym obciążeniu małymi blokami, to:
- z punktu widzenia losowego odczytu Intel zdecydowanie wyprzedza Elbrusa, różnica wynosi 2 razy;
- z punktu widzenia losowego zapisu zdecydowanie remisu, oba procesory osiągnęły mniej więcej podobne i godne wyniki.
W przypadku sekwencyjnego obciążenia małymi blokami obraz jest inny:
- zarówno w przypadku odczytu, jak i zapisu Intel znacząco (2 razy) wyprzedza Elbrus. Przy tym, chociaż wskaźnik IOPS dla Elbrusa jest niższy niż dla Intela, wygląda przyzwoicie (200-300 tysięcy), to opóźnienia są wyraźnym problemem (trzykrotnie wyższe niż w przypadku Intela). Wniosek, obecna wersja Elbrusa 8С bardzo „nie lubi” sekwencyjnych obciążeń małymi blokami. Wyraźnie jest nad czym pracować.
Natomiast w przypadku sekwencyjnego obciążenia dużymi blokami obraz jest całkowicie odwrotny:
- oba procesory osiągnęły mniej więcej równy wynik w MB/s, ale jest jedno ALE… Wskaźniki opóźnień dla Elbrusa są 10 (dziesięć, Karl!!!) razy lepsze (czyli niższe) niż podobnego procesora od Intela (0,4/0,5 ms w porównaniu do 5,1/6,5 ms). Na początku pomyśleliśmy, że to błąd, dlatego sprawdziliśmy wyniki ponownie, przeprowadziliśmy test powtórny, ale test powtórny pokazał ten sam obraz. To poważna przewaga Elbrusa (i architektury e2k w ogóle) nad Intelem (a tym samym nad architekturą amd64). Miejmy nadzieję, że ten sukces się rozwinie.
Jest jeszcze jedna interesująca cecha Elbrusa, na którą uważny czytelnik może zwrócić uwagę, patrząc na tabelę. Jeśli spojrzeć na różnicę wskaźników odczytu i zapisu Intela, to we wszystkich testach odczyt przewyższa zapis średnio o około 50%+. To norma, do której wszyscy (w tym my) się przyzwyczaili. Jeśli spojrzeć na Elbrusa, to wskaźniki zapisu są znacznie bliższe wskaźnikom odczytu, odczyt przewyższa zapis, zazwyczaj o 10-30%, nie więcej.
Co to oznacza? To, że Elbrus "bardzo lubi" zapis, a to z kolei oznacza, że ten procesor będzie bardzo przydatny w zadaniach, gdzie zapis wyraźnie przeważa nad odczytem (kto powiedział, że to prawo Jorowej?), co również jest niewątpliwą zaletą architektury e2k, a tę zaletę należy rozwijać.
Wnioski i najbliższa przyszłość
Porównawcze testy procesorów średniej klasy Elbrus i Intel w zadaniach przechowywania danych wykazały zbliżone i równie godne wyniki, przy czym każdy procesor pokazał swoje interesujące cechy.
Intel znacznie przewyższył Elbrus w losowym odczycie małymi blokami, a także w sekwencyjnym odczycie i zapisie małymi blokami.
W przypadku losowego zapisu małymi blokami oba procesory wykazują równe wyniki.
Pod względem wskaźników opóźnienia Elbrus wygląda znacznie lepiej niż Intel w obciążeniu strumieniowym, to znaczy w sekwencyjnym odczycie i zapisie dużymi blokami.
Ponadto, w przeciwieństwie do Intela, Elbrus radzi sobie równie dobrze zarówno z obciążeniami odczytu, jak i zapisu, podczas gdy w przypadku Intela odczyt zawsze jest znacząco lepszy od zapisu.
Na podstawie uzyskanych wyników można wyciągnąć wniosek o zastosowaniu systemów przechowywania danych Aerodisk Wschód na procesorze Elbrus 8C w następujących zadaniach:
- systemy informacyjne z przewagą operacji zapisu;
- dostęp do plików;
- transmisje online;
- monitoring wideo;
- kopie zapasowe;
- treści multimedialne.
Zespół MCST ma jeszcze nad czym pracować, ale efekty ich pracy są już widoczne, co oczywiście cieszy.
Testy były przeprowadzane na jądrze Linux dla e2k w wersji 4.19, a obecnie w beta-testach (w MCST, w Bazalt SPO, a także u nas, w Aërodisku) znajduje się jądro Linux 5.4-e2k, w którym, oprócz wszystkiego, co inne, poważnie przekształcono planistę oraz wiele optymalizacji dla szybkich dysków SSD. Specjalnie dla jąder wersji 5.x.x, firma MCST wprowadza nowy kompilator LCC w wersji 1.25. Wstępne wyniki wskazują, że na tym samym procesorze Elbrus 8C, stworzone nowym kompilatorem nowe jądro, otoczenie jądra, narzędzia systemowe i biblioteki oraz oprogramowanie Aërodisk WOSTOK pozwolą na uzyskanie jeszcze większego wzrostu wydajności. I to bez zmiany sprzętu — na tym samym procesorze i z tymi samymi częstotliwościami.
Spodziewamy się wydania wersji Aërodisk WOSTOK opartej na jądrze 5.4 pod koniec roku i jak tylko prace nad nową wersją zostaną zakończone, zaktualizujemy wyniki testów i opublikujemy je również tutaj.
Jeśli teraz wrócimy na początku artykułu i odpowiemy na pytanie, kto ma rację: pesymiści, którzy mówią, że Elbrus jest „beznadziejny” i nigdy nie dogoni czołowych producentów procesorów, czy może jednak optymiści, którzy twierdzą, że „już prawie dogoniliśmy i wkrótce prześcigniemy”? Jeśli wyjdziemy nie z stereotypów i religijnych uprzedzeń, a z rzeczywistych testów, to zdecydowanie rację mają optymiści.
Elbrus już teraz pokazuje dobre wyniki, jeśli porównamy go z procesorami amd64 średniej klasy. Do górnej części linii serwerowych procesorów Intel czy AMD 8-ki Elbrusa, oczywiście, jest daleko, ale też nie był do tego stworzony, do tego będą wydane procesory 16C i 32C. Wtedy porozmawiamy.
Rozumiemy, że po tym artykule pytań dotyczących Elbrusa będzie jeszcze więcej, dlatego postanowiliśmy zorganizować jeszcze jeden webinar online „OkołoIT”, aby na te pytania odpowiedzieć na żywo.
Tym razem gościem będzie zastępca dyrektora generalnego firmy MCST, Konstantin Truskin. Na webinar można się zapisać pod linkiem poniżej.
→
Dziękujemy wszystkim, jak zwykle czekamy na konstruktywną krytykę i interesujące pytania.
Źródło: habr.com
