Jak DAOS wydobywa maksymalną wydajność z pamięci NVMe i SCM
Gdy standardowy system plików zaczyna się dławić na milionach małych losowych operacji wejścia/wyjścia, programiści zazwyczaj szukają obejść. Znana historia: nowoczesne dyski NVMe działają z zawrotną szybkością, ale standardowy stos jądra Linuxa poświęca mnóstwo czasu na blokady i przełączania kontekstu.

Specjaliści z Linux Foundation rozwijają DAOS (Distributed Asynchronous Object Storage). To rozproszony system magazynowania obiektów z kodem źródłowym otwartym, napisanym w C. Został zaprojektowany specjalnie dla pamięci nieulotnej (NVM), modułów Storage Class Memory i dysków NVMe.
Na czym polega idea
Tradycyjne rozwiązania storage próbują na siłę dopasować stary model POSIX do szybkiej pamięci. To generuje wąskie gardła. DAOS idzie inną drogą: projekt całkowicie rezygnuje z tradycyjnego stosu wejścia/wyjścia jądra.
Zamiast znanych plików i folderów, system oferuje strukturę klucz-wartość z asynchronicznym wejściem/wyjściem transakcyjnym. Strumienie danych nie blokują się nawzajem podczas zapisu, a dostęp do sprzętu odbywa się bezpośrednio przez biblioteki SPDK i PMDK.
Jakie funkcje oferuje projekt
Deweloperzy wbudowali w architekturę kilka podstawowych możliwości do pracy z dużymi wolumenami danych.
- Asynchroniczne transakcje nieblokujące dla równoległych zapisów
- Weryfikacja integralności danych od końca do końca od klienta do magazynu
- Automatyczne odzyskiwanie po awarii poszczególnych węzłów
- Elastyczne skalowanie klastra bez przerwy w działaniu usługi
Ciekawym aspektem są interfejsy. W przeciwieństwie do wąsko wyspecjalizowanych magazynów KV, DAOS oferuje wygodne wrappery klienta. Możesz pracować z nim przez natywny słownik Pythona, połączyć się ze Sparkiem, przepuścić dane przez TensorFlow-IO lub użyć bibliotek HDF5 i MPI-IO tradycyjnych dla oprogramowania naukowego. Dla kompatybilności ze starszym oprogramowaniem dostępna jest emulacja równoległego systemu plików.
Co pod maską i jakie są niuanse
Kod jest napisany w C, a repozytorium istnieje od 2016 roku. Projekt zgromadził około tysiąca gwiazdek na GitHubie, ale nie należy spodziewać się łatwego wdrożenia. To nie jest słodka utilitka CLI, którą instalujesz jednym poleceniem.
Pełne działanie DAOS wymaga wyspecjalizowanego sprzętu z obsługą NVMe i najlepiej pamięci nieulotnej (SCM). Nie będziesz w stanie przetestować koncepcji przy budżecie kilku tanich serwerów chmurowych. Skonfigurowanie płaszczyzny kontrolnej i bibliotek klienta wymaga solidnego zrozumienia stosów sieciowych i infrastruktury.
Logi błędów i dokumentacja są szczegółowe, ale obszerne. Jeśli coś pójdzie nie tak podczas budowania, będziesz musiał przeszukać logi lub szukać pomocy na Slacku społeczności i forach.
Kto powinien spróbować
Projekt nie został stworzony dla zwykłych stron internetowych ani małych baz danych PostgreSQL. Jego nisza to infrastruktura o kolosalnych wymaganiach przepustowości.
- Zespoły trenujące ogromne sieci neuronowe na TensorFlow, gdzie ładowanie zbiorów danych stało się wąskim gardłem.
- Inżynierowie danych pracujący z rozproszoną analityką na Hadoop i Spark.
- Laboratoria naukowe i klastry HPC, gdzie standardowe Lustre lub GPFS przestały sobie radzić.
- Deweloperzy systemów wysokiego obciążenia tworzący własny magazyn na surowych dyskach NVMe.
Podsumowanie
DAOS to doskonały przykład tego, jak architektura oprogramowania dostosowuje się do nowego sprzętu. Projekt jest złożony, wyspecjalizowany i wymagający pod względem infrastruktury, ale w swojej dziedzinie rozwiązuje realny problem narzutu systemowego. Jeśli budujesz magazyn dla zadań uczenia maszynowego lub analizy dużych zbiorów danych, warto zajrzeć do dokumentacji.
Powiązane projekty