web-dev-qa-db-fra.com

Qu'est-ce qu'une quantité raisonnable de montres inotify avec Linux?

Je travaille sur un démon qui surveille les événements de fichiers via inotify pour déclencher différents types d'événements lors de l'accès aux fichiers. J'ai lu que les montres sont un peu chères, car le noyau stocke le nom de chemin complet de chaque fichier surveillé.

Combien de montres serait trop?

Edit: Surtout, je me demande ... avez-vous déjà vu une performance notable, si oui, à combien de montres cela s'est-il passé? Oui, je dois surveiller/récursivement (cependant c'est un système minimal amorcé).

41
Tim Post

AFAIK le noyau ne stocke pas le chemin d'accès, mais l'inode. Néanmoins, il y a 540 octets par montre sur un système 32 bits. Doublez autant sur 64 bits.

Je connais de Lsyncd (peut-être que vous voulez vérifier cela) des gens qui ont un million de montres. Il mange juste un gigaoctet de mémoire.

24
axkibe

Vous pouvez trouver les limites du système en lisant /proc/sys/fs/inotify/max_user_instances (nombre maximum d '"objets" inotify) et /proc/sys/fs/inotify/max_user_watches (nombre maximum de fichiers regardés), donc si vous dépassez ces nombres, c'est trop ;-) Le nombre maximum de montres est généralement de plusieurs dizaines de milliers ou plus - sur mon système, 262143 - ce qui est probablement plus que vous ' d jamais besoin, sauf si vous essayez de regarder chaque fichier dans un système de fichiers, mais vous ne devriez pas le faire. Je dirais, essayez simplement de ne pas utiliser plus de montres inotify que nécessaire, et ne vous inquiétez pas à moins que vous ne remarquiez une baisse significative des performances.

23
David Z

Mes infos:

[foo@caffeine ~]# cat /var/log/lsyncd.status | grep Inotify
Inotify watching 293208 directories

[foo@caffeine ~]# cat /proc/sys/fs/inotify/max_user_watches
1048576

lsyncd utilise environ 130 Mo de mémoire.

J'utilise lsyncd pour garder certains répertoires synchronisés avec le serveur de récupération après sinistre.

Aucun impact/pénalité sur le serveur principal.

9
eRadical

100 milliards de milliards de gazillions seraient probablement trop. Kernel Korner - Introduction à inotify mentionne "des milliers de montres" donc au moins ce nombre ne devrait pas être un problème.

5
Bombe

Cela dépend de la quantité de RAM que vous avez

Bien que 524288 soit le nombre maximal de fichiers pouvant être surveillés, si vous êtes dans un environnement particulièrement limité en mémoire, vous souhaiterez peut-être réduire le nombre. Chaque surveillance de fichier prend 540 octets (32 bits) ou ~ 1 Ko (64 bits), donc en supposant que toutes les 524288 montres sont consommées, ce qui se traduit par une limite supérieure d'environ 256 Mo (32 bits) ou 512 Mo (64 bits) .

3
user2529934