epoll_wait: eventos máximos

Resuelto someguy asked hace 14 años • 1 respuestas
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?

someguy avatar Jun 04 '10 03:06 someguy
Aceptado

Maxevents es solo la longitud de la struct epoll_eventsmatriz 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 maxeventsla cantidad de archivos (y dimensionar la eventsmatriz 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 maxeventsvalor más bajo.

nategoose avatar Jun 03 '2010 21:06 nategoose