>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C

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.

Logo DAOS

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.

  1. Zespoły trenujące ogromne sieci neuronowe na TensorFlow, gdzie ładowanie zbiorów danych stało się wąskim gardłem.
  2. Inżynierowie danych pracujący z rozproszoną analityką na Hadoop i Spark.
  3. Laboratoria naukowe i klastry HPC, gdzie standardowe Lustre lub GPFS przestały sobie radzić.
  4. 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