The tcp_nodelay or tcp_nagle_limit options

In AIX®, the TCP_NODELAY socket option is disabled by default, which might cause large delays for request/response workloads, that might only send a few bytes and then wait for a response. TCP implements delayed acknowledgments, as it expects to piggy back a TCP acknowledgment on a response packet. The delay is normally 200 ms.

Most TCP implementations implement the nagle algorithm, where a TCP connection can only have one outstanding small segment that has not yet been acknowledged. This causes TCP to delay sending any more packets until it receives an acknowledgement or until it can bundle up more data and send a full size segment.

Applications that use request/response workloads should use the setsockopt() call to enable the TCP_NODELAY option. For example, the telnet and rlogin utilities, Network File System (NFS), and web servers, already use the TCP_NODELAY option to disable nagle. However, some applications do not do this, which might result in poor performance depending on the network MTU size and the size of the sends (writes) to the socket.

When dealing with applications that do not enable TCP_NODELAY, you can use the following tuning options to disable nagle:

  • tcp_nagle_limit
  • The tcp_nodelay ISNO option
  • tcp_nodelayack
  • fasttimo
  • Interrupt coalescing on the adapter