Преимущества / недостатки увеличения «коммита» в fstab

14

В прошлом я проводил много неясных оптимизаций системы, но избавился от большинства из них после того, как powertopсказал мне, что я должен настроить свои порты USB на автоматическую приостановку , что привело к их вечному сну, а также после того, как я осознал преимущества более высокой перестановки. ,

Но сегодня, глядя на /etc/fstab, я заметил, что установил опцию commit=60для / и / home . Я помню, что это была оптимизация для ноутбуков, чтобы уменьшить количество записей на диск, тем самым экономя батарею. Но потом я забеспокоился, что это может привести к потере данных (иногда моя батарея отключается, а затем при загрузке 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, по-видимому, без причины. Причина была в том, что диск был занят записью, поэтому ЦПУ пришлось ждать окончания записи, прежде чем он мог получить все данные с диска, чтобы можно было показать меню.

Что на самом деле делает commit ? Есть ли преимущества в его увеличении (такие как скорость отклика и экономия энергии)? Может ли это привести к потере данных?

Тереза ​​и Джуниор
источник

Ответы:

12

Что на самом деле делает commit ?

Я думаю , что один из лучших объяснений было дано здесь по allquixotic .

Есть ли преимущества в его увеличении (такие как скорость отклика и экономия энергии)? Может ли это привести к потере данных?

Согласно официальной документации ext4 :

Ext4 можно настроить синхронизацию всех его данных и метаданных каждые nrsec секунд. Значение по умолчанию составляет 5 секунд. Это означает, что если вы потеряете свою мощность, вы потеряете столько же, сколько и последние 5 секунд работы (однако, благодаря журналированию ваша файловая система не будет повреждена). Это значение по умолчанию (или любое низкое значение) ухудшит производительность, но это хорошо для безопасности данных . Установка его в 0 будет иметь тот же эффект, что и установка по умолчанию (5 секунд). Установка очень больших значений улучшит производительность .

Увеличение commitзначения означает, что вы можете потерять столько же, сколько и последние N секунд работы (где N = интервал фиксации), хотя в большинстве случаев этого не происходит, так как программное обеспечение все еще может вызывать fsync () и записывать свои данные на диск, переопределяя настройка фиксации. Вы можете смотреть на это как «записывать все на диск, по крайней мере, так часто» . 1
С другой стороны, это означает, что меньше записей (что делает его довольно популярным среди пользователей ssd) и лучшую производительность (несколько записей объединяются в одну большую запись, обновления предыдущих записей в пределах периода фиксации отменяются).
Что касается экономии энергии, то, согласно этой странице , выясняется, что в настоящее время увеличение commitстоимости не экономит энергию.

don_crissti
источник
1
Я думаю, что некоторая экономия энергии происходит из-за того, что распределение экстентов + с задержкой может намного лучше оптимизировать поиск жесткого диска. Но это, вероятно, не важно.
Петер - Восстановить Монику