Comment et pourquoi l'option noatime améliore les performances des systèmes Linux

Une mise à jour temporelle affecte les performances du système. Que s'y passe-t-il et que faire à ce sujet - lisez l'article.

Comment et pourquoi l'option noatime améliore les performances des systèmes Linux
Chaque fois que je mets à jour Linux sur mon ordinateur personnel, je dois résoudre certains problèmes. Au fil des années, c'est devenu une habitude : je sauvegarde mes fichiers, efface le système, installe tout à partir de zéro, restaure mes fichiers, puis réinstalle mes applications préférées. Je modifie également les paramètres du système à ma convenance. Parfois, cela prend trop de temps. Et récemment, je me suis demandé si j'avais besoin de ce mal de tête.

Atime est l'un des trois horodatages pour les fichiers sous Linux (nous en parlerons plus tard). En particulier, je me demandais si ce serait toujours une bonne idée de désactiver atime sur les systèmes Linux plus récents. Étant donné que l'heure est mise à jour à chaque accès au fichier, j'ai réalisé que cela avait un impact significatif sur les performances du système.
J'ai récemment mis à niveau vers Fedora 32 et, par habitude, j'ai commencé par désactiver atime. Je me suis dit : en ai-je vraiment besoin ? J'ai décidé d'étudier cette question et c'est ce que j'ai déterré.

Un peu sur les horodatages des fichiers

Pour le comprendre, vous devez prendre du recul et vous rappeler quelques éléments concernant les systèmes de fichiers Linux et la manière dont le noyau horodatage les fichiers et les répertoires. Vous pouvez voir la date de dernière modification des fichiers et répertoires en exécutant la commande ls -l (long) ou simplement en consultant les informations à ce sujet dans le gestionnaire de fichiers. Mais en coulisses, le noyau Linux garde une trace de plusieurs horodatages pour les fichiers et répertoires :

  1. Quand le fichier a-t-il été modifié pour la dernière fois (mtime)
  2. À quand remonte la dernière fois que les propriétés et les métadonnées du fichier ont été modifiées (ctime)
  3. Quand le fichier a-t-il été consulté pour la dernière fois (heure)
  4. Vous pouvez utiliser la commande étatpour afficher des informations sur un fichier ou un répertoire. Voici le fichier / etc / fstab depuis l'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

Ici vous pouvez voir que ce fichier a été créé le 25 avril 2019 lorsque j'ai installé le système. Mon fichier / etc / fstab 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 pour indiquer 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 modifier son contenu, Linux ne mettra à jour que l'heure à laquelle le fichier a été modifié :

$ 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 lorsqu'il y a un nouveau message dans votre courrier électronique. De nos jours, peu de gens utilisent coup de poing, mais à l'époque où les boîtes aux lettres étaient locales au système, le biff était assez courant.

Comment le programme sait-il si vous avez un nouveau courrier 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 nouveau message électronique) et l'heure du dernier accès (la dernière fois que vous avez lu votre e-mail). Si le changement s'est produit après l'accès, alors biff comprendra qu'une nouvelle lettre est arrivée et vous en informera. Le client de messagerie Mutt fonctionne à peu près de la même manière.

L'horodatage du dernier accès est également utile si vous devez collecter des statistiques d'utilisation du système de fichiers et ajuster les performances. Les administrateurs système doivent savoir à quels objets ils accèdent afin de pouvoir configurer le système de fichiers en conséquence.

Mais la plupart des programmes modernes n’ont plus besoin de ce label, il a donc été proposé de ne pas l’utiliser. En 2007, Linus Torvalds et plusieurs autres développeurs du noyau ont discuté d'Atime dans le contexte d'un problème de performances. Le développeur du noyau Linux, Ingo Molnar, a fait le point suivant à propos d'atime et du système de fichiers ext3 :

"Il est assez étrange que chaque poste de travail et serveur Linux souffre d'une dégradation notable des performances d'E/S en raison de mises à jour constantes, même s'il n'y a que deux utilisateurs réels : tmpwatch [qui peut être configuré pour utiliser ctime, ce n'est donc pas un gros problème] et quelques outils de sauvegarde."

Mais les gens utilisent encore certains programmes qui nécessitent cette étiquette. Donc, supprimer le temps interrompra leur fonctionnalité. Les développeurs du noyau Linux ne doivent pas empiéter sur la liberté des utilisateurs.

La solution de Salomon

Il existe de nombreuses applications incluses dans les distributions Linux et en plus, les utilisateurs peuvent télécharger et installer d'autres programmes selon leurs besoins. C’est un avantage clé d’un système d’exploitation open source. Mais cela rend difficile l'optimisation des performances de votre système de fichiers. La suppression de composants gourmands en ressources peut perturber le système.

En guise de compromis, les développeurs du noyau Linux ont introduit une nouvelle option de temps de relais destinée à trouver un équilibre entre performances et compatibilité :

atime n'est mis à jour que si l'heure d'accès précédente est inférieure à l'heure actuelle de modification ou de changement d'état... Depuis Linux 2.6.30, le noyau utilise cette option par défaut (sauf si noatime est spécifié)... De plus, depuis Linux 2.6.30 . 1, l'heure du dernier accès à un fichier est toujours mise à jour s'il date de plus d'un jour.

Les systèmes Linux modernes (depuis Linux 2.6.30, sorti en 2009) utilisent déjà le temps de relais, ce qui devrait améliorer considérablement les performances. Cela signifie que vous n'avez pas besoin de configurer le fichier / etc / fstab, et avec le temps de relais, vous pouvez compter sur la valeur par défaut.

Améliorer les performances du système avec noatime

Mais si vous souhaitez régler votre système pour obtenir des performances maximales, la désactivation d'atime est toujours possible.

Le changement de performances n'est peut-être pas très perceptible sur les disques modernes très rapides (tels que NVME ou Fast SSD), mais il y a là une légère augmentation.

Si vous savez que vous n'utilisez pas de logiciel nécessitant atime, vous pouvez améliorer légèrement les performances en activant l'option noatime dans le fichier. /etc/fstab. Après cela, le noyau ne se mettra pas constamment à jour. Utilisez l'option noatime lors du montage du système de fichiers :

/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

Les modifications prendront effet au prochain redémarrage.

Comme la publicité

Avez-vous besoin d'un serveur pour héberger votre site Web ? Notre entreprise propose serveurs fiables avec un paiement journalier ou unique, chaque serveur est connecté à un canal Internet de 500 Mégabits et est protégé gratuitement contre les attaques DDoS !

Comment et pourquoi l'option noatime améliore les performances des systèmes Linux

Source: habr.com

Ajouter un commentaire