我的工作是通过的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位)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top