TCP/IP buffer size
In TCP/IP, packets that are sent must be acknowledged. If a packet is not acknowledged, then the sender must be able to resend the lost packet.
Operating systems implement this task by creating a buffer holding all packets sent. A packet is removed from the buffer after an acknowledgement packet (ACK) is received.
A simple formula defines the theoretical limit of a connection:
max transfer rate = TCP/IP buffer space / packet round trip time
As an example, assume a buffer with 16 Kbyte, a network with unlimited bandwidth but with 100 ms round trip time, and 1 Kbyte packets. The sender fills the buffer immediately with 16 packets. Some 50 ms later, the receiver gets the data and sends the acknowledgement packets. These ACKs are received by the sender 100 ms after the first transmission. The buffer is cleared and the filled again. So 16 Kbyte packets can be transmitted within 100 ms. In this case, the maximum transmit rate is 160 Kbyte/sec.
The tunable value in this calculation is the TCP/IP buffer space. The round trip time is difficult to change. This is a theoretical limit. In the real world there are other factors, like TCP/IP slow start, bandwidth limit or lost packets, that can influence the transfer rate.
Note the following points regarding the buffer space:
The default buffer size is 8 KB. The maximum size is 8 MB (8096 KB).
Increasing the buffer size improves throughput, reduces the occurrence of flowcontrol, and reduces CPU cost.
This is useful when transferring large data sets between WebSphere Application Server and a database.
If the buffer size it too large, paging can increase. IBM recommends setting the window size to 512 Kbyte. To do this, enable RFC 1323 support and enable selective acknowledgement (SACK).