Darshit Shah wrote:
2. Regarding the socket options, we should spend some more time evaluating our options. My understanding of TCP_CORK is that it may be a useful option for Servers, but it doesn't really affect TCP clients in any useful way. This is because TCP_CORK modifies the minimum TCP packet size by buffering for as much data before sending it out. With the small request sizes that a HTTP client would generally send, I think it is better to follow Nagle's algorithm, since TCP_CORK will not afford us any noticeable advantage. On the other hand, it's non-portability will be a nightmare for us when trying to support OSX, BSD and Windows.
Most requests won't need TCP_CORK, as the request is already small enough to fit in a single packet (however, it may still be useful for providing the needed TFO hints to the kernel). Setting and unsetting a setsockopt is a couple of calls than can easily be hidden behind a #ifdef. Changing the whole application to sendto() is mucho more invasive, and I would be quite surprised if it worked cleanly in Windows.
(In addition to TFO already being Linux-only :P)



Reply via email to