epoll und kqueue: Wie Betriebssysteme lernten, effizient zu warten
Epoll and Kqueue: How Operating Systems Learned to Wait Efficiently

Hochperformante Server verbringen die meiste Zeit mit Warten auf I/O. Frühe Ansätze wie select und poll skalierten schlecht, weil sie bei jedem Aufruf alle File Descriptors scannen mussten. epoll unter Linux und kqueue unter BSD drehen das Modell um: Man registriert sein Interesse einmalig beim Kernel, der dann nur bei Zustandsänderungen benachrichtigt. Die Kosten wachsen mit der Aktivität, nicht mit der Anzahl der Verbindungen. Dieser Artikel erklärt die Funktionsweise, die Unterschiede und warum Go's Runtime darauf aufbaut.
Der schwierigste Teil von I/O ist nicht das Lesen von Daten. Es ist zu wissen, wann man aufhören sollte zu warten.