¿Es seguro aumentar ese valor y cuáles serían las consecuencias de un valor demasiado alto?
Sí, es seguro aumentar ese valor y, a continuación, se encuentran los posibles costos [fuente]:
- Cada uno usado inotify watch ocupa 540 bytes (sistema de 32 bits) o 1 kB (doble - en 64 bits) [fuentes:1, 2]
- Esto sale de la memoria del núcleo , que no se puede intercambiar.
- Suponiendo que estableció el máximo en 524288 y se usaron todos (improbable), estaría usando aproximadamente 256 MB/512 MB de memoria kernel de 32 bits/64 bits.
- Tenga en cuenta que su aplicación también usará memoria adicional para realizar un seguimiento de los identificadores de inotify, rutas de archivos/directorios, etc., cuánto depende de su diseño.
Para comprobar el número máximo de relojes inotify:
cat /proc/sys/fs/inotify/max_user_watches
Para establecer el número máximo de relojes inotify
Temporalmente:
- Ejecutar
sudo sysctl fs.inotify.max_user_watches=
con su valor preferido al final.
Permanentemente (información más detallada):
- poner
fs.inotify.max_user_watches=524288
en la configuración de su sysctl. Dependiendo de su sistema, pueden estar en uno de los siguientes lugares:- Debian/RedHat:
/etc/sysctl.conf
- Arco:poner un nuevo archivo en
/etc/sysctl.d/
, p.ej./etc/sysctl.d/40-max-user-watches.conf
- Debian/RedHat:
- es posible que desee volver a cargar la configuración de sysctl para evitar un reinicio:
sysctl -p
(Debian/RedHat) osysctl --system
(Arco)
Compruebe si se ha alcanzado el número máximo de relojes inotify:
Usa tail
con el -f
(seguir) opción en cualquier archivo antiguo, p. tail -f /var/log/dmesg
:- Si todo está bien, mostrará las últimas 10 líneas y hará una pausa; aborte con Ctrl-C- si no tiene relojes , fallará con este error algo críptico:
tail: cannot watch '/var/log/dmsg': No space left on device
Para ver lo que está consumiendo relojes 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 primera columna indica el número de inotify fds (aunque no el número de relojes) y la segunda muestra el PID de ese proceso [fuentes:1, 2].