Что такое разумное количество часов inotify с Linux?
Я работаю над демоном, который отслеживает события файла через inotify для запуска различных типов событий при обращении к файлам. Я читал, что часы стоят немного дорого, потому что ядро хранит полное имя пути для каждого просматриваемого файла.
Сколько часов будет слишком много?
Изменить: В основном, мне интересно. Вы когда-нибудь видели заметный удар производительности, если да, то сколько часов прошло? Да, я должен контролировать/рекурсивно (однако его минимальная загрузочная система).
Ответы
Ответ 1
AFAIK ядро не хранит путь, а inode. Тем не менее, есть 540 байт на Watch в 32-битной системе. Двойной размер на 64 бит.
Я знаю из Lsyncd (может быть, вы хотите проверить это?) людей, у которых миллион часов. Он просто ест гигабайт памяти.
Ответ 2
Вы можете найти системные ограничения, прочитав /proc/sys/fs/inotify/max_user_instances
(максимальное количество инотифицирующих объектов) и /proc/sys/fs/inotify/max_user_watches
(максимальное количество просмотренных файлов), поэтому, если вы превысите эти числа, это слишком много;-) Максимальное количество количество часов, как правило, несколько десятков тысяч или выше - на моей системе, 262143 - что, вероятно, больше, чем вам когда-либо понадобилось, если вы не пытаетесь смотреть каждый файл в файловой системе, но вы не должны этого делать, Я бы сказал, просто постарайтесь не использовать больше inotify часов, чем вам нужно, и не беспокойтесь об этом, если не заметите значительного снижения производительности.
Ответ 3
Моя информация:
[[email protected] ~]# cat /var/log/lsyncd.status | grep Inotify
Inotify watching 293208 directories
[[email protected] ~]# cat /proc/sys/fs/inotify/max_user_watches
1048576
lsyncd использует около 130M памяти.
Я использую lsyncd для синхронизации некоторых каталогов с сервером аварийного восстановления.
Отсутствие производительности/штраф на главном сервере.
Ответ 4
Вероятно, более 100 миллиардов триллионов газиллионов было бы слишком много. Kernel Korner - Intro to inotify упоминает "тысячи часов", поэтому по крайней мере это число не должно быть проблемой.