Domanda

Sto lavorando su un demone che monitora gli eventi dei file tramite inotify per attivare vari tipi di eventi quando si accede ai file.Ho letto che gli orologi sono un po' costosi, perché il kernel memorizza il nome del percorso completo di ogni file controllato.

Quanti orologi sarebbero troppi?

Modificare:Soprattutto mi chiedo..hai mai notato un notevole calo delle prestazioni e, in caso affermativo, in quanti orologi si è verificato?Sì, devo monitorare/ricorsivamente (tuttavia è un sistema bootstrap minimo).

È stato utile?

Soluzione

Per quanto ne sappia il kernel non memorizza il percorso, ma l'inode. Tuttavia, ci sono 540 byte per guardare su un sistema a 32 bit. Raddoppia tanto su 64bit.

So per Lsyncd (forse si vuole verificare che fuori?) Le persone che hanno un milione di orologi. E 'appena mangia un gigabyte di memoria.

Altri suggerimenti

È possibile trovare i limiti del sistema di lettura /proc/sys/fs/inotify/max_user_instances (numero massimo di "oggetti" inotify) e /proc/sys/fs/inotify/max_user_watches (numero massimo di file osservava), quindi se si superano questi numeri, è troppi ;-) Il numero massimo di orologi è di solito diverse decine di migliaia o più alto - sul mio sistema, 262.143 - che è probabilmente più di quanto si potrebbe mai bisogno a meno che non si sta cercando di guardare tutti i file in un file system, ma non si dovrebbe farlo. Direi, solo che non tenta di utilizzare gli orologi più inotify di quanto è necessario, e non ti preoccupare se non si nota un calo significativo delle prestazioni.

Le mie 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 utilizza circa 130M di memoria.

Io uso lsyncd di tenere alcune directory in sincronia con il server di ripristino di emergenza.

Nessuna prestazione hit / penalità sul server principale.

100 miliardi di migliaia di miliardi gazillions sarebbero troppi, probabilmente. Kernel Korner - Introduzione a inotify menzioni “migliaia di orologi” così almeno quel numero non dovrebbe essere un problema.

Dipende da quanta ram hai

Anche se 524288 è il numero massimo di file che possono essere guardati, se ti trovi in ​​un ambiente con memoria particolarmente limitata, potresti voler abbassare il numero.Ogni controllo di file occupa 540 byte (32 bit) o ​​~ 1 kB (64 bit), quindi presupponendo che tutti i 524288 controlli vengano consumati si ottiene un limite superiore di circa 256 MB (32 bit) o ​​512 MB (64 bit) .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top