Jak mogę zapobiec wyczerpaniu mojej pamięci ZFS ARC przy użyciu ntfs-3g?
Mam uruchomiony mikroserwer HP
OpenMediaVault
http://www.openmediavault.org/
2.1.18 (Stone Burner) oparty na Debianie GNU/Linux 7 (wheezy).
Kilka dni temu musiałem skopiować dużą liczbę plików w formacie NTFS z pamięci USB. Podłączono, zamontowałem, uruchomiłem kopię i pozostawiono do zakończenia.
Dzień później stwierdziłem, że ledwie cokolwiek skopiował, a wydajność mojego NAS spadła. Podczas mojego dochodzenia odkryłem, że pamięci podręczne stron i buforów zajmują teraz więcej niż 3/4 pamięci systemowej (razem zwykle zajmują mniej niż 10%), a ZFS ARC jest teraz kompresowany do pozostałej pamięci (mniej niż 1/4 normalnego rozmiaru).
Kiedy zdałem sobie sprawę, co jest nie tak, zatrzymałem kopię, odmontowałem i odmontowałem dysk, i bardzo szybko pamięci podręczne wróciły do normalnego rozmiaru, a następnie ARC zaczęło się zapełniać do normalnego poziomu.
Tak więc, jeśli w przyszłości będę potrzebować więcej bezpośrednich kopii, jak zapobiec montowaniu dysków ntfs, które pochłaniały dużo pamięci i pozbawiły mój ZFS ARC pamięci, której potrzebuje?
Uwaga: próbowałem biegać
echo 3 >/proc/sys/vm/drop_caches(za „darmową pamięć podręczną stron, dentrów i i-węzłów” zgodnie z
man 5 proc), dlatego
shodanshok
https://serverfault.com/users/ ... owany
https://serverfault.com/a/734645/25092
ale to również wyczyściło moje ARC (z wyjątkiem pamięci potrzebnej do buforowania nagłówka L2ARC). Więc mój system miał dużo wolnej pamięci, ale ponieważ wszystko jest buforowane tylko w ARC lub L2ARC, mój system spędził całe wieki na ładowaniu dysków w celu uzupełnienia ARC, co było niepożądanym stanem rzeczy.
Na tym obrazku widać głód ZFS na początku piątego, kiedy uruchamiam moją kopię ntfs, wszystko wraca do normy, gdy dysk ntfs jest odmontowany na początku szóstego, a następnie w końcu ARC jest opróżniany ( i odbudowano) po użyciu drop_caches 7 po południu.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Alternatywnie możesz spróbować innego sposobu, aby uniknąć zanieczyszczenia bufora/pamięci podręcznej strony. Zasadniczo musisz skopiować każdy plik za pomocą DIRECT_IO, całkowicie pomijając pamięć podręczną strony. Możesz to zrobić za pomocą polecenia takiego jak:
Powyższe polecenie otwiera plik src z opcją O_DIRECT, pomijając pamięć podręczną strony podczas czytania.
ale nie podczas nagrywania
... Jeśli chcesz ominąć nawet buforowanie zapisu, możesz dodać kolejny
opcja.
Prawdziwy problem z powyższym rozwiązaniem polega na tym, że musisz określać plik jeden po drugim, wykonując wiele (może tysiące). Oznacza to, że musiałeś napisać skrypt
abyś mógł skopiować cały katalog trzy.
Inne opcje obejmują:
Na koniec możesz spróbować uruchomić aplikację NTFS/skopiować przez
i ustawianie pewnych limitów pamięci, co powinno również ograniczać buforowanie stron.