epoll_wait: eventos máximos
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
Estoy un poco confundido acerca del parámetro maxevents . Digamos que quiero escribir un servidor que pueda manejar hasta 10k conexiones. ¿Definiría entonces maxevents como 10000 o debería ser menor por alguna razón?
Maxevents es solo la longitud de la struct epoll_events
matriz a la que apunta *events
.
Si el kernel tiene más que esa cantidad de eventos para enviar a su programa en ese momento, verá que no debería hacerlo porque no espera que se devuelvan tantos en ese _wait en particular.
Probablemente necesitarás experimentar con el tamaño óptimo para tu programa. El tamaño óptimo puede incluso diferir según la arquitectura. Para una pequeña cantidad de descriptores de archivos que se sondean, puede configurar fácilmente maxevents
la cantidad de archivos (y dimensionar la events
matriz en consecuencia), pero la probabilidad de que todos los archivos necesiten atención al mismo tiempo es baja, por lo que probablemente pueda usar un maxevents
valor más bajo.