Find it

Wednesday, September 9, 2009

Modify tcp_nodelayack parameter on AIX

Disabling TCP-delayed acknowledgements on AIX systems -

On AIX systems, the default behavior for TCP connections results in delayed acknowledgements (Ack packets). When tcp_nodelayack is set to 0 (the default setting), TCP delays sending Ack packets by up to 200ms, the Ack attaches to a response, and system overhead is minimized.

Setting the tcp_nodelayack parameter to 1 causes TCP to send immediate acknowledgement (Ack) packets to the sender.

Setting tcp_nodelayack to 1 will cause slightly more system overhead, but can result in much higher performance for network transfers if the sender is waiting on the receiver's acknowledgement.

To make the parameter setting, issue the following:

# no -p -o tcp_nodelayack=1
Setting tcp_nodelayack to 1
Setting tcp_nodelayack to 1 in nextboot file

The -p flag makes the change persistent, so that it will still be in effect at the next boot. This is a dynamic change that takes effect immediately.

To verify if the setting has been changed -

# no -a | grep tcp_nodelayack
tcp_nodelayack = 1


  1. Excellent post. The information is concise and easy to understand. Thank you.

  2. Please provide similar setting for Solaris 10

    1. You would use "ndd". Here's how you see what it is set to:

      # ndd /dev/tcp tcp_deferred_ack_interval

      AIX defaults to 200ms, Solaris to 100ms. AIX this 200ms is either turned on, or turned off. With Solaris, you would set this to 0:

      ndd /dev/tcp tcp_deferred_ack_interval 0

  3. So we dont need reboot after changing this parameter,right?

    1. Correct, but only new connections will get the updated value.