Как я могу узнать, нет ли у меня часов inotify?

Я использую приложение, которое потребляет часы inotify. Я уже установил

fs.inotify.max_user_watches=32768

в /etc/sysctl.conf, но вчера вечером приложение прекратило индексирование, если я не запустил его вручную, что заставляет меня подозревать, что я вне часов.

Поскольку я не знаю, в чем заключается компромисс, когда я увеличиваю это число (оно потребляет больше оперативной памяти?), Я не знаю, стоит ли просто увеличивать это число, поэтому я бы хотел знаю, есть ли способ, которым я могу сказать, использует ли он все эти часы и каковы могут быть компромиссы для его увеличения.

47
задан 23 May 2017 в 15:39

2 ответа

Я не знаю, стоит ли мне просто увеличивать это число.

Простой способ проверить, достигли ли вы значения max_user_watches, с вашим пользователем - использовать inotifywatch из пакета [ 114] и проверьте, можете ли вы по-прежнему собирать информацию из файла.

Например, inotifywatch -v /home/bruno/.profile для меня возвращает:

Establishing watches...
Total of 1 watches.
Finished establishing watches, now collecting statistics.

Таким образом, inotify не имеет проблем при создании новых часов, здесь нет проблем.

Если вы достигли своего максимального предела в часах inotify, он вернет что-то вроде

Failed to watch /home/bruno/.profile; upper limit on inotify watches reached!

Если вы увидите что-то подобное, значит, вы достигли предела и вам нужно будет увеличить допустимый лимит часов. [ 1120]

Это потребляет больше оперативной памяти?

Да, это так. Но согласно этой старой статье количество, которое он потребляет, минимально по сравнению с другими аспектами работающего рабочего стола.

- ИСПОЛЬЗОВАНИЕ ПАМЯТИ -

Структуры данных inotify имеют малый вес:

Часы inotify - 40 байт, устройство inotify - 68 байт, событие inotify - 272 байта

Таким образом, предполагая, что устройство имеет 8192 часов, структуры будут использовать только 320 КБ памяти. Максимально допустимое количество одновременно существующих устройств - 8, но это по-прежнему всего 2,5 МБ.

Каждое устройство может также иметь 256 событий в очереди за раз, что составляет 68 КБ на устройство. И только 0,5 МБ, если все устройства открыты и имеют полную очередь событий.

Таким образом, примерно 3 МБ памяти используется в редких случаях, когда все открыто и заполнено.

Каждое средство наблюдения inotify выводит inode каталога / файла в памяти, размер inode для файловой системы различен, но давайте предположим, что он составляет 512 байтов.

Таким образом, предполагая, что максимальное количество глобальных наблюдений является активным, это будет определять 32 МБ инодов в кэше инодов. Опять не проблема в современной системе.

Я, конечно, предполагаю, что вещи не сильно изменились с тех пор, как была написана статья, но, глядя на цифры, я бы не волновался, и увеличение лимита не сильно увеличит потребление ОЗУ.


Похожие посты о inotify

0
ответ дан 23 May 2017 в 15:39

Как узнать, что у вас нет часов? tail скажет!

  • Запустите tail с опцией -f (следовать) для любого старого файла, например, tail -f /var/log/dmesg:
    • Если все хорошо, он покажет последние 10 строк и остановится; прервать с помощью Ctrl-C
    • Если у вас нет часов , произойдет сбой с этой несколько загадочной ошибкой :
      tail: cannot watch '/var/log/dmsg': No space left on device
  • ]

Для любопытных: почему хвост является «хвостиком»?

Можете ли вы увеличить часы? На сколько? Есть ли компромиссы?

Краткий ответ: Конечно, нет пота. Если хотите, переходите к полумиллиону (524288) ... используемая дополнительная память должна быть незначительной в современной системе с 4 ГБ + памяти.

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: