Ventajas / desventajas de aumentar el "commit" en fstab

14

He hecho muchas optimizaciones oscuras del sistema en el pasado, pero me deshice de la mayoría de ellas después de powertopque me dijera que debía configurar mis puertos USB para que se suspendieran automáticamente , lo que los obligó a un sueño eterno, y también después de que me di cuenta de los beneficios de una mayor capacidad de intercambio. .

Pero hoy, mientras miraba /etc/fstab, noté que había configurado la opción commit=60para / y / home . Recuerdo que esta fue una optimización para computadoras portátiles, para reducir la cantidad de escrituras en el disco, ahorrando así batería. Pero luego me preocupé porque esto podría causar la pérdida de datos (a veces mi batería se desconecta, y luego en el arranque fsckme informa sobre un par de inodes huérfanos).

Mientras buscaba una explicación para esta opción, llegué a las siguientes explicaciones (la segunda parece contradecir mi comprensión anterior):

$ 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 detiene la priorización "inmediata" (predeterminada de 5 segundos) de escrituras de sobre lecturas, almacenando en caché las escrituras unos segundos más después. Esto es bueno en la situación de lecturas y escrituras pesadas mezcladas, donde el usuario quiere que las lecturas tengan prioridad, de modo que el procesador pueda mantenerse ocupado en lugar de pausar mientras espera que finalicen las escrituras antes de que pueda continuar leyendo.

Un ejemplo del mundo real que he visto está esperando varios segundos para que aparezca el menú desplegable Gnome, aparentemente sin razón. La razón era que el disco estaba ocupado escribiendo, por lo que la CPU tuvo que esperar a que terminara la escritura antes de poder obtener todos los datos del disco para poder mostrar el menú.

¿Qué hace realmente commit ? ¿Existen realmente ventajas de aumentarlo (como la capacidad de respuesta y el ahorro de energía)? ¿Puede realmente causar pérdida de datos?

Teresa e Junior
fuente

Respuestas:

12

¿Qué hace realmente commit ?

Creo que una de las mejores explicaciones se dan aquí por allquixotic .

¿Existen realmente ventajas de aumentarlo (como la capacidad de respuesta y el ahorro de energía)? ¿Puede realmente causar pérdida de datos?

Según la documentación oficial de ext4 :

Se le puede decir a Ext4 que sincronice todos sus datos y metadatos cada 'nrsec' segundos. El valor predeterminado es 5 segundos. Esto significa que si pierde su poder, perderá tanto como los últimos 5 segundos de trabajo (sin embargo, su sistema de archivos no se dañará, gracias al registro en diario). Este valor predeterminado (o cualquier valor bajo) afectará el rendimiento, pero es bueno para la seguridad de los datos . Establecerlo en 0 tendrá el mismo efecto que dejarlo en el valor predeterminado (5 segundos). Establecerlo en valores muy grandes mejorará el rendimiento .

Un commitvalor creciente significa que puede perder tanto como los últimos N segundos de trabajo (donde N = intervalo de confirmación), aunque la mayoría de las veces esto no sucederá, ya que el software aún puede llamar a fsync () y obtener sus datos escritos en el disco, anulando el configuración de compromiso. Podrías verlo como "escribir todo en el disco al menos con esta frecuencia" . 1
Por otro lado, significa menos escrituras (lo que lo hace bastante popular entre los usuarios de SSD) y un mejor rendimiento (múltiples escrituras se combinan en una sola escritura más grande, las actualizaciones de escrituras anteriores dentro del marco de tiempo de confirmación se cancelan).
En cuanto al ahorro de energía, según esta página , resulta que hoy en día el aumento del commitvalor no ahorra energía.

don_crissti
fuente
1
Creo que se produce un ahorro de energía debido a que la extensión + la asignación retrasada pueden optimizar mucho mejor las búsquedas de HDD. Pero probablemente no sea significativo.
peterh - Restablecer Monica