GNU/Linux >> Tutoriales Linux >  >> Linux

Se alcanzó el límite de vigilancia de notificación de kernel

¿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
  • es posible que desee volver a cargar la configuración de sysctl para evitar un reinicio:sysctl -p (Debian/RedHat) o sysctl --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].


Linux
  1. ¿Un “pánico del núcleo”?

  2. Linux – ¿Reenvío de IP del kernel?

  3. Linux:¿un núcleo corrupto en Linux?

  4. alinear núcleo macro

  5. Entorno de piratería del kernel

Comando de vigilancia de Linux

Comando Dmesg en Linux

Comando Sysctl en Linux

¿Linux es un sistema operativo o un kernel?

Núcleo de Linux vs. Núcleo de Mac

Usando el comando Watch en Linux