Como e por que a opção noatime melhora o desempenho de sistemas Linux

A atualização de atime afeta o desempenho do sistema. O que está acontecendo e o que fazer a respeito — leia no artigo.

Como e por que a opção noatime melhora o desempenho de sistemas Linux
Toda vez que atualizo o Linux no meu computador pessoal, tenho que resolver algumas tarefas. Com o tempo, isso se tornou um hábito: faço backup dos meus arquivos, limpo o sistema, instalo tudo do zero, restauro meus arquivos e, em seguida, reinsiro meus aplicativos favoritos. Também ajusto as configurações do sistema ao meu gosto. Às vezes, isso leva muito tempo. Recentemente, me perguntei se realmente precisava passar por essa dor de cabeça.

atime — uma das três marcas de tempo para arquivos no Linux (mais sobre isso mais tarde). Especificamente, eu me perguntava se ainda valia a pena desativar atime em sistemas Linux mais recentes. Como atime é atualizado sempre que um arquivo é acessado, percebi que ele tem um impacto significativo no desempenho do sistema.
Recentemente, atualizei para Fedora 32 e, por hábito, comecei desativando o atime. Perguntei a mim mesmo: eu realmente preciso dele? Decidi investigar essa questão e aqui está o que descobri.

Um pouco sobre marcas de tempo de arquivos

Para entender, é necessário dar um passo atrás e lembrar algumas coisas sobre sistemas de arquivos Linux e como o núcleo atribui marcas de tempo a arquivos e diretórios. Você pode ver a data da última modificação de arquivos e diretórios executando o comando ls -l (long) ou simplesmente olhando para as informações na gerenciador de arquivos. Mas nos bastidores, o núcleo do Linux acompanha várias marcas de tempo para arquivos e diretórios:

  1. Quando o arquivo foi modificado pela última vez (mtime)
  2. Quando as propriedades e os metadados do arquivo foram alterados pela última vez (ctime)
  3. Quando o arquivo foi acessado pela última vez (atime)
  4. Você pode usar o comando stat, para ver os dados sobre um arquivo ou diretório. Aqui está um arquivo /etc/fstab de um dos meus servidores de teste:

$ 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

Aqui, podemos ver que este arquivo foi criado em 25 de abril de 2019, quando instalei o sistema. Meu arquivo /etc/fstab foi modificado pela última vez em 16 de maio de 2019, e todos os outros atributos foram alterados aproximadamente ao mesmo tempo.

Se eu copiar /etc/fstab para um novo arquivo, as datas mudam, indicando que este é um novo arquivo:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  Arquivo: fstab.bak
  Tamanho: 261             Blocos: 8          Bloco IO: 4096   arquivo regular
Dispositivo: b303h/45827d    Inode: 2105664     Links: 1
Acesso: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Contexto: unconfined_u:object_r:etc_t:s0
Acesso: 2020-05-12 17:53:58.442659986 -0500
Modificar: 2020-05-12 17:53:58.443659981 -0500
Alterar: 2020-05-12 17:53:58.443659981 -0500
 Criar: 2020-05-12 17:53:58.442659986 -0500

Mas se eu apenas renomear o arquivo, sem alterar seu conteúdo, o Linux atualizará apenas o horário de modificação do arquivo:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  Arquivo: fstab.tmp
  Tamanho: 261             Blocos: 8          Bloco IO: 4096   arquivo regular
Dispositivo: b303h/45827d    Inode: 2105664     Links: 1
Acesso: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Contexto: unconfined_u:object_r:etc_t:s0
Acesso: 2020-05-12 17:53:58.442659986 -0500
Modificar: 2020-05-12 17:53:58.443659981 -0500
Alterar: 2020-05-12 17:54:24.576508232 -0500
 Criar: 2020-05-12 17:53:58.442659986 -0500

Esses timestamps são muito úteis para certos programas Unix. Por exemplo, o biff é um programa que avisa você sobre a chegada de uma nova mensagem de e-mail. Hoje em dia, poucas pessoas usam biff, mas nos dias em que as caixas de correio eram locais para o sistema, o biff era bastante disseminado.

Como o programa sabe se você tem um novo e-mail na caixa de entrada? O biff compara o horário da última modificação (quando o arquivo de correio recebido foi atualizado com uma nova mensagem de e-mail) e o horário do último acesso (a última vez que você leu seu e-mail). Se a modificação ocorrer depois do acesso, o biff perceberá que chegou uma nova carta e informará você sobre isso. O cliente de e-mail Mutt funciona de maneira semelhante.

O timestamp do último acesso também é útil se você precisar coletar estatísticas sobre o uso do sistema de arquivos e ajustar o desempenho. Os administradores de sistemas precisam saber a quais objetos se está acessando para ajustar o sistema de arquivos de acordo.

Mas para a maioria dos programas modernos, esse timestamp não é mais necessário, portanto, foi sugerido que não seja utilizado. Em 2007, Linus Torvalds e alguns outros desenvolvedores do kernel discutiram o atime no contexto do problema de desempenho. O desenvolvedor do kernel Linux Ingo Molnar fez o seguinte comentário sobre o atime e o sistema de arquivos ext3:

É bastante estranho que cada desktop e servidor Linux sofra de uma queda significativa no desempenho de I/O devido às constantes atualizações de atime, embora haja apenas dois usuários reais: o tmpwatch [que pode ser configurado para usar ctime, então isso não é um grande problema] e algumas ferramentas de backup.

Mas as pessoas ainda usam alguns programas que precisam dessa marca. Portanto, remover atime vai comprometer seu funcionamento. Os desenvolvedores do núcleo Linux não devem restringir a liberdade do usuário.

Solução Salomônica

Distribuições Linux incluem uma variedade de aplicativos, e além disso, os usuários podem baixar e instalar outros programas de acordo com suas necessidades. Esta é uma vantagem chave de um sistema operacional de código aberto. Mas isso complica a otimização do desempenho do seu sistema de arquivos. Remover componentes que consomem muitos recursos pode prejudicar o funcionamento do sistema.

Como um compromisso, os desenvolvedores do núcleo Linux implementaram uma nova opção relaytime, que visa proporcionar um equilíbrio entre desempenho e compatibilidade:

atime é atualizado apenas se o último tempo de acesso for inferior ao tempo atual de modificação ou mudança de status... A partir do Linux 2.6.30, o núcleo usa essa opção por padrão (a menos que noatime seja especificado)... Além disso, a partir do Linux 2.6.30, o tempo do último acesso a um arquivo é sempre atualizado se for superior a 1 dia.

Sistemas Linux modernos (a partir do Linux 2.6.30, lançado em 2009) já utilizam relaytime, o que deve proporcionar um grande aumento de desempenho. Isso significa que você não precisa ajustar o arquivo /etc/fstab, e com relaytime você pode confiar no valor padrão.

Aumento do desempenho do sistema com noatime

Mas se você quiser ajustar seu sistema para obter o máximo desempenho, desativar atime ainda é uma opção.

A mudança no desempenho pode não ser muito notável em discos modernos muito rápidos (como NVME ou SSDs Rápidos), mas há um pequeno ganho.

Se você sabe que não está usando software que requer atime, você pode aumentar ligeiramente o desempenho ativando a opção noatime no arquivo. /etc /fstab. Após isso, o núcleo não atualizará mais o atime constantemente. Use a opção noatime ao montar o sistema de arquivos:

/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

As alterações entrarão em vigor na próxima reinicialização.

Em nome da publicidade

Precisa de um servidor para hospedar seu site? Nossa empresa oferece servidores confiáveis com pagamento diário ou único, cada servidor está conectado a um canal de internet de 500 Megabits e protegido gratuitamente contra ataques DDoS!

Como e por que a opção noatime melhora o desempenho de sistemas Linux

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster