GNU/Linux >> Tutoriels Linux >  >> Linux

Améliorez les performances du système Linux avec noatime

Chaque fois que je mets à niveau Linux sur mon ordinateur personnel, j'ai une liste de tâches que j'effectue habituellement. Ils sont devenus des habitudes au fil des ans :je sauvegarde mes fichiers, efface le système, réinstalle à partir de zéro, restaure mes fichiers, puis réinstalle mes applications supplémentaires préférées. Je fais aussi quelques ajustements du système. Je fais certaines de ces modifications depuis si longtemps que je me suis récemment demandé si j'avais encore besoin de les faire.

Un ajustement est atime , qui est l'un des trois horodatages sur chaque fichier sous Linux (plus à ce sujet plus tard). Plus précisément, je me suis demandé s'il valait toujours la peine de désactiver atime dans les systèmes Linux plus récents. Depuis atime est mis à jour à chaque accès au fichier, j'ai cru comprendre que cela avait un impact significatif sur les performances du système.

J'ai récemment mis à jour mon ordinateur vers Fedora 32 et désactivé atime sur mon système mis à niveau par habitude. Mais en avais-je encore besoin ? J'ai décidé d'approfondir la question. Voici ce que j'ai trouvé.

Un peu sur les horodatages de fichiers

Pour comprendre noatime , vous devez prendre du recul et comprendre certaines choses sur les systèmes de fichiers Linux et comment le noyau applique les horodatages aux fichiers et répertoires. Vous connaissez probablement déjà la date de dernière modification des fichiers et des répertoires ; vous pouvez le voir dans un ls -l liste de répertoires (longue) ou si vous regardez les détails du fichier dans un gestionnaire de fichiers. Mais dans les coulisses, le noyau Linux suit plusieurs horodatages sur les fichiers et les répertoires :

  1. Lorsque le fichier a été modifié pour la dernière fois (mtime )
  2. Lorsque le fichier a été modifié pour la dernière fois (ctime )
  3. Lorsque le fichier a été consulté pour la dernière fois (atime )

Vous pouvez utiliser la stat commande pour voir ces détails pour un fichier ou un répertoire. Voici un exemple de /etc/fstab fichier sur un de mes serveurs de test :

$ 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

À partir de la sortie, vous pouvez voir que ce fichier a été créé le 25 avril 2019, lorsque j'ai installé le système. Mon /etc/fstab le fichier a été modifié pour la dernière fois le 16 mai 2019 et tous les autres attributs ont été modifiés à peu près au même moment.

Si je copie /etc/fstab à un nouveau fichier, les dates changent, indiquant qu'il s'agit d'un nouveau fichier :

$ 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

Mais si je renomme simplement le fichier sans changer son contenu, Linux ne met à jour que l'heure de modification du fichier :

$ 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

Ces horodatages sont très utiles pour certains programmes Unix. Par exemple, biff est un programme qui vous avertit lorsque vous avez un nouveau message électronique. Vous ne voyez pas beaucoup de gens utiliser biff ces jours-ci, mais à l'époque où les boîtes aux lettres étaient locales sur votre système, biff était assez courant.

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Comment un programme sait-il si vous avez de nouveaux messages dans votre boîte de réception ? Biff compare l'heure de la dernière modification (lorsque le fichier de la boîte de réception a été mis à jour avec un nouvel e-mail) et l'heure du dernier accès (la dernière fois que vous avez lu votre e-mail). Si Modifié est plus récent que Accédé, alors biff sait qu'un e-mail est arrivé depuis votre dernière lecture d'e-mail et vous en informe. Le client de messagerie Mutt fait quelque chose de similaire pour vous alerter lorsque de nouveaux messages arrivent.

Cette heure de dernier accès est également utile si vous devez effectuer des statistiques sur le système de fichiers et ajuster les performances. Sur les grands systèmes Linux, les administrateurs peuvent avoir besoin de savoir à quoi ils accèdent afin de pouvoir régler le système de fichiers de manière appropriée.

Mais la plupart des programmes modernes n'ont plus besoin de l'heure du dernier accès, il y a donc eu des arguments pour ne pas l'utiliser. En 2007, Linus Torvalds et plusieurs autres développeurs du noyau ont discuté de atime et ses problèmes de performance. Le développeur du noyau Linux Ingo Molnár a fait cette observation à propos de atime et le système de fichiers ext3 :

C'est un peu bizarre que chaque poste de travail et serveur Linux soit affecté par un ralentissement notable des performances d'E/S en raison des mises à jour constantes d'atime, alors qu'il n'y a que deux vrais utilisateurs :tmpwatch [qui peut être configuré pour utiliser ctime donc ce n'est pas un gros problème] et quelques outils de sauvegarde. (Ok, et notifier par courrier aussi, je suppose.) Sur des dizaines de milliers d'applications.

Mais les gens utilisent encore certains programmes qui en ont besoin et suppriment atime casserait ces programmes utilisateur. Et la règle dans le développement du noyau Linux est de ne pas casser l'espace utilisateur.

Le compromis relatime

Les distributions Linux incluent de nombreuses applications logicielles et les utilisateurs peuvent télécharger et installer d'autres programmes en fonction de leurs besoins particuliers. C'est le principal avantage d'un système d'exploitation open source ! Mais cela rend les choses plus difficiles pour régler les performances de votre système de fichiers. Avez-vous besoin de atime , ou sa suppression va-t-elle casser quelque chose sur votre système ?

En guise de compromis, les développeurs du noyau Linux ont implémenté une nouvelle méthode :relatime est une mesure de performance légèrement différente qui vise à équilibrer les performances avec la compatibilité. Le mount la page de manuel dit ceci à propos de relatime :

L'heure d'accès n'est mise à jour que si l'heure d'accès précédente était antérieure à l'heure de modification ou de changement actuelle. … Depuis Linux 2.6.30, le noyau adopte par défaut le comportement fourni par cette option (sauf si noatime a été spécifié) … De plus, depuis Linux 2.6.30, l'heure du dernier accès au fichier est toujours mise à jour si elle date de plus d'un jour.

En bref :les systèmes Linux modernes (depuis Linux 2.6.30, sorti en 2009) utilisent déjà relatime , ce qui devrait vous donner une amélioration très rapide des performances. Cela signifie que vous n'avez pas besoin de modifier votre /etc/fstab fichier et peut s'appuyer sur le relatime noyau par défaut.

Améliorer les performances du système avec noatime

Mais si vous cherchez à modifier votre système pour obtenir des performances maximales, désactivez atime est toujours une option valable en 2020.

Ce réglage des performances n'est peut-être pas très perceptible sur les disques modernes très rapides (comme NVME ou un SSD rapide), mais il y a quand même un petit coup de pouce.

Si vous savez que vous n'utilisez pas de logiciel nécessitant atime , vous pouvez alors obtenir une légère amélioration des performances en définissant noatime dans votre /etc/fstab dossier. Cela indique au noyau de ne pas suivre l'heure du dernier accès, évitant ce petit impact sur les performances pour mettre à jour en permanence atime dans le système de fichiers. Ajouter noatime en option sur vos systèmes de fichiers Linux, généralement après l'entrée par défaut :

/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

Cela prendra effet au prochain redémarrage.


Linux
  1. Comprendre les appels système sous Linux avec strace

  2. Commande de tri sous Linux avec des exemples

  3. Dépannage Linux 101 :performances du système

  4. Comment surveiller les performances du système Linux avec Sysstat

  5. Autorisations de fichiers sous Linux avec exemple

Premiers pas avec le système d'exploitation Linux

Commande Linux WC avec exemples

Conseils utiles pour améliorer les performances du système Linux

Comment améliorer les performances de la batterie d'un ordinateur portable sous Linux

Dépanner et surveiller les performances du système Linux avec nmon

Administration du système de fichiers réseau (NFS) sous Linux