Hi, ich wollte fragen ob jemand von euch schonmal epoll für die Netzwerkprogrammierung verwendet hat. Ich würde das nämlich gern für einen TCP Server nutzen, aber ich find keinen richtigen BeispielCode im Internet.. Die ManPages und google helfen mir auch nicht sehr weit! Hat jemand von euch zufällig Code und Erfahrung damit und könnte mir unter die Arme greifen? Gruß, Pascal P.S.: Ich programmiere unter und für Linux
Pascal O. wrote: > ich wollte fragen ob jemand von euch schonmal epoll für die > Netzwerkprogrammierung verwendet hat. Ich würde das nämlich gern für > einen TCP Server nutzen, aber ich find keinen richtigen BeispielCode im > Internet.. Die ManPages und google helfen mir auch nicht sehr weit! Ich würde dir vorschlagen, gleich die libevent(*) zu verwenden, statt direkt mit epoll zu arbeiten. Damit bleibst du kompatibel zu anderen unix-Geschmacksrichtungen, und kannst z.B. (auf *BSD) kqueue statt epoll verwenden, was nochmals einen tick schneller ist. *) http://monkey.org/~provos/libevent/
hi das geht leider nicht, da ich den code auf servern laufen lasse, auf die ich so keinen admin zugriff habe. auf denen ist überall linux drauf. bisher hatte ich es mit select gemacht, aber würde es gern auf epoll zuschneiden, um mehr performace rauszuholen.
Ich kann mir kaum vorstellen, das eine umstellung von poll/select auf epoll wirklich die performace verändert. Hast du ein paar mehr Infos zu epoll, was dich das vermuten lässt?
> Ich kann mir kaum vorstellen, das eine umstellung von poll/select auf > epoll wirklich die performace verändert. > Hast du ein paar mehr Infos zu epoll, was dich das vermuten lässt? select fliegt schonmal wg. der üblichen Beschränkung auf Sockets mit FH<1024 raus. und poll hat einen gewissen overhead, weil bei jedem Durchlauf die Datenstruktur sequentiell durchlaufen werden muss, d.h. festzustellen welche Sockets grad aktiv sind hat eine komplexität von O(n). epoll hingegen O(1). macht bei wenigen Verbindungen kaum einen Unterschied, bei >10000 offenen TCP-Connections hingegen schon einen deutlichen. > das geht leider nicht, da ich den code auf servern laufen lasse, auf die > ich so keinen admin zugriff habe. Wenn du auf den Servern select/poll verwenden kannst, lässt das darauf schliessen, dass du einen Compiler benutzen darfst. Das reicht auch schon, um die libevent zu verwenden. Die muss ja nicht unbedingt systemweit installiert sein, es reicht ja, wenn deine Anwendung dagegen linkt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.