我使用一个使用inotify手表的应用程序。我有已设定
fs.inotify.max_user_watches=32768
在/etc/sysctl.conf
中,但是昨晚应用程序停止了索引,除非我手动运行它,这使我怀疑我已经没有表了。
由于我不知道增加这个数字(它是否消耗更多的RAM?),所以我不知道是否应该增加这个数字,所以我想知道是否有一种方法可以判断它是否正在使用所有这些手表,以及增加它的权衡可能是什么。
发布于 2012-06-24 10:13:58
检查是否达到max_user_watches
值的简单方法是,与用户一起从包inotify-tools
中使用inotifywatch
,并检查是否仍然可以从文件中收集信息。
例如,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!
如果你看到这样的东西,那么你已经达到了极限,需要增加允许的手表限制。
是的,确实如此。但是根据这个旧文章,与运行中的桌面的其他方面相比,它的消耗量是最小的。
-内存使用-- inotify数据结构重量轻: inotify手表是40字节inotify设备是68字节inotify事件是272字节所以假设一个设备有8192个手表,这些结构只消耗320 of的内存。在允许一次最多存在8个设备的情况下,每个设备仍然只有2.5MB,每个设备还可以一次排队256个事件,每个设备总计68 MB。如果打开所有设备并具有完整的事件队列,则只有.5 MB。因此,大约3MB的内存是使用在罕见的情况下,所有打开和充分。每个inotify手表都会将一个目录/文件的inode引脚在内存中,每个文件系统inotify的大小不同,但假设它是512 byes。因此,假设全局监视的最大数量是活动的,这将在inode缓存中锁定32 MB的inode。同样,现代系统也不是一个问题。
当然,我假设自从这篇文章被写以来,事情并没有发生很大的变化,但是看看我不担心的数字,增加这个限制不会增加内存的消耗。
inotify
的文章
https://askubuntu.com/questions/154255
复制相似问题