Disable ACKs and the Nagle algorithm

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

Disable delayed ACKs

The speed of the exchange of data 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. Turning off delayed ACKs should improve performance.

To switch off delayed ACKs:

System Command or action
Solaris (9 and 10) /usr/sbin/ndd -set /dev/tcp tcp_deferred_ack_interval 5
HP-UX (IA64 and RISC) ndd -set /dev/tcp tcp_deferred_ack_interval 1
AIX /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 details, 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) /usr/sbin/ndd -set /dev/tcp tcp_naglim_def 1
HP-UX (IA64 and RISC) ndd -set /dev/tcp tcp_naglim_def 1
AIX /usr/sbin/no –o tcp_nagle_limit=1

Windows

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

TCP_NODELAY(1)

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

Back to top

Example

In the following example, the environment has an AIX Dimensions CM server and a Solaris database server 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 will be 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 will be 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