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

La actualización de atime afecta al rendimiento del sistema. ¿Qué está sucediendo y qué se puede hacer al respecto? Lee 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 mi computadora personal, tengo que enfrentar ciertas tareas. Con el tiempo, 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 adapto la configuración del sistema a mis necesidades. A veces, esto puede llevar demasiado tiempo. Y recientemente me pregunté si realmente necesito este dolor de cabeza.

atime — una de las tres marcas de tiempo para archivos en Linux (más sobre esto más adelante). En particular, me pregunté si aún vale la pena desactivar atime en sistemas Linux más recientes. Dado que atime se actualiza cada vez que se accede a un archivo, comprendí que tiene un impacto significativo en el rendimiento del sistema.
Recientemente actualicé a Fedora 32 y, por costumbre, comencé desactivando atime. Me pregunté: ¿realmente lo necesito? Decidí investigar y esto es lo que descubrí.

Un poco sobre las marcas de tiempo de archivos

Para entenderlo, necesitas dar un paso atrás y recordar algunas cosas sobre los sistemas de archivos de Linux y cómo el núcleo asigna marcas de tiempo a archivos y directorios. Puedes ver la fecha de la última modificación de archivos y directorios ejecutando el comando ls -l (long) o simplemente observando la información sobre ellos en el gestor de archivos. Pero tras bambalinas, el núcleo de Linux realiza un seguimiento de varias marcas de tiempo para archivos y directorios:

  1. Cuándo fue modificado por última vez el archivo (mtime)
  2. Cuándo fueron cambiadas por última vez las propiedades y los metadatos del archivo (ctime)
  3. Cuándo se accedió por última vez al archivo (atime)
  4. Puedes usar el comando stat, para ver los datos sobre el archivo o directorio. Aquí está el archivo /etc/fstab de uno de mis servidores de prueba:

$ stat fstab
  Archivo: fstab
  Tamaño: 261             Bloques: 8          Bloque IO: 4096   archivo regular
Dispositivo: b303h/45827d    Inodo: 2097285     Enlaces: 1
Acceso: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Contexto: system_u:object_r:etc_t:s0
Acceso: 2019-04-25 21:10:18.083325111 -0500
Modificar: 2019-05-16 10:46:47.427686706 -0500
Cambiar: 2019-05-16 10:46:47.434686674 -0500
  Nacimiento: 2019-04-25 21:03:11.840496275 -0500

Aquí se puede ver que este archivo fue creado el 25 de abril de 2019, cuando instalé el sistema. Mi archivo /etc/fstab fue modificado por última vez el 16 de mayo de 2019, y todos los demás atributos fueron cambiados aproximadamente en el mismo momento.

Si copio /etc/fstab a un nuevo archivo, las fechas cambian, indicando que es un nuevo archivo:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  Archivo: fstab.bak
  Tamaño: 261             Bloques: 8          Bloque IO: 4096   archivo regular
Dispositivo: b303h/45827d    Inodo: 2105664     Enlaces: 1
Acceso: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Contexto: unconfined_u:object_r:etc_t:s0
Acceso: 2020-05-12 17:53:58.442659986 -0500
Modificar: 2020-05-12 17:53:58.443659981 -0500
Cambio: 2020-05-12 17:53:58.443659981 -0500
 Creación: 2020-05-12 17:53:58.442659986 -0500

Pero si simplemente renombro el archivo, sin cambiar su contenido, Linux solo actualizará el tiempo de modificación del archivo:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  Archivo: fstab.tmp
  Tamaño: 261             Bloques: 8          Bloque IO: 4096   archivo regular
Dispositivo: b303h/45827d    Inodo: 2105664     Enlaces: 1
Acceso: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Contexto: unconfined_u:object_r:etc_t:s0
Acceso: 2020-05-12 17:53:58.442659986 -0500
Modificar: 2020-05-12 17:53:58.443659981 -0500
Cambio: 2020-05-12 17:54:24.576508232 -0500
 Creación: 2020-05-12 17:53:58.442659986 -0500

Estas marcas de tiempo son muy útiles para ciertos programas de Unix. Por ejemplo, biff es un programa que te notifica sobre la llegada de un nuevo mensaje de correo electrónico. Hoy en día, pocas personas utilizan biff, pero en aquellos días, cuando los buzones de correo eran locales para el sistema, biff era bastante común.

¿Cómo sabe el programa si tienes nuevo correo en la bandeja de entrada? biff compara el tiempo de la última modificación (cuándo se actualizó el archivo de correo entrante con un nuevo mensaje de correo electrónico) y el tiempo del último acceso (la última vez que leíste tu correo electrónico). Si la modificación ocurrió más tarde que el acceso, biff entenderá que ha llegado una nueva carta y te lo notificará. El cliente de correo Mutt funciona de manera similar.

La marca de tiempo del último acceso también es útil si necesitas recopilar estadísticas de uso del sistema de archivos y ajustar el rendimiento. A los administradores del sistema les interesa saber a qué objetos se accede, para configurar adecuadamente el sistema de archivos.

Pero la mayoría de los programas modernos ya no necesitan esta marca, por lo que se propuso no usarla. En 2007, Linus Torvalds y varios otros desarrolladores del kernel discutieron atime 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 disminución en el rendimiento de entrada-salida debido a las constantes actualizaciones de atime, aunque solo hay dos usuarios reales: tmpwatch [que se puede configurar para usar ctime, por lo que esto no es un gran problema] y algunas herramientas de copias de seguridad».

Pero la gente sigue utilizando algunos programas que necesitan esta etiqueta. Así que eliminar atime interrumpirá su funcionamiento. Los desarrolladores del núcleo de Linux no deben menoscabar la libertad del usuario.

Solución salomónica

Las distribuciones de Linux incluyen muchas aplicaciones, y además, los usuarios pueden cargar e instalar otros programas según sus necesidades. Esta es una ventaja clave de los sistemas operativos de código abierto. Pero esto complica la optimización del rendimiento de su sistema de archivos. Eliminar componentes que consumen recursos puede afectar el funcionamiento del sistema.

Como compromiso, los desarrolladores del núcleo de Linux han implementado una nueva opción llamada relaytime, que está destinada a proporcionar un equilibrio entre rendimiento y compatibilidad:

atime se actualiza solo si el tiempo de acceso anterior es menor que el tiempo actual de modificación o cambio de estado… A partir de Linux 2.6.30, el núcleo utiliza esta opción por defecto (a menos que se especifique noatime)… Además, a partir de Linux 2.6.30, el tiempo de último acceso a un archivo siempre se actualiza si ha pasado más de 1 día.

Los sistemas Linux modernos (a partir de Linux 2.6.30, lanzado en 2009) ya utilizan relaytime, lo que debería proporcionar un gran aumento de rendimiento. Esto significa que no necesita configurar el archivo /etc/fstab, y con relaytime puede confiar en el valor predeterminado.

Mejorando el rendimiento del sistema con noatime

Pero si desea configurar su sistema para obtener el máximo rendimiento, desactivar atime aún es posible.

El cambio en el rendimiento puede no ser muy notable en discos modernos muy rápidos (como NVME o Fast SSD), pero hay una ligera mejora.

Si sabe que no utiliza software que requiera atime, puede aumentar ligeramente el rendimiento activando la opción noatime en el archivo. /etc /fstabDespués de esto, el núcleo no actualizará constantemente atime. 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 después del siguiente reinicio.

Publicidad

¿Necesita un servidor para alojar su sitio web? Nuestra empresa ofrece servidores confiables con pago diario o único, cada servidor está conectado a un canal de Internet de 500 megabits y está protegido gratuitamente contra ataques DDoS.

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

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster