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

StackOverflow https://stackoverflow.com/questions/535768

  •  22-08-2019
  •  | 
  •  

Вопрос

Я работаю над демоном, который отслеживает события файлов через 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-разрядная версия). .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top