Я пытаюсь измерить 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 6517boarnerges 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_GoogleBenchmarktests / tests / GBenchmarkTests / benchmark_client / it_gbenchmark_client
Как мне решить эту проблему?Можно ли освобождать анонимные inode из процесса?