Skip to content

libuv notes

Nathaniel J. Smith edited this page Mar 10, 2017 · 1 revision

Some notes from reading libuv:

  • UDP sends seem to be dispatched immediately without any backpressure to the app

  • IPV6_V6ONLY uniformly disabled

  • In general, uses SetFileCompletionNotificationModes to try and avoid bouncing through the IOCP when possible; they say this is a major performance win. I'm skeptical about this transferring over, though, given our yield point semantics – I think the win they're talking about is basically the greedy write/read optimization.

  • Handling of SetFileCompletionNotificationModes for UDP has some significant complications to work around bugs

  • On Windows, sets both SO_REUSEADDR and SO_EXCLUSIVEADDR to false, to allow rebinding of TIME_WAIT sockets. But then there's https://github.com/joyent/libuv/issues/150

  • On windows, optionally issues multiple AcceptEx calls simultaneously (for efficiency under high accept load I guess)

  • There are some complications around cancellation and LSPs... if a "non-IF SLSP" is installed, then libuv uses WSAIoctl to get the base handle before trying to cancel things

Clone this wiki locally