У минулому я робив багато незрозумілих оптимізацій системи, але я позбувся більшості з них після того, як powertop
сказав мені, що я повинен встановити свої USB-порти на автозапуск , що змусило їх до вічного сну, а також після того, як я зрозумів переваги більшої простоти .
Але сьогодні, переглядаючи /etc/fstab
, я помітив, що встановив варіант commit=60
для / та / додому . Я пам’ятаю, що це була оптимізація для ноутбуків, щоб зменшити кількість записів на диск, заощадивши таким чином акумулятор. Але потім я потурбувався, що це може призвести до втрати даних (іноді мій акумулятор відключається, а потім під час завантаження fsck
повідомляє мені про пару сирітських індексів).
Шукаючи пояснення цього варіанту, я дійшов до таких пояснень (друге, здається, суперечить моєму попередньому розумінню):
$ 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 припиняє "негайне" (за замовчуванням 5 секунд) пріоритетність записів над прочитаними, кешуючи записи ще на кілька секунд пізніше. Це добре в ситуації з великим читанням і записом, змішаним разом, коли користувач хоче, щоб читання мали пріоритет, щоб процесор міг бути зайнятим, а не робити паузи, поки чекати, коли запис закінчиться, перш ніж він зможе продовжити читання.
Я бачив приклад із реального світу, який чекає кілька секунд, щоб з'явилося спадне меню Gnome, здавалося б, без причин. Причина полягала в тому, що диск був зайнятий записом, тому процесору довелося чекати, коли запис закінчиться, перш ніж він зможе отримати всі дані з диска, щоб мати змогу показувати меню.
Що насправді робить зобов’язання ? Чи є справді переваги його збільшення (як чуйність та економія енергії)? Чи може це насправді призвести до втрати даних?