Переваги / недоліки збільшення "фіксації" у fstab


14

У минулому я робив багато незрозумілих оптимізацій системи, але я позбувся більшості з них після того, як 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, здавалося б, без причин. Причина полягала в тому, що диск був зайнятий записом, тому процесору довелося чекати, коли запис закінчиться, перш ніж він зможе отримати всі дані з диска, щоб мати змогу показувати меню.

Що насправді робить зобов’язання ? Чи є справді переваги його збільшення (як чуйність та економія енергії)? Чи може це насправді призвести до втрати даних?

Відповіді:


12

Що насправді робить зобов’язання ?

Я думаю , що один з кращих пояснень було дано тут по allquixotic .

Чи є справді переваги його збільшення (як чуйність та економія енергії)? Чи може це насправді призвести до втрати даних?

Відповідно до офіційної документації ext4 :

Ext4 можна сказати, щоб синхронізувати всі його дані та метадані кожні 'nrsec' секунди. Значення за замовчуванням - 5 секунд. Це означає, що якщо ви втратите свою силу, ви втратите стільки ж, скільки останні 5 секунд роботи (ваша файлова система не буде пошкоджена, хоча завдяки журналу). Це значення за замовчуванням (або будь-яке низьке значення) зашкодить продуктивності, але це добре для безпеки даних . Якщо встановити 0, матиме такий же ефект, як і за умовчанням (5 секунд). Встановлення його на дуже великі значення підвищить продуктивність .

Збільшення commitзначення означає, що ви можете втратити стільки ж, скільки останні N секунд роботи (де N = інтервал фіксації), хоча більшість часу цього не відбудеться, оскільки програмне забезпечення все ще може викликати fsync () і отримати свої дані, записані на диск, переосмисливши зробити налаштування. Ви можете поглянути на це як "записуйте все на диск принаймні так часто" . 1
З іншого боку, це означає менше запису (що робить його досить популярним серед ssd користувачів) та кращою продуктивністю (кілька записів об'єднуються в одну велику більшу запис, оновлення попередніх записів у межах часу фіксації скасовується).
Щодо економії електроенергії, згідно з цією сторінкою , виявляється, що в даний час зростаюча commitвартість не економить енергію.


1
Я думаю, що деяка економія енергії трапляється через те, що розширення + затримка розподілу може значно краще оптимізувати прагнення жорсткого диска. Але це, мабуть, не суттєво.
петерх
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.