Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I generally say yes. The fixed timer is for the delayed ACK. That was a terrible idea. Both Linux and Windows now have a way to turn delayed ACKs off, but they're still on by default.

TCP_QUICKACK, which turns off delayed ACKs, is in Linux, but the manual page is very confused about what it actually does. Apparently it turns itself off after a while. I wish someone would get that right. I'd disable delayed ACKs by default. It's hard to think of a case today where they're a significant win. As I've written in the past, delayed ACKs were a hack to make remote Telnet character echo work better.

A key point is asymmetry. If you're the one who's doing lots of little writes, you can either turn set TCP_NODELAY at your end, or turn off delayed ACKs at the other end. If you can. Things doing lots of little writes but not filling up the pipe, typically game clients, can't change the settings at the other end. So it became a standard practice to do what you could do at your end.



You should sign your post with your name (in this topic), in case a lot of people are not familiar with who you are :).


For others, their name is in their bio and is John Nagle.


Disagree. It's a lot more fun when everyone has to figure it out for themselves. :)


Some linux settings apply to every TCP connection which can be a very surprising result and hard to debug. I can see someone wanting to time out a feature, so it doesn't upset the rest of the system forever.


On macOS add the line net.inet.tcp.delayed_ack=0 to the file /etc/sysctl.conf (which doesn't initially exist).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: