TCP_NODELAY is crucial here because of bad interactions between
Nagle's Algorithm and Delayed ACKs. With connection keepalive
between the client and DN, the conversation looks like:
1. Client -> DN: Read block X
2. DN -> Client: data for block X
3. Client -> DN: Status OK (successful read)
4. Client -> DN: Read block Y
The fact that step #3 and #4 are both in the client->DN direction
triggers Nagling. If the DN is using delayed ACKs, this results
in a delay of 40ms or more.

TCP_NODELAY disables nagling and thus avoids this performance
disaster.