GNU/Linux >> Tutoriels Linux >  >> Linux

Limite de surveillance inotify du noyau atteinte

Est-il prudent d'augmenter cette valeur et quelles seraient les conséquences d'une valeur trop élevée ?

Oui, il est prudent d'augmenter cette valeur et voici les coûts possibles [source] :

  • Chaque utilisé inotify watch occupe 540 octets (système 32 bits), ou 1 ko (double - sur 64 bits) [sources :1, 2]
  • Ceci provient de la mémoire du noyau , qui ne peut pas être échangé.
  • En supposant que vous définissiez le maximum à 524 288 et que tous soient utilisés (improbable), vous utiliseriez environ 256 Mo/512 Mo de mémoire du noyau 32 bits/64 bits.
    • Notez que votre application utilisera également de la mémoire supplémentaire pour garder une trace des descripteurs inotify, des chemins de fichiers/répertoires, etc. -- combien dépend de sa conception.

Pour vérifier le nombre maximum de montres inotify :

cat /proc/sys/fs/inotify/max_user_watches

Pour définir le nombre maximum de montres inotify

Temporairement :

  • Exécuter sudo sysctl fs.inotify.max_user_watches= avec votre valeur préférée à la fin.

En permanence (informations plus détaillées) :

  • mettre fs.inotify.max_user_watches=524288 dans vos paramètres sysctl. Selon votre système, ils peuvent se trouver à l'un des emplacements suivants :
    • Debian/RedHat :/etc/sysctl.conf
    • Arch :placez un nouveau fichier dans /etc/sysctl.d/ , par exemple. /etc/sysctl.d/40-max-user-watches.conf
  • vous souhaiterez peut-être recharger les paramètres sysctl pour éviter un redémarrage :sysctl -p (Debian/RedHat) ou sysctl --system (Arche)

Vérifiez si le nombre maximum de montres inotify a été atteint :

Utilisez tail avec le -f (suivre) sur n'importe quel ancien fichier, par ex. tail -f /var/log/dmesg :- Si tout va bien, il affichera les 10 dernières lignes et fera une pause ; annuler avec Ctrl-C- Si vous n'avez plus de montres , il échouera avec cette erreur quelque peu énigmatique :

tail: cannot watch '/var/log/dmsg': No space left on device

Pour voir ce qui utilise les montres inotify

find /proc/*/fd -lname anon_inode:inotify |
   cut -d/ -f3 |
   xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
   uniq -c |
   sort -nr

La première colonne indique le nombre de fds inotify (mais pas le nombre de veilles) et la seconde indique le PID de ce processus [sources :1, 2].


Linux
  1. Traçage du noyau avec trace-cmd

  2. Linux – Un noyau corrompu sous Linux ?

  3. aligner le noyau de la macro

  4. Environnement de piratage du noyau

  5. Description des valeurs kernel.printk

Commande de surveillance Linux

Commande Dmesg sous Linux

Commande Sysctl sous Linux

Linux est-il un système d'exploitation ou un noyau ?

Le noyau Linux contre. Mac noyau

Utilisation de la commande Watch sous Linux