2010-06-03 18 views
5
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); 

Je suis un peu confus sur le paramètre maxevents. Disons que je veux écrire un serveur capable de gérer jusqu'à 10k connexions. Est-ce que je définirais maxevents comme 10000 alors, ou devrait-il être plus bas pour une raison quelconque?epoll_wait: maxevents

Répondre

9

Maxevents est simplement la longueur du tableau struct epoll_events pointé par *events. Si le noyau a plus que le nombre d'événements à nourrir à votre programme à ce moment-là, il verra que cela ne devrait pas parce que vous ne vous attendez pas à ce que beaucoup soient retournés dans ce _wait particulier.?

Vous aurez probablement besoin de tester la taille optimale pour votre programme. La taille optimale peut même différer selon l'architecture. Pour les petits nombres de descripteurs de fichiers interrogés, vous pouvez facilement définir maxevents au nombre de fichiers (et dimensionner le tableau events en conséquence), mais la probabilité de tous les fichiers nécessitant une attention en même temps est faible, donc vous pourriez probablement pour utiliser une valeur maxevents inférieure.