Cong Wang, odpowiedzialny za subsystem zarządzania ruchem (TC, Traffic Control) w jądrze Linux oraz rozwijający projekt Multikernel, zaprezentował nowy system plików DAXFS na liście programistów jądra Linux. DAXFS wykorzystuje pamięć operacyjną do przechowywania danych, działa w trybie tylko do odczytu i przypomina funkcjonalnością uproszczone systemy plików ramfs i tmpfs. Moduł jądra implementujący DAXFS oraz narzędzie mkdaxfs do tworzenia systemu plików zostały opublikowane na licencji GPLv2. Po przeglądzie rozważana jest możliwość integracji DAXFS do podstawowej struktury jądra.
Kluczową cechą nowego systemu plików jest wykorzystanie subsystemu DAX (Direct Access) do pracy z pominięciem pamięci podręcznej stron i bezpośredniego dostępu do współdzielonej pamięci fizycznej. W ramfs i tmpfs zawartość jest przechowywana w pamięci podręcznej stron, co w przypadku korzystania z jednego systemu plików w kilku kontenerach lub jądrach uruchamianych przy użyciu technologii Multikernel prowadzi do umieszczania kilku kopii danych w pamięci fizycznej. Napełnianie ramfs i tmpfs wymaga także wykonania zbędnych operacji kopiowania bez możliwości mapowania istniejącego obszaru pamięci.
Bezpośredni dostęp do pamięci w DAXFS pozwala na wyeliminowanie zbędnych operacji kopiowania i organizację pracy z pominięciem tradycyjnego stosu wejścia/wyjścia opartego na urządzeniach blokowych i mechanizmach buforowania. Umożliwia to także pozbycie się fragmentacji alokacji pamięci przy współdzieleniu jednego systemu plików w różnych kontenerach i jądrach multikernel. DAXFS działa w trybie Zero-Copy i bezpośrednio dostarcza zawartość plików z pamięci, eliminując nadmierne duplikowanie danych w pamięci podręcznej stron oraz umożliwiając mapowanie ciągłych obszarów fizycznej pamięci do każdego egzemplarza kontenera lub jądra. Dodatkowo wspierane jest korzystanie z API dma-buf do wykorzystania pamięci eksportowanej przez GPU, FPGA/SmartNIC lub urządzenia CXL.
System plików działa w trybie tylko do odczytu i jest inicjowany przez załadowanie do pamięci wcześniej przygotowanego obrazu systemu plików, co upraszcza realizację, pozwala na wyeliminowanie operacji alokacji pamięci podczas działania i wyklucza skomplikowane mechanizmy zarządzania urządzeniem.
Kluczowym obszarem zastosowania DAXFS jest wykorzystanie go w połączeniu z technologią Multikernel, która pozwala na uruchamianie kilku niezależnych instancji jądra Linux na jednym fizycznym komputerze. Te instancje mają bezpośredni dostęp do zasobów sprzętowych i mogą być używane do uruchamiania wielu izolowanych środowisk systemowych.
DAXFS może być również wykorzystywany do organizacji wspólnego dostępu kilku kontenerów lub jąder do podstawowego obrazu systemu, umieszczonego w pamięci dzielonej; do zmniejszenia narzutów przy dostępie do informacji w pamięci sprzętowych akceleratorów; oraz do organizacji dostępu do pamięci z kilku hostów bez wejścia/wyjścia sieciowego lub do pamięci trwałej, wykorzystując urządzenia oparte na magistrali CXL (Compute Express Link).
Źródło: opennet.ru
