Frage

Ich arbeite an einem Daemon, das Dateiereignis über inotify überwachen verschiedene Arten von Ereignissen ausgelöst werden, wenn Dateien zugegriffen werden kann. Ich habe gelesen, dass Uhren ein wenig teuer sind, da der Kernel ist der vollständige Pfadname jeder Datei Beobachtete zu speichern.

Wie viele Uhren würden zu viele?

Edit: Meistens fragt ich mich .. haben Sie jemals eine spürbare Leistungseinbuße zu sehen ist, wenn ja, wie viele Uhren ist es passiert? Ja, ich habe zu überwachen / rekursiv (aber es ist ein minimal Bootstrap-System).

War es hilfreich?

Lösung

AFAIK der Kernel nicht den Pfad zu speichern, sondern die Inode. Dennoch gibt es 540 Bytes pro Uhr auf einem 32-Bit-System. Doppelt so viel auf 64bit.

Ich weiß aus lsyncd (vielleicht möchten Sie, dass, um zu überprüfen?) Menschen, die eine Million Uhren haben. Es frisst nur ein Gigabyte Speicher.

Andere Tipps

Sie können die Systemgrenzen finden von /proc/sys/fs/inotify/max_user_instances (maximale Anzahl von inotify „Objekte“) und /proc/sys/fs/inotify/max_user_watches (maximale Anzahl von Dateien beobachtet) zu lesen, wenn Sie also diese Zahlen nicht überschreiten, es gibt zu viele ;-) Die maximale Anzahl der Uhren ist in der Regel mehrere Zehntausend tausend~~POS=HEADCOMP oder höher - auf meinem System, 262143 - was wahrscheinlich ist, als Sie jemals brauchen würde, es sei denn Sie jede Datei in einem Dateisystem zu sehen sind versucht, aber man sollte das nicht tun. Ich würde sagen, versuchen Sie einfach nicht mehr inotify Uhren zu verwenden, als Sie brauchen, und keine Sorge darüber, wenn Sie eine signifikante Abnahme der Leistung feststellen.

Meine 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 verwendet etwa 130M Speicher.

Ich verwende lsyncd einige Verzeichnisse synchron mit dem Disaster-Recovery-Server zu halten.

Keine Leistung Treffer- / Strafe auf dem Hauptserver.

100 Milliarden Billionen gazillions würde zu viele sein, wahrscheinlich. Kernel Korner - Intro inotify „Tausende von Uhren“ erwähnt zumindest so, dass Zahl nicht sein sollte Problem dar.

Es hängt davon ab, wie viel RAM Sie haben

Während 524288 die maximale Anzahl von Dateien, die angeschaut werden können, wenn Sie in einer Umgebung sind, die besonders wenig Speicher ist, können Sie möchten die Zahl senken. Jede Datei Uhr nimmt 540 Byte (32-Bit) oder ~ 1kB (64-Bit), so unter der Annahme, dass alle 524.288 Uhren verbraucht wird, dass die Ergebnisse in einer oberen Grenze von etwa 256 MB (32-Bit) oder 512 MB (64-Bit) .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top