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

Uma atualização pontual afeta o desempenho do sistema. O que está acontecendo lá e o que fazer a respeito - leia o artigo.

Como e por que a opção noatime melhora o desempenho dos sistemas Linux
Sempre que atualizo o Linux no meu computador doméstico, tenho que resolver alguns problemas. Com o passar dos anos, isso se tornou um hábito: faço backup dos meus arquivos, limpo o sistema, instalo tudo do zero, restauro meus arquivos e depois reinstalo meus aplicativos favoritos. Eu também altero as configurações do sistema para me adequar. Às vezes leva muito tempo. E recentemente me perguntei se precisava dessa dor de cabeça.

um tempo é um dos três carimbos de data/hora para arquivos no Linux (mais sobre isso mais tarde). Em particular, eu queria saber se ainda seria uma boa ideia desabilitar o atime em sistemas Linux mais recentes. Como o atime é atualizado toda vez que o arquivo é acessado, percebi que isso tem um impacto significativo no desempenho do sistema.
Atualizei recentemente para o Fedora 32 e, por hábito, comecei desabilitando o atime. Pensei: será que preciso mesmo disso? Resolvi estudar esse assunto e foi isso que descobri.

Um pouco sobre carimbos de data/hora de arquivos

Para descobrir isso, você precisa dar um passo atrás e lembrar algumas coisas sobre os sistemas de arquivos Linux e como o kernel registra a data e hora dos arquivos e diretórios. Você pode ver a data da última modificação de arquivos e diretórios executando o comando ls -l (longo) ou simplesmente consultando informações sobre ele no gerenciador de arquivos. Mas nos bastidores, o kernel do Linux monitora vários carimbos de data/hora para arquivos e diretórios:

  1. Quando o arquivo foi modificado pela última vez (mtime)
  2. Quando foi a última vez que as propriedades e metadados do arquivo foram alterados (ctime)
  3. Quando o arquivo foi acessado pela última vez (atime)
  4. Você pode usar o comando estadopara visualizar informações sobre um arquivo ou diretório. Aqui está o 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 você pode 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 na mesma época.

Se eu copiar / etc / fstab para um novo arquivo, as datas mudam para indicar que se trata de um novo arquivo:

$ 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

Mas se eu apenas renomear o arquivo sem alterar seu conteúdo, o Linux atualizará apenas a hora em que o arquivo foi modificado:

$ 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

Esses carimbos de data/hora são muito úteis para determinados programas Unix. Por exemplo, biff é um programa que avisa quando há uma nova mensagem em seu e-mail. Hoje em dia poucas pessoas usam bife, mas na época em que as caixas de correio eram locais no sistema, o biff era bastante comum.

Como o programa sabe se você tem novos e-mails em sua caixa de entrada? biff compara a hora da última modificação (quando o arquivo da caixa de entrada foi atualizado com uma nova mensagem de e-mail) e a hora do último acesso (a última vez que você leu seu e-mail). Se a alteração ocorreu depois do acesso, o biff entenderá que uma nova carta chegou e irá notificá-lo sobre isso. O cliente de e-mail Mutt funciona da mesma maneira.

O carimbo de data/hora do último acesso também é útil se você precisar coletar estatísticas de uso do sistema de arquivos e ajustar o desempenho. Os administradores de sistema precisam saber quais objetos estão sendo acessados ​​para que possam configurar o sistema de arquivos adequadamente.

Mas a maioria dos programas modernos não precisa mais desse rótulo, por isso houve uma proposta para não usá-lo. Em 2007, Linus Torvalds e vários outros desenvolvedores de kernel discutiram o atime no contexto de um problema de desempenho. O desenvolvedor do kernel Linux, Ingo Molnar, fez a seguinte observação sobre o atime e o sistema de arquivos ext3:

"É muito estranho que todo desktop e servidor Linux sofra uma degradação perceptível no desempenho de E/S devido às constantes atualizações do atime, mesmo que existam apenas dois usuários reais: tmpwatch [que pode ser configurado para usar o ctime, então não é um grande problema] e algumas ferramentas de backup."

Mas as pessoas ainda usam alguns programas que precisam desse rótulo. Portanto, remover o atime interromperá sua funcionalidade. Os desenvolvedores do kernel Linux não devem infringir a liberdade do usuário.

Solução de Salomão

Existem muitos aplicativos incluídos nas distribuições Linux e além disso, os usuários podem baixar e instalar outros programas de acordo com suas necessidades. Esta é uma vantagem importante de um sistema operacional de código aberto. Mas isso dificulta a otimização do desempenho do seu sistema de arquivos. A remoção de componentes que consomem muitos recursos pode interromper o sistema.

Como compromisso, os desenvolvedores do kernel Linux introduziram uma nova opção de tempo de retransmissão que visa atingir um equilíbrio entre desempenho e compatibilidade:

atime é atualizado apenas se o tempo de acesso anterior for menor que o tempo de modificação ou mudança de status atual... Desde o Linux 2.6.30, o kernel usa esta opção por padrão (a menos que noatime seja especificado)... Além disso, desde o Linux 2.6.30 . 1, o último horário de acesso de um arquivo é sempre atualizado se tiver mais de XNUMX dia.

Os sistemas Linux modernos (desde o Linux 2.6.30, lançado em 2009) já usam o tempo de retransmissão, o que deve proporcionar um grande aumento de desempenho. Isso significa que você não precisa configurar o arquivo / etc / fstab, e com o tempo de retransmissão você pode confiar no padrão.

Melhorando o desempenho do sistema com noatime

Mas se você deseja ajustar seu sistema para obter desempenho máximo, desabilitar o atime ainda é possível.

A mudança de desempenho pode não ser muito perceptível em unidades modernas muito rápidas (como NVME ou Fast SSD), mas há um pequeno aumento aí.

Se você sabe que não está usando software que requer atime, você pode melhorar um pouco o desempenho habilitando a opção noatime no arquivo /etc/fstab. Depois disso, o kernel não será atualizado 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 vez que você reiniciar.

Como a publicidade

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

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

Fonte: habr.com

Adicionar um comentário