mikrocontroller.net

Forum: PC-Programmierung epoll TCP Server


Autor: Pascal O. (raven761)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/

Autor: Pascal O. (raven761)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.