Я использовал select для обработки соединений, недавно произошло изменение, и наша библиотека сокетов была заменена на epoll для платформы linux.
моя архитектура приложения такова, что я делаю только один или максимум2 сокетных соединения и epoll / select на них в один поток.
Теперь, с недавним переходом на epoll, я заметил, что производительность приложения уменьшилась, я был удивлен и ожидал, что производительность будет расти или расти.Я попытался просмотреть различные другие части, и это единственный кусочек кода, который изменился.
имеет ли epoll снижение производительности с точки зрения скорости, если используется для очень небольшого числа сокетов (например, 1 или 2).
также следует отметить, что я запускаю около 125 таких процессов на одном компьютере (8 ядер процессора).может ли это быть так, что слишком много процессов, выполняющих epoll_wait на одной и той же машине, эта установка была похожа, когда я использовал select.
я заметил на коробке, что средняя загрузка намного выше, но использование процессора было почти таким же, что заставляет меняПодумайте, что больше времени тратится на ввод-вывод и, вероятно, на результат изменений, связанных с epoll.
любые идеи / указания относительно того, что мне следует искать, чтобы выявить проблему.
, хотя абсолютная задержка увеличиласьдовольно маленький, как в среднем 1 миллисекунд, но это система реального времени, и такие задержки обычно недопустимы.
Спасибо
Привет,
Обновление этого вопроса на последних находках, кромеот переключения от выбора к epoll, я обнаружил другое относительное изменение, более раннее время ожидания с выбором было 10 миллис, но с epoll время ожидания намного меньше, чем раньше (например, 1 мкр.), может установить слишком малое время ожидания в результате выбора или результат epoll при уменьшениипроизводительность в любом случае?
спасибо