在Linux中,进程可以打开的inotify实例数限制受每个用户ID最大数量的限制,在 / proc / sys / fs / inotify / max_user_instances 中指定 p>
自然就是限制每个进程,例如文件FD。由于inotify FD受用户ID的限制,因此它更有可能达到许多进程可能以相同用户ID运行的服务器上的限制。但我猜这有必要吗?
这是一个编程问题,因为我必须在我的代码中使用inotify,并希望为系统设置正确的限制。
答案 0 :(得分:9)
原因是阻止非root用户使用inotify
观看大量文件来执行系统操作。 inotify
结构需要不可忽略的内存来维护(并且不能将其换出到磁盘),因此需要对非特权提交的数量进行一些限制。
epoll
曾经有类似的限制(max_user_instances
和max_user_watches
),但最后max_user_instances
被移除,max_user_watches
被设置为4记忆的百分比。
应该提交类似的补丁用于inotify,但到目前为止还没有。
文件描述符基于每个进程受到限制,原因完全不同:当进程启动时,将分配文件描述符表,并且其大小与允许的最大文件描述符数成比例。保持这个尽可能小可以减少每个进程的内存开销。