В прошлом я проводил много неясных оптимизаций системы, но избавился от большинства из них после того, как 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 ? Есть ли преимущества в его увеличении (такие как скорость отклика и экономия энергии)? Может ли это привести к потере данных?