Pamięć masowa flash

Analiza stosowanych aplikacji

Przed wdrożeniem pamięci masowej flash ważnym zadaniem jest analiza wykorzystywanych w przedsiębiorstwie aplikacji pod kątem tego jakie generują obciążenia i jakiej w praktyce wymagają wydajności dostępu do pamięci. Bo większość aplikacji nie wymaga tak wydajnego dostępu do pamięci masowej jaki mogą zapewnić urządzenia wyposażone w układy flash. „Z reguły, w systemie wystarczy zainstalować tylko 5-10% pamięci flash by uzyskać maksymalną wydajność” uważa Adrian De Luca z HDS (Hitachi Data Systems). „Można przyjąć, że średnio 80% operacji I/O dotyczy 20% danych zapisywanych w pamięci masowej, a ze wzrostem liczby danych stosunek ten ma tendencję do wzrostu” dodaje.

W ogólności można wymienić kilka podstawowych parametrów aplikacji, które należy przeanalizować by ocenić efektywność planowanej inwestycji w pamięci flash.

Zobacz również:

Wrażliwość na opóźnienia

Jeśli aplikacja może tolerować opóźnienia odpowiedzi wynoszące dziesiątki milisekund to wdrożenie systemu flash w ogóle nie ma uzasadnienia. Natomiast w wypadku, gdy małe oraz stabilne opóźnienia mają znaczenie krytyczne dla działania oprogramowania, to wówczas pamięć masowa oparta o układy flash to rozwiązanie optymalne.

Tu trzeba jednak zwrócić uwagę, że nie wszystkie architektury pamięci wykorzystujących układy flash zostały zaprojektowane pod kątem stabilnej, wysokiej dostępności. Na przykład, dla zwiększenia niezawodności, dyski SSD są często wyposażone w wewnętrzne mechanizmy testowania systemu, a zwiększenie wydajności zapisu jest realizowane przez okresowe kasowanie niepotrzebnych (logicznie usuniętych) danych. Takie wewnętrzne procedury mogą chwilowo zmniejszać wydajność systemu pamięci, a więc wpływać na jego stabilne działanie.

Również asymetria wydajności procesów zapisu i odczytu musi być wzięta pod uwagę przy praktycznej ocenie przewidywanej wielkości opóźnień.

Więcej operacji zapisu czy odczytu?

Kolejnym elementem o którym warto pamiętać jest analiza wzorców korzystania przez aplikacje z pamięci masowej. Inaczej mówiąc chodzi o średni stosunek wykonywanych przez nie operacji zapisu do odczytu.

Na przykład w środowiskach VDI (wirtualne komputery PC) najczęściej przeważają operacje zapisu podczas gdy w bazach danych – odczytu.

Analiza aplikacji pod tym kątem ułatwia podjęcie racjonalnej decyzji, gdzie zastosowanie pamięci flash da największe korzyści. W ogólności, ponieważ odczyt danych jest szybszy niż zapis, im częściej aplikacja korzysta z odczytu tym większy jest zysk z zastosowania pamięci półprzewodnikowych i możliwość zmniejszenia opóźnień.

Nie oznacza to, że w wypadku aplikacji intensywnie zapisujących dane wdrożenie pamięci flash nie ma sensu, ale potencjalne zyski są po prostu mniejsze.

Następne pytanie na które trzeba odpowiedzieć, to ile operacji IOPS (zapisu/odczytu na sekundę) dana aplikacja wykonuje w praktyce?

Niektórzy producenci pamięci masowych chwalą się, że ich produkty zapewniają wydajność miliona lub więcej IOPS. Jeśli jednak konkretna aplikacja wykonuje tylko dziesiątki tysięcy IOPS, to z reguły wdrożenie systemu flash nie ma większego sensu, bo standardowe pamięci masowe wyposażone w dyski magnetyczne mogą zapewnić wystarczającą wydajność.

Rozmiar bloków danych

Większość programów testujących wydajność pamięci masowej zakłada, że standardowy rozmiar bloku zapisywanych danych to 4 KB. Wynika to głównie z tego, że w nowoczesnych dyskach magnetycznych stosuje się podział na sektory o pojemności właśnie 4096 bajtów. Standard taki został wprowadzony w celu uniknięcia niektórych problemów: umożliwia efektywny zapis dużych plików, choć kosztem mniejszych, a przede wszystkim ułatwia implementację silnych mechanizmów korekcji błędów, które są niezbędne zwłaszcza w wypadku dysków o największych pojemnościach. Bezpośrednio wielkość bloków danych nie ma nic wspólnego ani z aplikacjami, ani architekturą macierzy flash.

Ale warto zauważyć, że w wielu pamięciach masowych opartych na układach półprzewodnikowych stosuje się bloki o rozmiarze właśnie 4 KB. Wynika to z założenia przez ich projektantów, że użytkownicy już zoptymalizowali aplikacje pod kątem korzystania z takich porcji danych. Testy wykorzystujące takie bloki danych nie dają jednak obiektywnych wyników jeśli aplikacja nie została odpowiednio zoptymalizowana.

Na przykład, jeśli macierz flash zapisuje większe bloki danych, a aplikacja mniejsze to powoduje to zmniejszenie rzeczywistej wydajności systemu w porównaniu do możliwej do uzyskania. W praktyce, wielkość wykorzystywanych bloków danych jest różna zależnie od aplikacji i może sięgać 64 KB.

Dostęp sekwencyjny czy przypadkowy?

Czy wykorzystywane aplikacje zapisują/odczytują dane sekwencyjnie w postaci dużych plików czy też wymagają częstego dostępu do wielu mniejszych porcji informacji zapisanych w różnych miejscach pamięci?

W pierwszym wypadku dotyczy to aplikacji korzystających z dużych strumieni danych, na przykład wideo. W drugim, typowym przypadkiem są systemy zwirtualizowane, gdzie wiele różnych aplikacji uruchomionych w maszynach wirtualnych zapisuje/odczytuje nie powiązane ze sobą dane we współdzielonej pamięci masowej.

W ogólności można przyjąć regułę, że im bardziej operacje zapisu/odczytu są przypadkowe tym większy wzrost wydajności można uzyskać stosując pamięć flash zamiast klasycznych dysków. Wynika to z jej architektury, która umożliwia wydajny dostęp do danych niezależnie od tego w jakim obszarze zostały one zapisane.


TOP 200