Подтвердить что ты не робот

Что такое разумное количество часов inotify с Linux?

Я работаю над демоном, который отслеживает события файла через inotify для запуска различных типов событий при обращении к файлам. Я читал, что часы стоят немного дорого, потому что ядро ​​хранит полное имя пути для каждого просматриваемого файла.

Сколько часов будет слишком много?

Изменить: В основном, мне интересно. Вы когда-нибудь видели заметный удар производительности, если да, то сколько часов прошло? Да, я должен контролировать/рекурсивно (однако его минимальная загрузочная система).

4b9b3361

Ответ 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 упоминает "тысячи часов", поэтому по крайней мере это число не должно быть проблемой.