Zalety / wady zwiększania „zatwierdzania” w fstab


14

W przeszłości dokonałem wielu niejasnych optymalizacji systemu, ale pozbyłem się większości z nich po tym, jak powertoppowiedziałem, że powinienem ustawić automatyczne zawieszanie portów USB , co zmusiło ich do wiecznego snu, a także po uświadomieniu sobie korzyści z większej swapiness .

Ale dzisiaj, patrząc na to /etc/fstab, zauważyłem, że ustawiłem opcję commit=60dla / i / home . Pamiętam, że była to optymalizacja dla laptopów, aby zmniejszyć ilość zapisów na dysku, a tym samym oszczędzić baterię. Ale potem zacząłem się niepokoić, że może to spowodować utratę danych (czasami moja bateria zostaje odłączona, a następnie przy starcie fsckmówi mi o kilku sierocych i-węzłach).

Szukając wyjaśnienia tej opcji, doszedłem do następujących wyjaśnień (drugie wydaje się zaprzeczać mojemu wcześniejszemu rozumieniu):

$ man mount | awk '/commit=/,/^$/'
commit=nrsec
    Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
    Zero means default.

https://forums.gentoo.org/viewtopic-p-4088752.html

commit = 60 zatrzymuje „natychmiastowe” (domyślnie 5 sekund) ustalanie priorytetów zapisów nad odczytami, buforowanie zapisów przez kilka sekund później. Jest to dobre w sytuacji, gdy intensywne odczyty i zapisy są pomieszane, gdy użytkownik chce, aby odczyty miały pierwszeństwo, dzięki czemu procesor może być zajęty zamiast wstrzymywać się w oczekiwaniu na zakończenie zapisu, zanim będzie mógł kontynuować czytanie.

Przykład, który widziałem w rzeczywistości, czeka kilka sekund na pojawienie się menu rozwijanego Gnome, z pozoru bez powodu. Powodem było to, że dysk był zajęty zapisywaniem, więc procesor musiał czekać na zakończenie zapisu, zanim będzie mógł pobrać wszystkie dane z dysku, aby wyświetlić menu.

Co naprawdę robi commit ? Czy naprawdę są zalety jego zwiększania (np. Szybkość reakcji i oszczędność energii)? Czy może to faktycznie spowodować utratę danych?

Odpowiedzi:


12

Co naprawdę robi commit ?

Myślę, że jedno z najlepszych wyjaśnień zostało tutaj podane przez allquixotic .

Czy naprawdę są zalety jego zwiększania (np. Szybkość reakcji i oszczędność energii)? Czy może to faktycznie spowodować utratę danych?

Zgodnie z oficjalną dokumentacją ext4 :

Ext4 może zostać poproszony o synchronizację wszystkich swoich danych i metadanych co sekundę. Wartość domyślna to 5 sekund. Oznacza to, że jeśli stracisz moc, stracisz tyle, co ostatnie 5 sekund pracy (jednak system plików nie zostanie uszkodzony, dzięki kronikowaniu). Ta wartość domyślna (lub dowolna niska wartość) zaszkodzi wydajności, ale jest dobra dla bezpieczeństwa danych . Ustawienie na 0 będzie miało taki sam efekt, jak pozostawienie wartości domyślnej (5 sekund). Ustawienie bardzo dużych wartości poprawi wydajność .

Zwiększenie commitwartości oznacza, że ​​możesz stracić tyle, ile ostatnich N sekund pracy (gdzie N = przedział zatwierdzenia), chociaż przez większość czasu tak się nie stanie, ponieważ oprogramowanie może nadal wywoływać funkcję fsync () i zapisywać dane na dysku, zastępując parametr zatwierdzić ustawienie. Można to potraktować jako „zapisywanie wszystkiego na dysku przynajmniej tak często” . 1
Z drugiej strony oznacza mniej zapisów (co czyni go dość popularnym wśród użytkowników ssd) i lepszą wydajność (wiele zapisów jest łączonych w jeden większy zapis, aktualizacje poprzednich zapisów w ramach czasowych zatwierdzania są anulowane).
Jeśli chodzi o oszczędność energii, zgodnie z tą stroną okazuje się, że obecnie wzrost commitwartości nie oszczędza energii.


1
Myślę, że dzieje się trochę oszczędzania energii, ponieważ zakres + opóźniony przydział mogą znacznie lepiej zoptymalizować poszukiwane dyski twarde. Ale to chyba nie ma znaczenia.
peterh - Przywróć Monikę
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.