Firma Red Hat opracowuje nowy system plików NVFS, który będzie wydajny w przypadku pamięci NVM

Mikuláš Patočka, jeden z twórców LVM i autor wielu wynalazkizwiązany z optymalizacją systemów magazynowych, pracując w Red Hat, wprowadzono nowy system plików na liście mailingowej deweloperów jądra Linuksa NVFS, mający na celu stworzenie kompaktowego i szybkiego FS dla układów pamięci nieulotnej (NVM, pamięć nieulotna, np. NVDIMM), łączącego wydajność pamięci RAM z możliwością trwałego przechowywania treści.

Przy opracowywaniu NVFS wzięto pod uwagę doświadczenia FS NOVA, stworzony specjalnie dla pamięci NVM w 2017 roku, ale nie zaakceptowany do jądra Linuksa i ograniczony obsługa jąder Linuksa od 4.13 do 5.1.
Proponowany FS NVFS jest znacznie prostszy niż NOVA (4972 linii kodu w porównaniu z 21459), zapewnia narzędzie fsck, ma wyższą wydajność, obsługuje rozszerzone atrybuty (xattrs), etykiety bezpieczeństwa, listy ACL i przydziały, ale nie obsługuje migawek. Architektura NVFS jest blisko
System plików Ext4 dobrze wpisuje się w model systemów plików opartych na podsystemie VFS, co pozwala zminimalizować liczbę warstw i zadowolić się modułem nie wymagającym łatek do jądra.

NVFS korzysta z interfejsu jądra DAX w celu uzyskania bezpośredniego dostępu do urządzeń pamięci trwałej z pominięciem pamięci podręcznej stron. Aby zoptymalizować działanie adresowalnej bajtowo pamięci NVM, zawartość dysku jest mapowana do liniowej przestrzeni adresowej jądra bez użycia tradycyjnej warstwy urządzeń blokowych i pośredniej pamięci podręcznej. Służy do przechowywania zawartości katalogu drzewo bazowe (drzewo radix), w którym każda nazwa pliku jest zahaszowana, a wartość skrótu jest używana podczas przeszukiwania drzewa.

Integralność danych jest zapewniona za pomocą „miękkie aktualizacje„(jak w UFS z FreeBSD i FFS z OpenBSD) bez użycia dziennika. Aby uniknąć uszkodzenia plików w systemie NVFS, operacje zmiany danych są pogrupowane w taki sposób, aby awaria nie mogła spowodować utraty bloków ani i-węzłów, a integralność struktur przywracana jest za pomocą narzędzia fsck. Narzędzie fsck działa w trybie wielowątkowym i zapewnia wydajność typu brute-force na poziomie 1.6 miliona i-węzłów na sekundę.

В Testy wydajności NVFS wykonał operację kopiowania drzewa źródeł jądra Linuksa na pamięć NVM około 10% szybciej niż NOVA, 30% szybciej niż ext4 i 37% szybciej niż XFS. W teście odzyskiwania danych NVFS był szybszy niż NOVA o 3%, a ext4 i XFS o 15% (ale z aktywną pamięcią podręczną dysku NOVA była o 15% wolniejsza).
W teście miliona operacji katalogowych NVFS uzyskał lepsze wyniki niż NOVA o 40%, ext4 o 22%, a XFS o 46%. Podczas symulacji aktywności DBMS system plików NVFS uzyskał lepsze wyniki niż NOVA o 20%, ext4 18 razy i XFS 5 razy. W teście fs_mark wydajność NVFS i NOVA okazała się w przybliżeniu na tym samym poziomie, podczas gdy ext4 i XFS pozostawały w tyle około 3 razy.

Opóźnienie tradycyjnych systemów plików w pamięci NVM wynika z faktu, że nie są one przeznaczone do adresowania bajtów, które jest wykorzystywane w pamięci nieulotnej, która wygląda jak zwykła pamięć RAM. Odczyt z dysków konwencjonalnych zapewnia atomowość operacji na poziomie odczytu/zapisu sektora, natomiast pamięć NVM zapewnia dostęp na poziomie pojedynczych słów maszynowych. Ponadto tradycyjne systemy plików starają się zmniejszać intensywność dostępu do nośnika, który jest uważany za oczywiście wolniejszy niż pamięć RAM, a także starają się grupować operacje, aby zapewnić sekwencyjny odczyt podczas korzystania z dysków twardych, przetwarzać kolejki żądań, zwalczać fragmentację i oddzielać priorytety różnych operacji. W przypadku pamięci NVM takie komplikacje są niepotrzebne, ponieważ prędkość dostępu do danych jest porównywalna z pamięcią RAM, a kolejność dostępu nie ma znaczenia.

Źródło: opennet.ru

Dodaj komentarz