Zapewnienie efektywną i zoptymalizowaną wydajność pamięci masowej dla środowisk wirtualnych może być trudne do osiągnięcia, ponieważ jest wiele elementów w stosie infrastruktury, które muszą ze sobą współgrać.

Pamięć masową o optymalnej wydajności dla środowiska wirtualnego można dobrać przy pomocy zestawu wskaźników, które są wykorzystywane do pomiaru operacji wykonywanych w środowiskach wirtualnych.

Wyróżniamy trzy kluczowe wskaźniki wydajności, które są wspólne dla wszystkich środowisk: opóźnienie (czas dostępu, czas reakcji), przepustowość (pasmo) i IOPS.

Opóźnienie określa czas potrzebny do ukończenia jednej operacji I/O (wejścia wyjścia) i jest w istocie miarą tego, jak szybko pamięć masowa reaguje na zapytania odczytu lub zapisu danych.

Mierzona wartość jest przedstawiana w milisekundach, obecnie ten parametr w najszybszych dyskach SSD, jakie są dostępne na rynku, jest na poziomie ułamków milisekund. W idealnym środowisku parametr opóźnienia byłby równy zero, co skutkowałoby tym, że operacje odczytu i zapisu na dyski twarde pamięci masowej nie miałyby wpływu na jej wydajność. Ponieważ fizycznie jest to nie możliwe to każda operacja I/O obarczona jest pewnym opóźnieniem.

Największym wyzwaniem dla każdej pamięci masowej jest zminimalizowanie wartości opóźnienia, gdyż w większości przypadków w infrastrukturze IT to właśnie pamięć masowa jest tzw. wąskim gardłem. Mniejszy wskaźnik opóźnienia oznacza, krótszy czas oczekiwania na zakończenie operacji I/O a zatem szybsze wykonanie zadania.

W środowisku wirtualnym parametr opóźnienia ma bezpośredni wpływ na prędkość działania maszyn wirtualnych (VM) i pulpitów dostępowych. Zmniejszenie opóźnienia wskazuje na lepsze wykorzystanie zasobów procesora i pamięci operacyjnej.

W rezultacie w pamięciach masowych wdrażanych do środowisk wirtualnych implementuje się dyski SSD oraz możliwość zarządzania przepływem operacji I/O do macierzy dyskowej.  Technologia pamięci flash najczęściej wykorzystywana jest przy sprzętowym, czy też programowym “caching-u”, którego celem jest zredukowanie wartości opóźnienia do jak najmniejszych.

Przepustowość – Zdolność do przesłania ustalonej ilości danych w mierzonym czasie określa się mianem przepustowości lub pasma. Typowa przepustowość jest mierzona w jednostkach megabajt na sekundę (MBps).

Sieciowe pamięci masowe i urządzenia dyskowe mogą być definiowane przez dwa rodzaje przepustowości –  przepustowość stała i przepustowość szczytowa. Stała przepustowość to zdolność pamięci masowej do przesyłania danych ze stałą prędkością w długim okresie czasu. Szczytowa przepustowość wskazuje poziom jaki pamięć masowa jest w stanie osiągnąć, w krótkim okresie czasu.

W środowiskach typu VDI (virtual desktop infrastructure) bardzo ważna jest szczytowa przepustowość, przykładowo kiedy mamy do czynienia z “boot storms” – jest to moment, w którym do system loguje się wielu użytkowników i w tym samym czasie uruchamiają swoje wirtualne maszyny. Taka sytuacja generuje ogromną ilość operacji I/O i jeżeli macierz nie jest w stanie efektywnie tym zarządzać to automatycznie wzrasta nam opóźnienie.

Duża przepustowość ma istotne znaczenie także dla środowiska serwerów wirtualnych podczas gdy realizowane jest dynamiczne przenoszenie maszyn wirtualnych pomiędzy serwerami. Możliwość zmierzenia przepustowości i zrozumienie zapotrzebowania szczytowego jest krytyczne dla środowisk wirtualnych.

IOPS (input output operations per second) – IOPS jest miarą liczby indywidualnych zapytań odczytu/zapisu jaką pamięć masowa jest w stanie obsłużyć w ciągu jednej sekundy. Liczba ta jest ściśle powiązana z przepustowością, ale się od niej różni.

In many cases, vendors will use IOPS as a measure of the performance of their products, but these figures need to be considered alongside the size of data chunks being transferred in each operation.

W wielu przypadkach, producenci sieciowych pamięci masowych korzystają z IOPS jako parametru wydajności, ale należy pamiętać, że przy doborze odpowiedniej jednostki należy rozważyć wielkość bloków danych jakie będzie musiała obsługiwać macierz.

Przykładowo łatwiej jest przetwożyć wiele małych bloków o wielkości 4KB niż jeden duży o rozmiarze 1MB. Warto zwrócić też uwagę na to, że odczyt losowych danych jest bardziej czasochłonna niż ciągły zapis. Reasumując parametr IOPS musi być dokładnie osądzony pod kontem wielkości bloków przechowywanych na pamięci masowej oraz rodzaju operacji na nich wykonywanych.

Zależność między opóźnieniem, przepustowością i IOPS

Opóźnienie, IOPS i przepustowość są ściśle związane. Pamięć masowa, która będzie w stanie przetworzyć operacje I/O z małym opóźnieniem, będzie miała dużą wydajność IOPS. Liczba oblicza się z prostego wzoru 1/opóźnienie, więc jeżeli będzie na poziomie 3 milisekund (1/0.003) to otrzymamy 333 IOPS.

Pamięć masowa, która zapewni dużą liczbę IOPS dla dużych bloków danych będzie miała wysoką przepustowość, jej wartość oblicza się poprzez przemnożenie ilości IOPS przez wielkość I/O.

Pamięci masowe zarządzają operacjami I/O równolegle lub współbieżnie, co daje im możliwość przetworzenia w tym samym czasie więcej niż jedną operację I/O.

Współbieżność osiąga się przez doprowadzenie kilku niezależnych ścieżek do pamięci masowej i wykorzystaniu pamięci systemowej jako cache, w którym kolejkowane są transakcje. Ta metoda sprawia, że trzeba zastosować kolejny parametr pomiaru – długość kolejki (queue depth) – który opisuje ile zapytań I/O pamięć masowa jest w stanie obsłużyć jednocześnie.

Pojedynczy dysk posiada parametr długości kolejki na poziomie jedno lub dwucyfrowej, podczas gdy duża korporacyjna macierz dyskowa długość kolejki będzie miała na poziomie dziesiątek lub setek cyfr na jeden LUB, na jeden port lub kombinację obu.

Dzięki kolejkowaniu kilku zapytań razem pamięć masowa może zoptymalizować proces zapisu, tym samym redukując opóźnienie związane z przechowywaniem danych, jest to szczególnie skuteczne w przypadku dysków twardych, w ten sposób można znacznie zmniejszyć ruch głowicy.

Profil obciążenia oraz gdzie dokonywać pomiaru

Identyfikacja i zbieranie danych o poszczególnych wskaźnikach macierzy umożliwiają nam zrozumienie jaką wydajność daje nam dana pamięć masowa, ale wszystkie te informacje trzeba wykorzystać w kontekście profilu operacji I/O oraz gdzie pomiary zostały dokonane. A to dlatego, że każda aplikacja jest inna, co za tym idzie ma inne potrzeby.

Przykładem może być VDI i wirtualny serwer, gdzie ruch jest wysoce zróżnicowany ze względu na rozproszenie aktywnych danych w całej objętości wolumenu przechowującego wirtualne dyski. VDI to w 80% odczyt danych więc małe opóźnienie dla operacji I/O daje zauważalne przyspieszenie.

Miejsce pomiaru wskaźników jest także bardzo ważne, gdyż pomaga prawidłowo ocenić osiągi I/O na całej ścieżce transportu danych.

W dzisiejszych czasach jesteśmy w stanie monitorować operację I/O od początku do końca, dzięki czemu jesteśmy w stanie zweryfikować na którym etapie procesowania występuje opóźnienie. Pomiaru możemy dokonywać w trzech wymiarach, bezpośrednio na pamięci masowej, przy pomocy hypervisor-a lub z poziomu samego hosta.

Nie ma dobrych lub złych miejsce do pomiarów; każde daje perspektywy funkcjonowania systemu. Pomiary wykonane z poziomu pamięci masowej pokazują jak dobrze macierz radzi sobie z zewnętrznymi zapytaniami. Pomiary dokonane z poziomu hosta mogą przykładowo pokazać jak zawartość serwera ma wpływ na osiągi danego hosta, a pomiar przy pomocy hypervisor-a pokazuje efektywność sieci macierzy dyskowych.

Oba najbardziej popularne hypervisory (vSphere ESXi i Hyper-V) pozwalają na wygenerowania dużego obciążenia w celu optymalizacji osiągów pamięci masowej. Storage DRS w przypadku vSphere, potrafi również na podstawie historycznych pomiarów opóźnień I/O podczas migracji VM zaproponować optymalne osiągi. Podczas gdy Intelligent Placement w Hyper-V dokonuje kalkulacji bazując na IOPS VM.

Nie zapomnij o …

Wszystko o czym pisaliśmy wyżej bazuje tylko na technologii, ale trzeba pamiętać, że często o wyborze odpowiedniej pamięci masowej decyduje także budżet jakim dysponujemy. W tym przypadku wskaźnikiem będzie PLN/GB, który mierzy koszt pojemności. Jednak wszyscy wiemy, że w przypadku rozwiązań z pamięcią flash współczynnik PLN/GB jest znacznie większy niż w przypadku zwykłych mechanicznych dysków, dlatego w przypadku wymagających aplikacji ten współczynnika warto zastąpić parametrem PLN/IOPS.

Praktyka

Wzorcowym przykładem jak producenci macierzy powinni prezentować powyższe wskaźniki jest firma Qsan Technology. Prezentują wszystkie parametry, które nas interesują przy doborze macierzy dyskowej do środowiska wirtualnego. Firma Qsan Technology przygotowała bardzo dokładne raporty wydajności dla każdej pamięci masowej dedykowanej do sieci SAN. W ich raportach zawarto informacje o ilości IOPS dla różnych wielkości bloków, nie tylko dla tych przy których macierz ma najlepszą wydajność, żeby ładnie wyglądało to marketingowo. To samo w przypadku wydajności, nie dość, że pokazano wyniki dla różnych wielkości bloków to również zaprezentowano wyniki z podziałem na profil obciążenia, tj. zapis oraz odczyt losowy i sekwencyjny. Żeby tego było mało pokazano jakie wyniki macierz osiągają przy włączonym i wyłączonym cache.

Dla tych, którzy chcą zobaczyć jak wyglądają profesjonalne raporty poniżej linki do trzech najbardziej popularnych modeli: Qsan P400Q- S212Qsan P600Q-S212Qsan F600Q-S212

Dzięki takim raportom i przeczytaniu tego artykułu nie powinniście już mieć problemów z wyborem odpowiedniej sieciowej pamięci masowej. Jeżeli jednak nie wiecie ile IOPS potrzebujecie to zawsze możecie wypożyczyć macierz Qsan i sprawdzić we własnym środowisku czy spełni wasze wymagania.

Podsumowanie

Ze względu na losowe charakter środowiska wirtualnego, opóźnienie jest kluczowym wskaźnikiem, który należy brać pod uwagę podczas monitoringu osiągów pamięci masowych. Opóźnienie jest istotne zarówno gdy mamy jedną lub sto maszyn wirtualnych.

W momencie, gdy po uwagę bierzemy pojemność pamięci masowej, żeby mieć możliwość obsługi dużej ilości maszyn wirtualnych to wtedy bardzo ważna rolę gra przepustowość. Wynika to z tego, że możliwość skalowania środowiska wirtualnego wymaga odpowiedniego potencjału przepustowości. Jak już wspomnieliśmy szczytowe obciążenie, w krótkich okresach czasu generowane przez VDI dla operacji odczytu i zapisu będzie sprawiać spore problemy.

Z punktu widzenia hosta, IOPS jest parametrem, który najlepiej definiuje wydajność. Jest on także wykorzystywany zarówno w prywatnych, jak i wirtualnych infrastrukturach chmury.