Pregunta

Estoy trabajando en un demonio que monitorea los eventos de archivos a través de inotify para desencadenar diferentes tipos de eventos cuando se accede a los archivos. He leído que los relojes son un poco caros, debido a que el kernel está almacenando el nombre de ruta completo de cada archivo que se está observando.

¿Cuántos relojes serían demasiados?

Edit: Sobre todo, me pregunto .. ¿alguna vez has visto un notable impacto en el rendimiento, si es así, por la cantidad de relojes ha sido? Sí, tengo que vigilar / recursiva (sin embargo es un sistema de bootstrap mínimo).

¿Fue útil?

Solución

Que yo sepa el núcleo no es el almacenamiento de la ruta, pero el nodo-i. Sin embargo, hay 540 bytes por reloj en un sistema de 32 bits. Duplicar tanto de 64 bits.

Sé por Lsyncd (tal vez quiere ver eso?) Las personas que tienen un millón de relojes. Sólo come un gigabyte de memoria.

Otros consejos

Puede encontrar los límites del sistema mediante la lectura de /proc/sys/fs/inotify/max_user_instances (número máximo de "objetos") y inotify /proc/sys/fs/inotify/max_user_watches (número máximo de archivos observaba), por lo que si se excede esos números, es demasiado ;-) El número máximo de relojes es por lo general varias decenas de miles o más alta - en mi sistema, 262.143 - que es probablemente más de lo que se necesitaría menos que usted está tratando de ver todos los archivos en un sistema de archivos, pero que no debería estar haciendo eso. Yo diría, simplemente no tratan de usar los relojes más inotify de lo que necesita, y no se preocupe por lo menos que note una disminución significativa en el rendimiento.

Mi Info:

[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 utiliza alrededor de 130 M de memoria.

Yo uso Lsyncd para mantener algunos directorios en sincronización con el servidor de recuperación de desastres.

Sin impacto en el rendimiento / penalización en el servidor principal.

100 mil millones de billones gazillions serían demasiados, probablemente. Kernel Korner - Introducción a Inotify menciones “miles de relojes” para que al menos ese número no debe ser una problema.

Depende de la cantidad de RAM que tienes

Mientras 524288 es el número máximo de archivos que se pueden ver, si estás en un ambiente que es particularmente limitaciones de memoria, es posible que desee reducir el número. Cada reloj archivo ocupa 540 bytes (32 bits) o ~ 1 kb (64 bits), por lo que si se asume que todos los 524288 relojes son consumidos que se traduce en una cota superior de alrededor de 256 MB (32 bits) o 512 (64-bit) .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top