Windows sprawdza się świetnie w wielu zastosowaniach i nie bez powodu jest najpopularniejszym systemem operacyjnym na świecie. Mimo to nie jest idealny, zwłaszcza jeśli chodzi o wdrażanie nowych standardów pamięci masowej. W związku z tym przedsiębiorcze firmy mają ogromne możliwości rozwoju rozwiązań dla systemów Windows. Wraz z rosnącą popularnością dysków SSD NVMe w przedsiębiorstwach, które stają się standardem w zakresie pamięci masowej serwerów SSD, rośnie zapotrzebowanie na możliwość udostępniania tej pamięci masowej. Niestety, w systemie Windows stanowi to problem, i tak było do niedawna. Na początku tego roku firma StarWind wprowadziła na rynek inicjator NVMe-oF dla systemu Windows.
Do momentu komercjalizacji StarWind oferował swój NVMe-oF Initiator dla systemu Windows jako darmowe narzędzie do tworzenia oprogramowania i zastosowań PoC. Nadal oferują darmową wersję dla tych, którzy chcą się nim pobawić, ale dzisiaj skupiamy się na wersji GA (ogólnie dostępnej). W rzeczywistości, jeśli rozważasz zakup NVMe-oF Initiatora dla systemu Windows, prawdopodobnie korzystasz z własności intelektualnej StarWind. Firma oferuje rozwiązanie w modelu OEM różnym partnerom, którzy muszą rozwijać swoją ofertę.
Inicjator NVMe-oF do konfiguracji systemu Windows
StarWind NVMe-oF Initiator dla systemu Windows to prosta instalacja na dowolnym hoście z systemem Windows. Nie wymaga specjalistycznego sprzętu ani dodatkowych komponentów systemu Windows. Oprogramowanie posiada certyfikat Windows (Server 2019 i Windows 10) i jest przetestowane pod kątem zgodności z głównymi dostawcami pamięci masowej NVMe-oF. W naszym scenariuszu mamy bardzo prostą konfigurację z jednym hostem pamięci masowej i czterema klientami.
Każdy z czterech klientów to serwery Dell PowerEdge R740 . Każdy z nich działa na dwóch procesorach Intel Xeon Gold 6130 o taktowaniu 2.1 GHz i 256 GB pamięci DRAM. Do łączności używamy kart sieciowych NVIDIA ConnectX-5 EN 100 GbE (MCX516A-CCAT). Na serwerach zainstalowany jest system Windows Server 2019 Standard Edition, wykorzystujący inicjator StarWind NVMe-oF dla systemu Windows w wersji 1.9.0.455. Do testów w systemie Linux użyliśmy systemu CentOS 8.4.2105 (jądro – 4.18.0-305.10.2) z interfejsem NVMe-CLI 1.12. Serwery są podłączone bezpośrednio do hosta pamięci masowej.
Hostem pamięci masowej jest serwer OEM firmy Intel (M50CYP2SB2U) wyposażony w dwa procesory Intel Xeon 8380 o taktowaniu 2.3 GHz i 512 GB pamięci DRAM. Ponownie użyliśmy kart sieciowych NVIDIA ConnectX-5 EN 100 GbE (MCX516A-CDAT), tym razem cztery w hoście. W tym przypadku korzystamy z systemu CentOS 8.4.2105 (jądro – 5.13.7-1.el8.elrepo) i pakietu SPDK w wersji 21.07.
W hoście używamy ośmiu dysków SSD Intel P5510 Gen4 NVMe. Dyski SSD są podzielone na dwie partie po cztery w celu dopasowania ich do procesorów w architekturze NUMA. Są skonfigurowane w macierzy RAID0 dla maksymalnej wydajności.
Inicjator NVMe-oF dla wydajności systemu Windows
W ramach tych testów przeprowadziliśmy następujące testy porównawcze za pośrednictwem FIO, wykorzystując inicjatory Linux i Windows.
- Odczyt losowy 4 KB – 16 wątki, głębokość kolejki 32
- Losowy zapis 4 KB – 8 wątki, 4 głębokość kolejki
- Odczyt losowy 64 KB – 4 wątki, głębokość kolejki 32
- Losowy zapis 64 KB – 4 wątki, 1 głębokość kolejki
- Odczyt sekwencyjny 1M – 2 wątki, głębokość kolejki 8
- Sekwencyjny zapis 1M – 1 wątek, 8 głębokości kolejki
Pojedynczy test trwa 3600 sekund (1 godzinę). Przed testem porównawczym operacji zapisu, pamięć masowa była najpierw rozgrzewana przez 3600 sekund (1 godzinę). Wszystkie testy przeprowadzono trzykrotnie, a jako wynik końcowy przyjęto wartość średnią.
W naszej pierwszej grupie badającej wydajność inicjatora Linux NVMeoF na czterech klientach zmierzyliśmy 5.54 M IOPS przy przepustowości 21.6 GB/s i opóźnieniu 0.369 ms podczas losowego odczytu 4K. Wydajność losowego zapisu 4K wyniosła 1.58 M IOPS przy przepustowości 6.2 GB/s i opóźnieniu 0.08 ms.
Przechodząc do transferów dużych bloków, zmierzyliśmy zarówno losowy odczyt 64 KB, jak i test sekwencyjny 1 MB, skupiając się na przepustowości w całej strukturze. W przypadku losowego odczytu 64 KB zmierzyliśmy 46.6 GB/s przy opóźnieniu 0.69 ms oraz 7.2 GB/s przy opóźnieniu 0.14 ms podczas zapisu. Sekwencyjny odczyt 1 MB wyniósł 42.9 GB/s przy odczycie z opóźnieniem 1.48 ms oraz 25.4 GB/s przy opóźnieniu 1.26 ms podczas zapisu.
Następnie przeszliśmy do systemu Windows, gdzie wykorzystaliśmy inicjator StarWind NVMeoF na tych samych czterech klientach. W tym przypadku zmierzyliśmy 4.17 mln IOPS w losowym odczycie 4K lub 16.3 GB/s przy opóźnieniu 0.35 ms. Losowy zapis 4K wyniósł 1.54 mln IOPS lub 6 GB/s przy opóźnieniu 0.07 ms.
Następnie przeszliśmy na większy rozmiar transferu 64 KB z tym samym profilem dostępu losowego. Tutaj zmierzyliśmy 46.6 GB/s odczytu z opóźnieniem 0.68 ms i 7.2 GB/s zapisu z opóźnieniem 0.13 ms. Przechodząc do naszego poprzedniego profilu obciążenia z rozmiarem transferu 1 MB i sekwencyjnym wzorcem dostępu, zmierzyliśmy 42.9 GB/s odczytu z opóźnieniem 1.38 ms i 25.2 GB/s zapisu z opóźnieniem 1.14 ms.
Porównując wyniki, wydajność systemów Windows i Linux była bardzo zbliżona, z wyjątkiem losowego odczytu 4K. We wszystkich pozostałych testach różnica w wydajności wynosiła mniej niż 3%. Główna różnica sprowadza się do obciążenia procesora podczas przepływu danych przez stos pamięci masowej systemu Windows. Wynosi ona od 2.7 do 3.7 raza, przy czym sam wzrost obciążenia procesora najbardziej zwiększa obciążenie procesora.
Przejście z 16% wykorzystania procesora w systemie Linux do 44% w systemie Windows to dość duży skok, ale przejście z 3.5% do 9% nie byłoby aż tak odczuwalne. W przypadku aplikacji, które muszą działać w systemie Windows lub w przypadku działów IT, które generalnie koncentrują się na systemie Windows, głównym celem StarWind było wprowadzenie możliwości i wydajności NVMeoF, co z pewnością udało im się osiągnąć.
Wniosek
Celem tej analizy nie jest określenie najlepszego ani najszybszego sposobu wdrożenia własnego rozwiązania NVMe-oF. Większość wdrożeń pamięci masowej jest powiązana z aplikacją, a nie z aplikacją, która podąża za pamięcią masową. Mimo to istnieje wiele powodów, dla których organizacja może chcieć korzystać z systemu Windows. Mogą to być konkretne aplikacje, istniejąca infrastruktura, względy finansowe lub szereg innych czynników, które sprawiają, że Windows jest preferowaną platformą. Przynajmniej teraz, dzięki inicjatorowi NVMe-oF firmy StarWind dla systemu Windows, mamy możliwość współużytkowania dysków SSD NVMe i umieszczania ich jak najbliżej systemów aplikacyjnych.
Pomijając na chwilę system operacyjny klienta, głównym ograniczeniem naszych testów są łącza sieciowe między systemami. W naszym przypadku, wykorzystując karty sieciowe 100 Gb/s, przeciążyliśmy sieć i osiągnęliśmy maksymalną przepustowość 46.6 GB/s zarówno w środowiskach Linux, jak i Windows. Nawet szczytowy test losowego odczytu 4 KB w systemie Windows wyniósł 16.3 GB/s, co oznaczałoby więcej niż sześć łączy 25 GbE dla losowego wejścia/wyjścia. Sieć odgrywa ostatecznie ważniejszą rolę dla NVMe-oF, ponieważ wydajność NVMe, niezależnie od jej podziału, może absorbować dużo ruchu.
Ostatecznie naszym celem było sprawdzenie, jak dobrze działa inicjator StarWind. Działa naprawdę świetnie. Biorąc pod uwagę alternatywę w postaci „Bez NVMe-oF dla Ciebie!” w systemie Windows, cieszymy się, że mamy jakiekolwiek opcje. Owszem, uprawnienie obciąża procesor, ale chociaż procentowe różnice między Linuksem a Windowsem są przerażające, poza losowymi odczytami 4K, odczuwalny wpływ jest minimalny. Jeśli nie masz pewności, czy to odpowiednie rozwiązanie, StarWind oferuje możliwość bezpłatnego wypróbowania. Instalacja jest tak prosta, że warto spróbować i przekonać się, jak dobrze NVMe-oF sprawdzi się w Twoich aplikacjach w systemie Windows.




Amazon