什么是inotify的手表与Linux的一个合理的?
题
我的工作是通过的inotify监控文件的事件时,文件被访问引发的各类事件的守护进程。我已阅读,手表是有点贵,因为内核将正在被观看的每个文件的全路径名。
有多少手表是太多?
编辑:大多数情况下,我想知道..你见过一个显着的性能命中,如果是的话,在没有多少手表发生的呢?是的,我必须监控/递归(但是其最小的自举系统)。
解决方案
AFAIK内核不存储路径名,但索引节点。不过,也有每观看540个字节的32位系统上。双象多在64位。
我从Lsyncd知道(也许你想检查出来吗?)谁有一百万手表的人。它只是吃的存储器中的千兆字节。
其他提示
您可以找到通过阅读/proc/sys/fs/inotify/max_user_instances
和/proc/sys/fs/inotify/max_user_watches
(最大文件数观看)(inotify的“物”的最大数目)的系统限制,所以如果超过这些数字,这是太多;-)手表的最大数量为通常几万或更高 - 我的系统,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使用的存储器约130M。
我用lsyncd保持一些目录同步进行灾难恢复服务器。
没有性能命中/惩罚主服务器上。
100个亿万亿gazillions是太多了,大概。 内核科纳 - 简介inotify的提到“千手表”所以至少这个数字不应该是一个问题
这取决于你多少RAM了
虽然524288是可以观看,如果在其特别内存受限的环境是文件的最大数量,则可能希望降低的数量。每个文件表占用540个字节(32位)或〜1kB的(64位),因此假定所有524288只手表被消耗的结果中的一个上界的周围256MB(32位)或512MB(64位)