Как освободить анонимный инод, созданный с помощью 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 быть освобождены изнутри процесса?

0 ответов

Другие вопросы по тегам