GNU/Linux >> Linux Esercitazione >  >> Linux

Limite di controllo inotify del kernel raggiunto

È sicuro aumentare quel valore e quali sarebbero le conseguenze di un valore troppo alto?

Sì, è sicuro aumentare quel valore e sotto ci sono i possibili costi [fonte]:

  • Ogni usato inotify watch occupa 540 byte (sistema a 32 bit) o ​​1 kB (doppio - su 64 bit) [fonti:1, 2]
  • Questo viene dalla memoria del kernel , che non è scambiabile.
  • Supponendo che tu abbia impostato il massimo a 524288 e che tutti siano stati utilizzati (improbabile), utilizzeresti circa 256 MB/512 MB di memoria del kernel a 32 bit/64 bit.
    • Tieni presente che la tua applicazione utilizzerà anche memoria aggiuntiva per tenere traccia degli handle di inotify, dei percorsi di file/directory, ecc. -- quanto dipende dal suo design.

Per controllare il numero massimo di inotify watch:

cat /proc/sys/fs/inotify/max_user_watches

Per impostare il numero massimo di inotify watch

Temporaneamente:

  • Esegui sudo sysctl fs.inotify.max_user_watches= con il tuo valore preferito alla fine.

Permanentemente (informazioni più dettagliate):

  • inserisci fs.inotify.max_user_watches=524288 nelle impostazioni di sysctl. A seconda del tuo sistema, potrebbero trovarsi in uno dei seguenti posti:
    • Debian/RedHat:/etc/sysctl.conf
    • Arch:inserisce un nuovo file in /etc/sysctl.d/ , per esempio. /etc/sysctl.d/40-max-user-watches.conf
  • potresti voler ricaricare le impostazioni di sysctl per evitare un riavvio:sysctl -p (Debian/RedHat) o sysctl --system (Arco)

Controlla se è stato raggiunto il numero massimo di inotify watch:

Usa tail con -f (segui) opzione su qualsiasi vecchio file, ad es. tail -f /var/log/dmesg :- Se tutto va bene, mostrerà le ultime 10 righe e farà una pausa; annulla con Ctrl-C- Se sei senza orologi , fallirà con questo errore un po' criptico:

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

Per vedere cosa sta esaurendo inotify watch

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 prima colonna indica il numero di inotify fds (non il numero di watch però) e la seconda mostra il PID di quel processo [fonti:1, 2].


Linux
  1. Un "panico del kernel"?

  2. Linux – Inoltro IP del kernel?

  3. Efficienza di molti orologi Innotify o chiamate statistiche?

  4. Limite di memoria PHP

  5. allineare il macro kernel

Comando di sorveglianza di Linux

Comando Dmesg in Linux

Comando Sysctl in Linux

Linux è un sistema operativo o un kernel?

Kernel Linux vs. Kernel Mac

Utilizzo del comando Watch in Linux