Disable ACKs and the Nagle algorithm

You can gain significant performance improvements by disabling delayed acknowledgments (ACKs) and the Nagle algorithm.

Disable delayed ACKs

You can turn off delayed ACKs to improve Dimensions CM performance.

The speed of the data exchange between the Dimensions CM server and connected machines is affected by how that data is received and sent. When data is received, there is a delayed acknowledgment, or delayed ACK.

Instead of acknowledging every packet, a delay is introduced before an acknowledgment is sent, allowing more data to come in and be acknowledged in one ACK. When small packets are being sent, this can have a negative impact on Dimensions CM performance.

To switch off delayed ACKs:

System Command or action
Solaris (9 and 10)

Run the following command:

/usr/sbin/ndd -set /dev/tcp tcp_deferred_ack_interval 5

HP-UX (IA64 and RISC)

Run the following command:

ndd -set /dev/tcp tcp_deferred_ack_interval 1

AIX

Run the following commands:

/usr/sbin/no –o tcp_nodelayack=1
/usr/sbin/no –o delayack=0
/usr/sbin/no –o delayackports={}

Windows
  1. For instructions on how to set the TcpAckFrequency value, see the Microsoft help.
  2. Using the instructions in step 1, set the registry key TcpAckFrequency to 1.

For an example of how to disable delayed ACKs, see Example.

Back to top

Disable the Nagle algorithm

The Nagle algorithm prevents excessive sending of small segments by coalescing small segments into larger ones.

The application network protocol details determine the Nagle algorithm usefulness, especially the granularity and frequency of messages sent by the application, and the expected purpose of the application.

According to test results, Dimensions CM performs better with the Nagle algorithm disabled. Test the performance in your environment.

By default, the Nagle algorithm is switched off in Dimensions CM, and the configuration file dm.cfg has the following entry:

DM_SOCKET_OPTIONS TCP_NODELAY(1)

If you accept the default, you also need to disable the Nagle algorithm on the operating system.

Caution: If there is a hardware network problem, you could lose TCP packets.

To disable the Nagle algorithm:

System Command or action
Solaris (9 and 10)

Run the following command:

/usr/sbin/ndd -set /dev/tcp tcp_naglim_def 1

HP-UX (IA64 and RISC)

Run the following command:

ndd -set /dev/tcp tcp_naglim_def 1

AIX

Run the following command:

/usr/sbin/no –o tcp_nagle_limit=1

Windows

Check that the DM_SOCKET_OPTION symbol in the dm.cfg configuration file has the TCP_NODELAY option set to (1):

TCP_NODELAY(1)

Caution: If you do not add these settings to the system files, they may be lost when the machine is rebooted.

For an example of how to disable the Nagle algorithm, see Example.

Back to top

Example

The following example demonstrates how to switch off delayed ACKs and the Nagle algorithm in the environment consisting of an AIX Dimensions CM server and a Solaris database running an Oracle.

On a Solaris database server:

  1. To turn off the delayed ACKs and disable the Nagle algorithm, run this command:

    Copy code
    /usr/sbin/ndd -set /dev/tcp tcp_deferred_ack_interval 5
    /usr/sbin/ndd -set /dev/tcp tcp_naglim_def 1
  1. Shut down Oracle.

  2. Restart Oracle. The commands affect only the running system. These settings are lost when you reboot.

  3. To make the changes permanent, add the following lines to the /etc/system file:

    Copy code
    set tcp:tcp_deferred_ack_interval=5 
    set tcp:tcp_naglim_def=1

On an AIX Dimensions CM server:

  1. To turn off the delayed ACKs, run these commands:

    Copy code
    /usr/sbin/no -o delayack=0
    /usr/sbin/no -o delayackports={}
    /usr/sbin/no -o tcp_nagle_limit=1
    /usr/sbin/no -o rfc1323=1
  2. Restart the Dimensions CM listener so that the changes take effect. The commands affect only the running system. The settings are lost when you reboot.

  3. To make the changes permanent, add the following lines to the /etc/rc.net file:

    Copy code
    /usr/sbin/no -o delayack=0
    /usr/sbin/no -o delayackports={}
    /usr/sbin/no -o tcp_nagle_limit=1
    /usr/sbin/no -o rfc1323=1

Back to top