Каково разумное количество часов inotify в Linux?
Вопрос
Я работаю над демоном, который отслеживает события файлов через inotify, чтобы запускать различные типы событий при доступе к файлам.Я читал, что часы стоят немного дороже, потому что ядро хранит полный путь к каждому просматриваемому файлу.
Сколько часов будет слишком много?
Редактировать:В основном мне интересно..видели ли вы когда-нибудь заметное снижение производительности, если да, то через сколько часов это произошло?Да, мне нужно отслеживать/рекурсивно (однако это минимальная загрузочная система).
Решение
AFAIK, ядро хранит не путь, а индексный дескриптор.Тем не менее, в 32-битной системе на каждый Watch приходится 540 байт.В два раза больше на 64-битной версии.
Я знаю по Lsyncd (может быть, вы хотите это проверить?) людей, у которых есть миллион часов.Он просто съедает гигабайт памяти.
Другие советы
О системных ограничениях можно узнать, прочитав /proc/sys/fs/inotify/max_user_instances
(максимальное количество «объектов» inotify) и /proc/sys/fs/inotify/max_user_watches
(максимальное количество просматриваемых файлов), поэтому, если вы превысите это число, это будет слишком много ;-) Максимальное количество просмотров обычно составляет несколько десятков тысяч или выше - в моей системе 262143 - что, вероятно, больше, чем вы когда-либо понадобится, если только вы не пытаетесь просмотреть каждый файл в файловой системе, но вам не следует этого делать.Я бы сказал, просто старайтесь не использовать больше часов inotify, чем вам нужно, и не беспокойтесь об этом, если не заметите значительного снижения производительности.
Моя информация:
[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 использует около 130 МБ памяти.
Я использую lsyncd для синхронизации некоторых каталогов с сервером аварийного восстановления.
Никакого снижения производительности/штрафа на главном сервере.
100 миллиардов триллионов миллиардов, вероятно, было бы слишком много. Kernel Korner — Введение в inotify упоминает «тысячи часов», так что, по крайней мере, это число не должно быть проблемой.
Это зависит от того, сколько у тебя оперативной памяти
Хотя 524288 — это максимальное количество файлов, которые можно просмотреть, если вы находитесь в среде с особенно ограниченным объемом памяти, вы можете уменьшить это число.Каждая проверка файла занимает 540 байт (32-разрядная версия) или ~1 КБ (64-разрядная версия), поэтому, если предположить, что все 524 288 проверок будут использованы, верхняя граница составит около 256 МБ (32-разрядная версия) или 512 МБ (64-разрядная версия). .