GNU/Linux >> Tutoriales Linux >  >> Linux

Mejore el rendimiento del sistema Linux con noatime

Cada vez que actualizo Linux en la computadora de mi casa, tengo una lista de tareas que suelo hacer. Se han convertido en hábitos a lo largo de los años:hago una copia de seguridad de mis archivos, borro el sistema, reinstalo desde cero, restauro mis archivos y luego reinstalo mis aplicaciones adicionales favoritas. También hago algunos ajustes al sistema. He estado haciendo algunos de estos ajustes durante tanto tiempo que recientemente me pregunté si aún necesitaba hacerlos.

Un ajuste es atime , que es una de las tres marcas de tiempo en cada archivo en Linux (más sobre eso más adelante). Específicamente, me preguntaba si aún valía la pena deshabilitar atime en sistemas Linux más recientes. Desde atime se actualiza cada vez que se accede al archivo, entiendo que tuvo un impacto significativo en el rendimiento del sistema.

Recientemente actualicé mi computadora a Fedora 32 y apagué atime en mi sistema actualizado por costumbre. ¿Pero todavía necesitaba hacerlo? Decidí investigarlo más a fondo. Esto es lo que encontré.

Un poco sobre las marcas de tiempo de los archivos

Para entender noatime , debe dar un paso atrás y comprender algunas cosas sobre los sistemas de archivos de Linux y cómo el kernel aplica marcas de tiempo a archivos y directorios. Probablemente ya esté al tanto de la fecha de última modificación en archivos y directorios; puedes ver eso en un ls -l (larga) lista de directorios o si mira los detalles del archivo en un administrador de archivos. Pero detrás de escena, el kernel de Linux rastrea varias marcas de tiempo en archivos y directorios:

  1. Cuándo se modificó el archivo por última vez (mtime )
  2. Cuándo se modificó el archivo por última vez (ctime )
  3. Cuándo se accedió al archivo por última vez (atime )

Puedes usar el stat comando para ver estos detalles de un archivo o directorio. Aquí hay un ejemplo de /etc/fstab archivo en 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

En el resultado, puede ver que este archivo se creó el 25 de abril de 2019, cuando instalé el sistema. Mi /etc/fstab El archivo se modificó por última vez el 16 de mayo de 2019 y cualquier otro atributo se cambió aproximadamente al mismo tiempo.

Si copio /etc/fstab a un archivo nuevo, las fechas cambian, lo que indica que se trata de 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 actualiza la hora de cambio del 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 de Unix. Por ejemplo, biff es un programa que le notifica cuando tiene un nuevo mensaje de correo electrónico. No ve a mucha gente usando biff en estos días, pero en los días en que los buzones de correo eran locales para su sistema, biff era bastante común.

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

¿Cómo sabe un 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 Modificado es más reciente que Accedido, entonces biff sabe que ha llegado un mensaje de correo electrónico desde la última vez que leyó el correo electrónico y se lo informa. El cliente de correo electrónico Mutt hace algo similar para avisarle cuando llegan nuevos mensajes.

Ese tiempo de último acceso también es útil si necesita hacer estadísticas del sistema de archivos y ajustar el rendimiento. En los sistemas Linux grandes, es posible que los administradores necesiten saber a qué se accede para poder ajustar el sistema de archivos de manera adecuada.

Pero la mayoría de los programas modernos ya no necesitan la hora de último acceso, por lo que ha habido algunos argumentos para no usarla. En 2007, Linus Torvalds y varios otros desarrolladores del kernel hablaron sobre atime y sus problemas de rendimiento. El desarrollador del kernel de Linux, Ingo Molnár, hizo esta observación sobre atime y el sistema de archivos ext3:

Es un poco extraño que todos los equipos de escritorio y servidores Linux se vean afectados por una disminución notable del rendimiento de E/S debido a las actualizaciones constantes de atime, mientras que solo hay dos usuarios reales:tmpwatch [que se puede configurar para usar ctime, por lo que no es un gran problema] y algunas herramientas de copia de seguridad. (Ok, y también notificación por correo, supongo). De decenas de miles de aplicaciones.

Pero la gente todavía usa algunos programas que lo necesitan y eliminan atime rompería esos programas de usuario. Y la regla en el desarrollo del kernel de Linux es no romper el espacio de usuario.

El compromiso de relatime

Las distribuciones de Linux incluyen muchas aplicaciones de software y los usuarios pueden descargar e instalar otros programas para satisfacer sus necesidades particulares. ¡Ese es el beneficio clave de un sistema operativo de código abierto! Pero eso hace que las cosas sean más difíciles para ajustar el rendimiento de su sistema de archivos. ¿Necesitas atime , o al eliminarlo, se dañará algo en su sistema?

Como compromiso, los desarrolladores del kernel de Linux implementaron un nuevo método:relatime es una medida de rendimiento ligeramente diferente que pretende equilibrar el rendimiento con la compatibilidad. El mount la página de manual dice esto sobre relatime :

El tiempo de acceso solo se actualiza si el tiempo de acceso anterior fue anterior al tiempo de modificación o cambio actual. … Desde Linux 2.6.30, el kernel tiene por defecto el comportamiento proporcionado por esta opción (a menos que se haya especificado noatime) … Además, desde Linux 2.6.30, la última hora de acceso al archivo siempre se actualiza si tiene más de 1 día.

En resumen:los sistemas Linux modernos (desde Linux 2.6.30, lanzado en 2009) ya usan relatime , lo que debería darle un impulso de rendimiento realmente rápido. Eso significa que no necesita modificar su /etc/fstab archivo y puede confiar en el relatime valor predeterminado del núcleo.

Ajustar el rendimiento del sistema con noatime

Pero si está buscando modificar su sistema para obtener el máximo rendimiento, deshabilite atime sigue siendo una opción válida en 2020.

Es posible que este ajuste de rendimiento no se note mucho en las unidades modernas muy rápidas (como NVME o una SSD rápida), pero aún hay un pequeño impulso allí.

Si sabe que no utiliza software que requiera atime , puede obtener un ligero aumento de rendimiento configurando noatime en su /etc/fstab expediente. Esto le dice al kernel que no rastree la hora del último acceso, evitando ese pequeño impacto en el rendimiento para actualizar continuamente atime en el sistema de archivos. Agregar noatime como una opción para sus sistemas de archivos Linux, generalmente después de la entrada predeterminada:

/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

Esto tendrá efecto la próxima vez que reinicie.


Linux
  1. Comprender las llamadas al sistema en Linux con strace

  2. Comando de apagado de Linux (con ejemplos)

  3. Cómo monitorear el rendimiento del sistema Linux con Sysstat

  4. Permisos de archivo en Linux con ejemplo

  5. ¿Cómo puedo usar rsync con un sistema de archivos FAT?

Primeros pasos con el sistema operativo Linux

Comando WC de Linux con ejemplos

Consejos útiles para mejorar el rendimiento del sistema Linux

Cómo mejorar el rendimiento de la batería de la computadora portátil en Linux

Solucionar problemas y monitorear el rendimiento del sistema Linux con nmon

Administración del sistema de archivos de red (NFS) en Linux