Pamięć zawsze była jedynym rodzajem sprzętu, który spełniał obietnice ogromnych prędkości. Ma jednak kilka wad: jest droga, ma ograniczoną pojemność i nie jest trwała (aby zachować dane, pamięć musi być zasilana, co dodatkowo komplikuje sytuację, ponieważ wymaga okresowego odświeżania). Około trzy lata temu Intel i Micron ogłosiły technologię 3DXPoint, która miała być pierwszym krokiem w kierunku pamięci trwałej. Chociaż technologia ta nie była tak szybka jak pamięć, była znacznie szybsza niż pamięć flash i znacznie bardziej ekonomiczna. Dostrzegając potencjał pamięci trwałej, firma MemVerge stworzyła ją, aby go wykorzystać.
Pierwsze urządzenia 3D XPoint, które widzieliśmy, były bardziej ukierunkowane na pamięć masową. Z czasem Intel wykorzystał pamięć trwałą 3D XPoint (PMem) do stworzenia szybszego dysku SSD. Później Intel ogłosił moduł pamięci trwałej, który był montowany w gnieździe DIMM i stanowił rozszerzenie pamięci DRAM. Podczas gdy w przeszłości stosowano pamięć do szybkich zastosowań i pamięć masową do dużych potrzeb, PMem zaczął zacierać granicę między tymi dwoma rozwiązaniami. MemVerge stara się połączyć to, co najlepsze z obu światów, zapewniając wydajność pamięci DRAM z dużą pojemnością i trwałością.
Firma MemVerge badała rynek pamięci trwałej i opracowała oprogramowanie, które pozwala technologii PMem w pełni wykorzystać jej potencjał, zamiast wykorzystywać ją jako pamięć podręczną, warstwę szybkości lub ekspander pamięci. Firma wykorzystuje to, co nazywa przetwarzaniem Big Memory, aby przekształcić środowiska oparte wyłącznie na pamięci DRAM w tańsze, a co ważniejsze, w środowiska o wyższej gęstości pamięci, wykorzystujące zarówno pamięć DRAM, jak i PMem. Osiąga to poprzez wirtualizację obu tych elementów w pulę pamięci definiowanej programowo, która również świadczy usługi definiowane programowo. Ponadto oprogramowanie oferuje warstwę abstrakcji, która pozwala wszystkim aplikacjom w centrum danych korzystać z nowych typów pamięci, połączeń pamięci, procesorów i alokatorów pamięci, aby sprostać nowoczesnym i rozwijającym się aplikacjom i obciążeniom.
We wrześniu ubiegłego roku firma MemVerge udostępniła publicznie swoją aplikację Memory Machine . Oprogramowanie jest oferowane w dwóch wersjach: Standardowej, która wirtualizuje adresowalną bajtowo pamięć DRAM i pamięć PMem, przyspieszając działanie aplikacji i obniżając koszty, ale nie obsługuje trwałości; oraz AdvancedVersion, która oferuje wszystkie powyższe funkcje z włączoną trwałością, a także usługi pamięci klasy korporacyjnej oparte na migawkach pamięci ZeroIO.
Migawki w pamięci ZeroIO, jak sama nazwa wskazuje, umożliwiają tworzenie migawek pamięci DRAM i PMem z zerowym wykorzystaniem operacji wejścia/wyjścia (zeroIO) do pamięci masowej. Dzięki temu pamięć DRAM, która zazwyczaj jest niestabilna i o niskiej dostępności, staje się warstwą o wysokiej dostępności. Migawki ZeroIO umożliwiają również tzw. podróż w czasie, umożliwiając powrót do poprzednich migawek. Dostępna jest funkcja automatycznego zapisywania, która przywraca aplikacje do poprzedniej migawki w przypadku awarii. Migawki umożliwiają tworzenie cienkich klonów bez konieczności zwiększania zasobów pamięci. Migawki można również migrować na inne serwery i wykorzystywać do tworzenia nowych instancji aplikacji.
Zarządzanie maszyną pamięci MemVerge
MemVerge Memory Machine ma całkiem elegancki interfejs graficzny. Globalny panel wyświetla elementy, których oczekujemy od pamięci masowej. Różnice w tym przypadku polegają na tym, że DRAM i PMem są głównymi monitorowanymi elementami, a ich wykorzystanie jest łatwo widoczne. U góry znajdują się zakładki dla hostów, instancji aplikacji, migawek i alertów.
Po kliknięciu przycisku Home po lewej stronie pojawiają się podstawowe informacje o systemie (adres IP, system operacyjny, wersja jądra, procesor), a także szczegółowe informacje na temat wykorzystania pamięci i PMem oraz wydajności.
Użytkownicy mogą dodatkowo przeanalizować dane dotyczące pamięci, wyświetlając raport o jej wykorzystaniu w ujęciu godzinowym. Raport ten pokazuje również typ pamięci (PMem czy DRAM).
Użytkownicy mogą przeglądać interfejsy API RESTful usługi Memory Machine i je konfigurować.
Migawki stanowią istotną część rozwiązania Memory Machine, ale zajmiemy się tym w części poświęconej wydajności.
Konfiguracja
W naszym laboratorium wykorzystaliśmy maszynę pamięci MemVerge Memory Machine na komputerze Supermicro SYS-2029U-TN24R4T o następujących parametrach:
| Model sprzętu | Supermicro SYS-2029U-TN24R4T |
| CPU | 2x procesor Intel(R) Platinum(R) 8270 @ 2.70 GHz, 26 rdzeni |
| DRAM | DDR4 192GB |
| PMem | 12x128GB |
| Dysk SSD systemu operacyjnego | Dysk SSD SATA 1TB |
| OS | 8.2.2004 CentOS |
| Jądro | 4.18.0-193.19.1.el8_2.x86_64 |
Wydajność maszyny pamięci MemVerge
Nasz standardowy zestaw testów nie miałby tutaj sensu, ponieważ MemVerge Memory Machine jest ukierunkowany na obciążenia i aplikacje wymagające działania w pamięci. Nasze testy porównawcze zazwyczaj dotyczą obciążeń normalnych lub o wysokim obciążeniu, spotykanych w rzeczywistych warunkach pracy IT. Zamiast tego, przyjrzymy się kilku różnym testom, a konkretnie porównaniom pamięci DRAM z pamięcią masową (PMem) i pamięcią masową (DRAM + PMem) oraz ich skutkom. W tej recenzji wykorzystamy KDB Performance zarówno do testu zbiorczego wstawiania i odczytu, jak i Redis Quick Recovery z ZeroIO Snapshot oraz Redis Clone z ZeroIO Snapshot.
Testowanie wydajności KDB
Baza danych Kx kdb+ to oparta na pamięci baza danych szeregów czasowych. Jest znana ze swojej szybkości i wydajności, dlatego cieszy się dużą popularnością w branży usług finansowych. Jednym z głównych ograniczeń dla kdb jest ograniczona pojemność pamięci DRAM. MemVerge Memory Machine idealnie się tu sprawdza, dzięki czemu kdb może w pełni wykorzystać potencjał PMem, zwiększając przestrzeń pamięci, z wydajnością porównywalną z pamięcią DRAM. W teście masowej operacji wstawiania danych przeanalizowaliśmy pojedyncze operacje wstawiania danych, 10, 100, 1000, 10000, 15000, 20000 i 25000 operacji wstawiania danych, a ich liczba wyniosła miliony operacji wstawiania danych na sekundę.
W przypadku wkładki zbiorczej KDB obserwujemy interesujące rezultaty. Przy pojedynczej wkładce wszystkie trzy osiągnęły podobne wyniki. W przypadku mniejszych partii, pamięć DRAM jest najwydajniejsza. Wraz ze wzrostem wielkości partii powyżej 10 000, Memory Machine przejmuje prowadzenie nad pamięcią DRAM, a PMem zajmuje ostatnie miejsce w każdej partii.
Następnie przyjrzeliśmy się kdb+ z testem odczytu. Tutaj konfiguracja testu jest nieco inna. Test odczytu jest taki sam, ale tym razem sprawdziliśmy tylko pamięć DRAM, tylko pamięć PMem, a następnie pamięć PMem z 20 GB lub 40 GB pamięci podręcznej DRAM. Tylko pamięć DRAM osiągnęła 4.2 GB/s, pamięć PMem osiągnęła tylko 2.9 GB/s, z 20 GB pamięci podręcznej DRAM, Memory Machine osiągnęła niemal taką samą wydajność jak tylko pamięć DRAM, osiągając 3.9 GB/s, a z 40 GB pamięci podręcznej zaobserwowaliśmy najwyższą wydajność na poziomie 4.8 GB/s. Co ciekawsze, te dwa ostatnie testy nadal zapewniają wystarczającą ilość pamięci DRAM do innych zadań.
Testowanie migawek Redis
Redis to otwartoźródłowy magazyn danych w pamięci, wykorzystywany jako baza danych, pamięć podręczna i broker komunikatów. Jest bardzo popularny i wydajny, dlatego idealnie nadaje się do testowania wydajności MemVerge Memory Machine. Gdy Redis działa na MemVerge Memory Machine, pamięć DRAM i PMem są przydzielane do Redis. Następnie migawki MemVerge ZeroIO zapisują strony pamięci aplikacji bez operacji wejścia/wyjścia na pamięci masowej. W przypadku awarii Redisa, wszystkie migawki danych w PMem są trwałe. Odzyskiwanie po awarii polega po prostu na wskazaniu istniejących danych w PMem bez konieczności przenoszenia danych z pamięci masowej.
W tej sekcji przetestujemy migawkę MemVerge ZeroIO pod kątem szybkiego odzyskiwania.
Najpierw przyjrzymy się funkcji Redis Quick Recovery z funkcją ZeroIO Snapshot. W przeciwieństwie do testów wydajnościowych, tutaj pokażemy funkcjonalność i łatwość obsługi. Po zainstalowaniu Redis i uruchomieniu bazy danych logujemy się do Memory Machine i sprawdzamy takie dane, jak zużycie PMem.
Na karcie aplikacji możemy zobaczyć, że serwer Redis jest uruchomiony.
Podczas działania programu wykonujemy kilka migawek. Oczywiście, jeśli migawki nie zostaną wykonane, nie da się ich przywrócić.
Zawsze warto zadbać o bezpieczeństwo, zawsze sprawdź dokładnie, czy zrobiliśmy jakieś zdjęcia.
Gdy już je mamy, wywołujemy awarię bazy danych Redis. Wybieramy migawkę i przywracamy ją, po krótkiej przerwie znów działamy.
Klon Redis ze migawką ZeroIO
Tutaj wykonujemy kilka tych samych kroków, co powyżej. Po utworzeniu migawki możemy ją przywrócić jako klon z nową przestrzenią nazw i nowym adresem IP. Łączymy się z klonem z innego hosta i widzimy, że zajmuje on mniej więcej tyle samo pamięci.
Wszystkie powyższe czynności można wykonać również za pomocą wiersza poleceń (CLI), jeśli ktoś woli.
Wniosek
MemVerge Memory Machine to rozwiązanie SDS, którego celem jest połączenie wydajności pamięci z trwałością PMem. PMem jest zazwyczaj używany jako pamięć podręczna w celu przyspieszenia działania pamięci masowej. Chociaż w wielu przypadkach jest to korzystne dla pamięci masowej, aplikacje w pamięci potrzebują wydajności pamięci, a nie pamięci podręcznej. MemVerge wirtualizuje zarówno DRAM, jak i PMem w pule pamięci definiowanej programowo z usługami definiowanymi programowo. Memory Machine przekształca pamięć DRAM w warstwę o wysokiej dostępności dzięki wykorzystaniu migawek w pamięci zeroIO. ZeroIO umożliwia tworzenie cienkich klonów bez obciążania zasobów pamięci.
W miarę jak wkraczamy w nowe kategorie, będziemy musieli wdrożyć nowe testy wydajności i testy porównawcze. Testowanie pamięci SDS z naszymi standardowymi testami porównawczymi nie byłoby przydatne, ponieważ nie do tego jest ona przeznaczona. Zamiast tego wykorzystaliśmy KDB Performance zarówno do testu zbiorczego wstawiania i odczytu, jak i Redis Quick Recovery z ZeroIO Snapshot oraz Redis Clone z ZeroIO Snapshot. Testy przeprowadzono na serwerze Supermicro SYS-2029U-TN24R4T, choć powinny one działać na sprawdzonych serwerach obsługujących moduły Intel Optane PMem.
W przypadku KDM zbiorczo testowaliśmy wiele rozmiarów partii, patrząc na DRAM, PMem i kombinację obu za pomocą Memory Machine. Ponieważ partie zaczynały się od małych, nie było zaskoczeniem, że DRAM ma najlepszą wydajność. Co było naprawdę interesujące, to to, że wraz z coraz większym obciążeniem zasobów podczas testu, MemVerge radził sobie coraz lepiej. W przypadku odczytu KDM zaobserwowaliśmy podobne trendy. DRAM działał naprawdę dobrze, co nie jest zaskoczeniem. PMem radził sobie dobrze, ale znacznie gorzej niż DRAM. Z zaledwie 20 GB pamięci podręcznej dla DRAM z Memory Machine, osiągnął on wydajność 3.9 GB/s w porównaniu z 4.2 GB/s dla samej pamięci DRAM. Dając MemVerge 40 GB pamięci DRAM na pamięć podręczną, uzyskano najlepszą ogólną wydajność na poziomie 4.8 GB/s, pozostawiając jednocześnie dużo pamięci DRAM na inne zadania.
Drugą częścią testów wydajnościowych były Redis Quick Recovery z ZeroIO Snapshot oraz Redis Clone z ZeroIO Snapshot. Tutaj chodziło bardziej o funkcjonalność niż o mierzalną wydajność. Zasadniczo szybko wykonaliśmy migawki, wywołaliśmy awarię i mogliśmy szybko wrócić do działania.
Technologia PMem firmy Intel to niezwykle interesująca technologia, której wdrażanie było dość powolne ze względu na ograniczone możliwości łatwego wdrożenia i prawidłowego wykorzystania modułów. Dzięki MemVerge organizacje mogą wykorzystać potencjał technologii PMem w rozwiązaniu stworzonym specjalnie z myślą o tej technologii. Dla tych, którzy posiadają aplikacje, które mogą skorzystać z dużego i odpornego na zużycie zasobów pamięci oferowanego przez PMem, MemVerge zdecydowanie jest wart rozważenia.




Amazon