Flashcache
Flashcache to składnik pamięci podręcznej dysku dla jądra Linuksa , początkowo rozwijany przez Facebooka od kwietnia 2010 r. i wydany jako open source w 2011 r. Od stycznia 2013 r. istnieje rozwidlenie Flashcache o nazwie EnhanceIO i rozwijane przez sTec, Inc. Od 2015 r. to widelec przestał być konserwowany i został ponownie rozwidlony i utrzymywany przez osoby fizyczne.
Flashcache działa przy użyciu pamięci flash , dysku flash USB , karty SD , CompactFlash lub dowolnego rodzaju przenośnego systemu pamięci masowej flash jako trwałej pamięci podręcznej z możliwością zapisu wstecznego. W celu zwiększenia wydajności można również użyć wewnętrznego dysku SSD .
Przegląd
Używanie pamięci flash ( urządzeń pamięci NAND ) do buforowania umożliwia jądru Linuksa obsługę dysków losowych IO z lepszą wydajnością niż bez pamięci podręcznej. To buforowanie dotyczy całej zawartości dysku, a nie tylko pliku stronicowania lub plików binarnych systemu. Urządzenia oparte na pamięci flash są zwykle o wielkość szybsze niż obracające się dyski twarde w przypadku losowych operacji we/wy, ale mają mniejszą przewagę lub nawet wolniej w sekwencyjnym odczycie/zapisie. Domyślnie flashcache buforuje wszystkie operacje we/wy o pełnym rozmiarze bloku, ale można ją skonfigurować tak, aby buforowała tylko losowe operacje we/wy, ignorując sekwencyjne operacje we/wy.
Podobna technologia istnieje w Microsoft Windows jako ReadyBoost od Windows Vista .
Realizacja
mapera urządzeń jądra Linuksa . Struktura danych pamięci podręcznej to asocjacyjna tablica skrótów , w której pamięć podręczna jest podzielona na pewną liczbę zestawów o stałym rozmiarze (wiader), przy użyciu sondowania liniowego w zestawie w celu znalezienia bloków. Warstwa odwzorowująca urządzenia dzieli wszystkie żądania we/wy na porcje o rozmiarze bloku przed przekazaniem żądań do warstwy pamięci podręcznej. [ potrzebne źródło ]
Kiedy pojawia się żądanie zapisu, odpowiedni blok pamięci podręcznej jest oznaczany jako brudny; brudne bloki pamięci podręcznej są leniwie zapisywane na dysku w tle. Istnieje kilka parametrów kontrolujących zapisu zwrotnego : próg brudu, bezczynność i ciągłość z innymi brudnymi blokami, które mają zostać zapisane z powrotem. [ potrzebne źródło ]
Ograniczenia
Istnieje kilka ograniczeń narzuconych przez implementację flashcache: [ potrzebne źródło ]
- podręcznej atomowości
- są obecnie nieatomowe.
- Obsługa TRIM Polecenie
- ATA TRIM do optymalizacji pamięci flash nie jest jeszcze obsługiwane.
- Ochrona przed zanieczyszczeniem pamięci podręcznej
- Proces może zostać oznaczony jako nieobsługiwany w pamięci podręcznej, aby zapobiec żądaniom pamięci podręcznej flash; jeśli jednak proces, który oznaczył się jako nie do buforowania, umrze, flashcache nie ma możliwości wyczyszczenia.
- Wyrównanie
- Poleganie na urządzeniu odwzorowującym spowodowało problemy z wydajnością buforowania i brak buforowania zapisów, które nie są wielokrotnością 4 KiB. Dotyczy to przede wszystkim hiperwizora Xen. W ten sposób EnhanceIO odeszło od integracji mapowania urządzeń, zapewniając wyższą wydajność w nieoptymalnych przypadkach użycia. [ Potrzebne źródło ]
- Wpływ opóźnienia odczytu podczas zapisu
- w trybie zapisu z obejściem wszystkie zapisy omijają pamięć podręczną w celu zapewnienia wysokiej spójności. Bieżąca implementacja będzie pobierać odczyty przez urządzenie SSD, a następnie dostarczać je do rzeczywistego czytnika. Oznacza to, że wcześniej niebuforowane bloki zawsze będą musiały najpierw trafiać na urządzenie SSD, powodując ciągłe operacje zapisu we/wy. Nie stanowi problemu na korporacyjnych dyskach SSD ani na zaawansowanych urządzeniach PCIe, których używa Facebook, ale obniża wydajność na dyskach SSD niższej klasy.
- Faza rozgrzewania pamięci podręcznej odczytu z
- zapisem w trybie zapisu z obejściem FlashCache nie ma informacji pozwalających porównać wiek stron zapisanych w pamięci podręcznej z tymi na dysku. (1) Ponieważ urządzenie mogło zostać zamontowane poza FlashCache (2) Ponieważ w tym trybie żadne zapisy nie są śledzone. Powoduje to pustą pamięć podręczną po każdej aktywacji woluminu (tj. po ponownym uruchomieniu). Wydajność będzie spadać, dopóki wszystkie obszary aktywne nie zostaną zapisane w pamięci podręcznej.
Zobacz też
- bcache
- pamięć podręczna dm
- Oprogramowanie do przyspieszania pamięci podręcznej (produkt firmy Intel)