inotify FD - 为什么每个用户ID的限制而不是每个进程?

时间:2012-06-19 22:11:07

标签: linux linux-kernel inotify

在Linux中,进程可以打开的inotify实例数限制受每个用户ID最大数量的限制,在 / proc / sys / fs / inotify / max_user_instances 中指定 p>

自然就是限制每个进程,例如文件FD。由于inotify FD受用户ID的限制,因此它更有可能达到许多进程可能以相同用户ID运行的服务器上的限制。但我猜这有必要吗?

这是一个编程问题,因为我必须在我的代码中使用inotify,并希望为系统设置正确的限制。

1 个答案:

答案 0 :(得分:9)

原因是阻止非root用户使用inotify观看大量文件来执行系统操作。 inotify结构需要不可忽略的内存来维护(并且不能将其换出到磁盘),因此需要对非特权提交的数量进行一些限制。

epoll曾经有类似的限制(max_user_instancesmax_user_watches),但最后max_user_instances被移除,max_user_watches被设置为4记忆的百分比。

应该提交类似的补丁用于inotify,但到目前为止还没有。

文件描述符基于每个进程受到限制,原因完全不同:当进程启动时,将分配文件描述符表,并且其大小与允许的最大文件描述符数成比例。保持这个尽可能小可以减少每个进程的内存开销。