Como e por que a opción noatime mellora o rendemento dos sistemas Linux

A actualización de Atime afecta o rendemento do sistema. O que está a suceder alí e que facer ao respecto - le o artigo.

Como e por que a opción noatime mellora o rendemento dos sistemas Linux
Sempre que actualizo Linux no meu ordenador doméstico, teño que resolver certos problemas. Co paso dos anos, isto converteuse nun hábito: fago unha copia de seguranza dos meus ficheiros, limpo o sistema, instalo todo desde cero, restauro os meus ficheiros e reinstalo as miñas aplicacións favoritas. Tamén cambio a configuración do sistema para que se adapte a min. Ás veces leva moito tempo. E recentemente pregunteime se necesitaba esta dor de cabeza.

tempo é unha das tres marcas de tempo para ficheiros en Linux (máis sobre isto máis adiante). En particular, preguntábame se aínda sería unha boa idea desactivar atime nos sistemas Linux máis recentes. Dado que atime se actualiza cada vez que se accede ao ficheiro, decateime de que ten un impacto significativo no rendemento do sistema.
Recentemente actualicei a Fedora 32 e, por costume, comecei desactivando atime. Pensei: realmente o necesito? Decidín estudar este tema e isto foi o que desenterrei.

Un pouco sobre as marcas de tempo dos ficheiros

Para descubrilo, cómpre dar un paso atrás e lembrar algunhas cousas sobre os sistemas de ficheiros Linux e como o kernel marca os ficheiros e directorios. Podes ver a última data de modificación dos ficheiros e directorios executando o comando ls -l (longo) ou simplemente mirando a información sobre ela no xestor de ficheiros. Pero entre bastidores, o núcleo de Linux fai un seguimento de varias marcas de tempo para ficheiros e directorios:

  1. Cando foi a última modificación do ficheiro (mtime)
  2. Cando foi a última vez que se cambiaron as propiedades do ficheiro e os metadatos (ctime)
  3. Cando se accedeu por última vez ao ficheiro (a hora)
  4. Podes usar o comando statpara ver información sobre un ficheiro ou directorio. Aquí está o arquivo / etc / fstab dun dos meus servidores de proba:

$ 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í podes ver que este ficheiro foi creado o 25 de abril de 2019 cando instalei o sistema. O meu arquivo / etc / fstab modificouse por última vez o 16 de maio de 2019 e todos os demais atributos modificáronse ao mesmo tempo.

Se copio / etc / fstab a un ficheiro novo, as datas cambian para indicar que se trata dun ficheiro novo:

$ 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 se só cambio o nome do ficheiro sen cambiar o seu contido, Linux só actualizará o momento en que se modificou o ficheiro:

$ 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 tempo son moi útiles para certos programas Unix. Por exemplo, biff é un programa que che avisa cando hai unha nova mensaxe no teu correo electrónico. Hoxe en día poucas persoas usan biff, pero na época en que as caixas de correo eran locais do sistema, o biff era bastante común.

Como sabe o programa se tes correo novo na túa caixa de entrada? biff compara a hora da última modificación (cando se actualizou o ficheiro da caixa de entrada cunha nova mensaxe de correo electrónico) e a hora do último acceso (a última vez que leu o correo electrónico). Se o cambio se produciu máis tarde do acceso, entón biff entenderá que chegou unha nova carta e notificarao. O cliente de correo electrónico Mutt funciona do mesmo xeito.

A marca de tempo do último acceso tamén é útil se necesitas recoller estatísticas de uso do sistema de ficheiros e axustar o rendemento. Os administradores do sistema necesitan saber a que obxectos se accede para poder configurar o sistema de ficheiros en consecuencia.

Pero a maioría dos programas modernos xa non precisan desta etiqueta, polo que houbo unha proposta para non usala. En 2007, Linus Torvalds e varios outros desenvolvedores do núcleo discutiron sobre atime no contexto dun problema de rendemento. O desenvolvedor do núcleo de Linux Ingo Molnar fixo o seguinte punto sobre atime e o sistema de ficheiros ext3:

"É bastante estraño que todos os escritorios e servidores Linux sufran unha notable degradación do rendemento da E/S debido ás constantes actualizacións de atime, aínda que só hai dous usuarios reais: tmpwatch [que se pode configurar para usar ctime, polo que non é un gran problema] e algunhas ferramentas de copia de seguridade".

Pero a xente aínda usa algúns programas que precisan desta etiqueta. Polo tanto, eliminar atime romperá a súa funcionalidade. Os desenvolvedores do núcleo de Linux non deberían violar a liberdade do usuario.

Solución de Salomón

Hai moitas aplicacións incluídas nas distribucións de Linux e ademais, os usuarios poden descargar e instalar outros programas segundo as súas necesidades. Esta é unha vantaxe fundamental dun sistema operativo de código aberto. Pero isto dificulta optimizar o rendemento do seu sistema de ficheiros. A eliminación de compoñentes que consumen moito recursos pode perturbar o sistema.

Como compromiso, os desenvolvedores do núcleo de Linux introduciron unha nova opción de tempo de retransmisión que pretende lograr un equilibrio entre rendemento e compatibilidade:

atime actualízase só se o tempo de acceso anterior é inferior ao tempo de modificación ou cambio de estado actual... Desde Linux 2.6.30, o núcleo usa esta opción por defecto (a non ser que se especifique noatime)... Ademais, dende Linux 2.6.30 . 1, a última hora de acceso a un ficheiro sempre se actualiza se ten máis de XNUMX día.

Os sistemas Linux modernos (desde Linux 2.6.30, lanzado en 2009) xa usan tempo de retransmisión, o que debería dar un gran impulso de rendemento. Isto significa que non precisa configurar o ficheiro / etc / fstab, e co tempo de retransmisión podes confiar no predeterminado.

Mellorando o rendemento do sistema con noatime

Pero se queres axustar o teu sistema para obter o máximo rendemento, aínda é posible desactivar a hora.

O cambio de rendemento pode non ser moi perceptible en unidades modernas moi rápidas (como NVME ou Fast SSD), pero hai un pequeno aumento alí.

Se sabe que non está a usar software que require atime, pode mellorar lixeiramente o rendemento activando a opción noatime no ficheiro /etc/fstab. Despois diso, o núcleo non se actualizará constantemente. Use a opción noatime ao montar o sistema de ficheiros:

/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

Os cambios terán efecto a próxima vez que reinicie.

Sobre os dereitos da publicidade

Necesitas un servidor para aloxar o teu sitio web? A nosa empresa ofrece servidores fiables cun pago diario ou único, cada servidor está conectado a unha canle de Internet de 500 Megabits e está protexido contra ataques DDoS de balde.

Como e por que a opción noatime mellora o rendemento dos sistemas Linux

Fonte: www.habr.com

Engadir un comentario