Maxim Dounin wrote:
You may note that first packet was ack'ed after 100ms - default delayed
ack timeout in FreeBSD. Since your next packet is small - OS waits
before sending it, and sends only after previous packet was ack'ed. And
since memcached don't get the whole request, it has nothing to answer -
so ack was sent only after timeout.
Setting net.inet.tcp.delayed_ack to 0 makes times much more real:
I would suggest that you simply send the packet in one write() call,
rather than setting TCP_NODELAY. Since memcache has a maximum size of
1MB anyway, you're not going to be creating impossibly big memory
buffers (hopefully).
Dean.