Хммм ... Я немного запутался в комментариях к вашему вопросу и ответах на них.
Когда ядро открывает файл, оно проверяет очереди inotify для генерации и ставит в очередь запись для него. Это процесс, который выполняет системный вызов open(2)
, поэтому мне странно, что вы можете порадоваться, открывая более 100 файлов в секунду, а ядро где-то теряет информацию. Проблема, с которой вы столкнулись (скорее всего, но я могу ошибаться), заключается в том, что процессор inotify не успевает получить такое количество открывающих событий, и очередь заполняется.
У вас есть два подхода здесь. Первый включает расширение очереди inotify, чтобы иметь возможность поддерживать больше ресурсов. Я не знаю, есть ли в очереди inotify какая-то конфигурация времени выполнения, которая позволяет вам это делать (в любом случае, вы можете перейти к исходному тексту ядра и настроить его) Вторая, вероятно, включает плохой дизайн в процессоре inotify ... если ваш процессор обрабатывает записи inotify по одной за раз, и давайте предположим, что вам нужно открыть tcp-соединение с удаленным сайтом, чтобы регистрировать такие события, тогда у вас возникнут серьезные проблемы. Поскольку вы не показываете никакого кода, идентифицирующего вещи, которые могут замедлять работу считывателя inotify, я не могу дать вам некоторые средства, чтобы найти решение, но проблема в том, что получатель inotify не посещает очередь для обработки 100 событий / секунда (или больше, чем вы говорите в комментариях)
Предположим, вы открываете очередь для получения запросов .... но затем не читаете ее в темпе, который позволяет ей опустошаться. Ну, у очереди есть верхний предел, и когда вы ее достигнете, вы не сможете хранить больше вещей в очереди ... вы должны что-то делать. Вы видите, куда я хочу пойти?