24.05.2014 Views

AIX Version 4.3 Differences Guide

AIX Version 4.3 Differences Guide

AIX Version 4.3 Differences Guide

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

There is a packet size threshold where it is cheaper to do the checksum<br />

processing completely on the CPU. The driver only offloads checksums for<br />

packets larger than this threshold. This threshold is maintained internally as a<br />

variable or constant.<br />

Currently, <strong>AIX</strong> checksums transmitted packets before copying them to the<br />

network adapter, and checksum received packets after they have been copied<br />

from the adapter to processor memory. Checksumming packets on the adapter<br />

increases the possibility of undetected corruption during the copy from or to the<br />

processor. This possibility is very small. The NDD provides a way for you to turn<br />

off the checksum offload capability for an adapter in cases where corruption is<br />

believed to be occurring.<br />

7.10.1 Limitations<br />

The feature of checksum offload only applies to TCP on ATM over IP <strong>Version</strong> 4. It<br />

means:<br />

• This driver does not offload checksum processing for IPv6 TCP connections,<br />

• This driver does not offload checksum processing for UDP datagrams.<br />

• The checksum processing is not allowed when IPSEC is running since IPSEC<br />

may encrypt data, and the checksum for the data should be done before it is<br />

encrypted. Offloading, in this case, will cause the checksum to be calculated<br />

after the data has been encrypted, which is wrong. When IPSEC is running,<br />

the checksum must be calculated before the data is encrypted.<br />

7.10.2 Command Changes<br />

The command ifconfig is changed to handle a new interface option,<br />

checksum_offload. Table 38 lists the new options.<br />

Table 38. Ifconfig New Options for Checksum Offload<br />

checksum_offload<br />

Enables checksum offload if the adapter associated with the<br />

interface supports it. This is the default for adapters that<br />

support checksum offload.<br />

-checksum_offload<br />

Disables checksum offload. This is the default for adapters<br />

that do not support checksum offload.<br />

7.11 Thread-Based Application Connection Enhancement (<strong>4.3</strong>.2)<br />

The thundering herd problem is a well-known, industry-wide performance<br />

problem that effects some Web servers. When multiple threads call accept()<br />

function on the same socket, all of these threads are woken up for a single new<br />

connection. For example, if there are 256 threads sleeping in accept(), only one<br />

thread needs to be woken up to handle the new connection. However, currently<br />

all 256 threads are woken up. Since only one thread receives the connection, the<br />

other 255 immediately go back to sleep. This results in wasted CPU time due to<br />

the unnecessary scheduling, running, and sleeping of the 255 threads.<br />

The cause for this problem is that the socket layer uses a hash table to keep<br />

chains of threads waiting for events on specific sockets. All threads waiting for an<br />

event on a specific socket will hash to the same slot, but other threads waiting for<br />

events on other sockets could also hash to the same slot. For this reason, all the<br />

threads in the slot must be woken up when the event occurs, so that the right<br />

Networking Enhancements 177

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!