280 IBM TotalStorage DS6000 Series: Performance Monitoring and Tuning
performance in LAN environments, but you may still want to experiment with these
parameters.
The default setting of 64 KB for most Linux configurations is fine for most LANs, but too low for
Internet connections. Set this to a value between 256 KB for T1 lines or lower, and 2 to 4 MB
for T3, OC-3, or even faster connections.
To determine the optimal buffer size for your environment, you can use the following formula:
buffer size =2 *bandwidth *delay
Where bandwidth is the bandwidth of the slowest connection between the server and the
client.
Changing the source and recompiling the kernel for TCP
Go to include/linux/skbuff.h header file in your Linux source directory and edit the values for
the maximum send and receive windows.
#define SK_WMEM_MAX 262140
#define SK_RMEM_MAX 262140
Changing values on a running system
Change the maximum parameters to an appropriate value, depending on your connection
speed.
For a Linux kernel 2.4.x system, add the following lines to /etc/rc.d/rc.local:
echo "4096 65536 4194304">/proc/sys/net/ipv4/tcp_rmem
echo "4096 65536 4194304">/proc/sys/net/ipv4/tcp_wmem
The three values describe the minimum, default, and maximum window sizes used by TCP.
The Linux kernel 2.4.x actually does a good job of adjusting the window size automatically,
depending on network conditions. You simply need to specify appropriate minimum and
maximum values.
8.3 Linux monitoring tools
In this section we discuss the tools available for the supported Linux distributions, that will aid
you in the performance monitoring and tuning activities of your Linux system I/O when using
the DS6000.
8.3.1 uptime
The uptime command can be used to see how long the server has been running, how many
logged on users there are, and gives a quick overview of what average load the server has.
The system
load average is displayed for the last one, five, and fifteen minute intervals. The
load average is not a percentage, but instead the number of processes in queue waiting to be
processed. If processes that request CPU time are blocked (which means the CPU has no
time for processing them), the load average will increase. On the other hand, if each process
gets immediate access for CPU time and there are CPU cycles lost, the load will decrease.
The optimal value of the load would be 1, which means each process gets immediate access
to the CPU and there are no CPU cycles lost. The typical loads can vary from system to
system: For a uniprocessor workstation, 1–2 might be acceptable, whereas you will probably
see values of 8–10 on multiprocessor servers.