epoll_wait: maxevents

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

Я немного смущен maxevents параметром. Скажем, я хочу записать сервер, который может обработать до 10k соединений. Я определил бы maxevents как 10 000 затем, или это должно быть быть ниже по некоторым причинам?

10
задан someguy 3 June 2010 в 20:14
поделиться

1 ответ

Maxevents - это просто длина массива структуры epoll_events, на который указывает *events.

Если ядро имеет более этого количества событий для подачи в вашу программу в это время, оно увидит, что это не должно быть, потому что вы не ожидаете, что многие будут возвращены в этом конкретном _wait.

Вам, вероятно, придется поэкспериментировать с оптимальным размером этого для вашей программы. Оптимальный размер может даже отличаться в зависимости от архитектуры. Для небольшого количества опрашиваемых файловых дескрипторов вы можете довольно легко просто установить maxevents на количество файлов (и размер массива events соответственно), но вероятность того, что все файлы будут нуждаться во внимании одновременно, низкая, поэтому вы, вероятно, сможете использовать более низкое значение maxevents.

13
ответ дан 3 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: