Cómo y por qué la opción noatime mejora el rendimiento de los sistemas Linux

Una actualización puntual afecta el rendimiento del sistema. Qué está sucediendo allí y qué hacer al respecto: lea el artículo.

Cómo y por qué la opción noatime mejora el rendimiento de los sistemas Linux
Cada vez que actualizo Linux en la computadora de mi casa, tengo que resolver ciertos problemas. Con el paso de los años, esto se ha convertido en un hábito: hago copias de seguridad de mis archivos, borro el sistema, instalo todo desde cero, restauro mis archivos y luego reinstalo mis aplicaciones favoritas. También cambio la configuración del sistema para adaptarme a mí. A veces lleva demasiado tiempo. Y recientemente me pregunté si necesitaba este dolor de cabeza.

un momento es una de las tres marcas de tiempo para archivos en Linux (más sobre esto más adelante). En particular, me preguntaba si seguiría siendo una buena idea desactivar atime en sistemas Linux más recientes. Dado que atime se actualiza cada vez que se accede al archivo, me di cuenta de que tiene un impacto significativo en el rendimiento del sistema.
Recientemente actualicé a Fedora 32 y, por costumbre, comencé deshabilitando atime. Pensé: ¿realmente lo necesito? Decidí estudiar este tema y esto es lo que desenterré.

Un poco sobre las marcas de tiempo de los archivos

Para resolverlo, debe dar un paso atrás y recordar algunas cosas sobre los sistemas de archivos de Linux y cómo el kernel marca la hora de los archivos y directorios. Puede ver la fecha de la última modificación de archivos y directorios ejecutando el comando ls -l (largo) o simplemente mirando información al respecto en el administrador de archivos. Pero detrás de escena, el kernel de Linux realiza un seguimiento de varias marcas de tiempo para archivos y directorios:

  1. ¿Cuándo se modificó el archivo por última vez (mtime)?
  2. ¿Cuándo fue la última vez que se cambiaron las propiedades y los metadatos del archivo (ctime)?
  3. ¿Cuándo se accedió al archivo por última vez (atime)?
  4. Puedes usar el comando statpara ver información sobre un archivo o directorio. Aquí está el archivo / etc / fstab desde uno de mis servidores de prueba:

$ stat fstab
  File: fstab
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2097285     Links: 1
Access: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
 Birth: 2019-04-25 21:03:11.840496275 -0500

Aquí puedes ver que este archivo fue creado el 25 de abril de 2019 cuando instalé el sistema. Mi archivo / etc / fstab se modificó por última vez el 16 de mayo de 2019 y todos los demás atributos se cambiaron aproximadamente al mismo tiempo.

si copio / etc / fstab a un archivo nuevo, las fechas cambian para indicar que es un archivo nuevo:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  File: fstab.bak
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Pero si simplemente cambio el nombre del archivo sin cambiar su contenido, Linux solo actualizará la hora en que se modificó el archivo:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  File: fstab.tmp
  Size: 261             Blocks: 8          IO Block: 4096   regular file
Device: b303h/45827d    Inode: 2105664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
 Birth: 2020-05-12 17:53:58.442659986 -0500

Estas marcas de tiempo son muy útiles para ciertos programas Unix. Por ejemplo, biff es un programa que te notifica cuando hay un mensaje nuevo en tu correo electrónico. Hoy en día poca gente usa filete, pero en los días en que los buzones de correo eran locales del sistema, biff era bastante común.

¿Cómo sabe el programa si tienes correo nuevo en tu bandeja de entrada? biff compara la hora de la última modificación (cuando el archivo de la bandeja de entrada se actualizó con un nuevo mensaje de correo electrónico) y la hora del último acceso (la última vez que leyó su correo electrónico). Si el cambio se produjo después del acceso, Biff entenderá que ha llegado una nueva carta y se lo notificará. El cliente de correo electrónico Mutt funciona prácticamente de la misma manera.

La marca de tiempo del último acceso también es útil si necesita recopilar estadísticas de uso del sistema de archivos y ajustar el rendimiento. Los administradores del sistema necesitan saber a qué objetos se accede para poder configurar el sistema de archivos en consecuencia.

Pero la mayoría de los programas modernos ya no necesitan esta etiqueta, por lo que se propuso no utilizarla. En 2007, Linus Torvalds y varios otros desarrolladores del kernel discutieron un momento en el contexto de un problema de rendimiento. El desarrollador del kernel de Linux, Ingo Molnar, hizo el siguiente comentario sobre atime y el sistema de archivos ext3:

"Es bastante extraño que cada escritorio y servidor Linux sufra una notable degradación del rendimiento de E/S debido a las constantes actualizaciones atime, a pesar de que sólo hay dos usuarios reales: tmpwatch [que se puede configurar para usar ctime, por lo que no es un gran problema] y algunas herramientas de respaldo."

Pero la gente todavía usa algunos programas que necesitan esta etiqueta. Por lo tanto, eliminar atime interrumpirá su funcionalidad. Los desarrolladores del kernel de Linux no deberían infringir la libertad del usuario.

La solución de Salomón

Son muchas las aplicaciones incluidas en las distribuciones de Linux y además, los usuarios pueden descargar e instalar otros programas según sus necesidades. Esta es una ventaja clave de un sistema operativo de código abierto. Pero esto dificulta la optimización del rendimiento de su sistema de archivos. La eliminación de componentes que consumen muchos recursos puede alterar el sistema.

Como compromiso, los desarrolladores del kernel de Linux han introducido una nueva opción de tiempo de retransmisión que pretende lograr un equilibrio entre rendimiento y compatibilidad:

atime se actualiza solo si el tiempo de acceso anterior es menor que el tiempo de modificación o cambio de estado actual... Desde Linux 2.6.30, el kernel usa esta opción de forma predeterminada (a menos que se especifique noatime)... Además, desde Linux 2.6.30. 1, la hora del último acceso a un archivo siempre se actualiza si tiene más de XNUMX día.

Los sistemas Linux modernos (desde Linux 2.6.30, lanzado en 2009) ya usan tiempo de retransmisión, lo que debería dar un gran impulso al rendimiento. Esto significa que no necesita configurar el archivo. / etc / fstaby con el tiempo de retransmisión puede confiar en el valor predeterminado.

Mejorando el rendimiento del sistema con noatime

Pero si desea ajustar su sistema para obtener el máximo rendimiento, aún es posible desactivarlo en algún momento.

Es posible que el cambio de rendimiento no sea muy notable en unidades modernas muy rápidas (como NVME o Fast SSD), pero hay un pequeño aumento allí.

Si sabe que no está utilizando software que requiere atime, puede mejorar ligeramente el rendimiento habilitando la opción noatime en el archivo. /etc/fstab. Después de esto, el kernel no se actualizará constantemente. Utilice la opción noatime al montar el sistema de archivos:

/dev/mapper/fedora_localhost--live-root /          ext4   defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot    ext4   defaults,noatime        1 2
UUID=C594-12B1                          /boot/efi  vfat   umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home      ext4   defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none       swap   defaults,x-systemd.device-timeout=0 0 0

Los cambios entrarán en vigor la próxima vez que reinicie.

Sobre los derechos de publicidad

¿Necesitas un servidor para alojar tu sitio web? Nuestra empresa ofrece servidores confiables Con un pago diario o único, cada servidor se conecta a un canal de Internet de 500 Megabits y está protegido contra ataques DDoS de forma gratuita.

Cómo y por qué la opción noatime mejora el rendimiento de los sistemas Linux

Fuente: habr.com

Añadir un comentario