W przeszłości dokonałem wielu niejasnych optymalizacji systemu, ale pozbyłem się większości z nich po tym, jak powertop
powiedział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=60
dla / 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 fsck
mó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?