Как освободить анонимный инод, созданный с помощью eventfd/eventpoll/timerfd?
Я пытаюсь измерить API с помощью Google Benchmark. Он имеет дело с кодом клиент / сервер. Приложение Google Benchmark несколько раз запускает пары setUp() TearDown(), чтобы соответствующим образом измерить время. Клиент / сервер работает через TCP Transport.
Проблема: в рамках одного процесса (Google Benchmark) клиент перезапускается много раз. Это приводит к существованию остаточных анонимных инодов и в результате я получаю ошибку
epoll: слишком много файлов открыто
Когда я пытаюсь lsof | grep "a_inode", я вижу, что все анонимные inode, созданные eventfd/eventpoll/filefd, существуют в открытом состоянии.
КОМАНДА PID TID ПОЛЬЗОВАТЕЛЬ FD ТИП РАЗМЕР УСТРОЙСТВА / ВЫКЛЮЧЕНО ИМЯ УЗЛА
gbench 6514 6517 boarnerges 1020u a_inode 0,13 0 9567 [eventfd]
gbench 6514 6517 boarnerges 1021u a_inode 0,13 0 9567 [eventpoll]
gbench 6514 6517 boarnerges 1022u a_inode 0,13 0 9567 [timerfd]
gbench 6514 6520 boarnerges cwd DIR 8,1 4096 543203 / home / boarnerges / project_GoogleBenchmark / build
gbench 6514 6520 boarnerges rtd DIR 8,1 4096 2 /
gbench 6514 6520 boarnerges txt REG 8,1 2494784 949699 / home / boarnerges / project_GoogleBenchmark / build / tests / tests / GBenchmarkTests / benchmark_client / it_gbenchmark_client
Как мне решить эту проблему? Могут ли анонимные inode быть освобождены изнутри процесса?