What are the recommended settings for the XCOMDFLT parameters TCPSRCVB and TCPSSNDB?
The default value for both these parameters is 64K. Testing has shown that 64K was the optimum value for both the TCPSRCVB and TCPSSNDB parameters, setting the buffer size for receive and send respectively to 64K. This default value does not increase memory too much, nor does it detract from performance. The maximum value allowed for this parameter may differ from one z/OS version to another. If errors occur during server start-up, then the value of this parameter may need to be lowered.
In the time of OS/390, TCPIP's default maximum size was in the 32K-64K range, but nowadays with z/OS the default maximum size is a lot higher, typically 250K. There might be a problem if the site personnel who administer z/OS Communications Server have set this value below the value you have specified for TCPSRCVB and TCPSSNDB.
To see the actual value for the maximum allowed buffer size at your site, you can use this command:
The output will look something like this:
EZZ2500I NETSTAT CS V1R10 TCPIP01 296
TCP CONFIGURATION TABLE:
DEFAULTRCVBUFSIZE: 00016384 DEFAULTSNDBUFSIZE: 00016384
DEFLTMAXRCVBUFSIZE: 00262144 SOMAXCONN: 0000000010
MAXRETRANSMITTIME: 120.000 MINRETRANSMITTIME: 0.500
ROUNDTRIPGAIN: 0.125 VARIANCEGAIN: 0.250
VARIANCEMULTIPLIER: 2.000 MAXSEGLIFETIME: 30.000
DEFAULTKEEPALIVE: 00000120 DELAYACK: YES
RESTRICTLOWPORT: NO SENDGARBAGE: NO
TCPTIMESTAMP: YES FINWAIT2TIME: 600
UDP CONFIGURATION TABLE: .............
The important value here is the one for DEFLTMAXRCVBUFSIZE. In this display, this is the name of the TCPIP configuration parameter TCPMAXRCVBUFSIZE.
For customers wishing to increase these buffer sizes we suggest first increasing them to 128K, and then running tests to verify performance levels. If, at 128K, performance levels are good and there are no storage problems, then try setting them both to 0. In that case both parameters will be set to the socket implementation default represented by TCPMAXRCVBUFSIZE.
What is the impact of the TCPSSNDB and TCPSRCVB settings on storage consumption? These buffers will get allocated per socket. Starting up the XCOM server STC will open at least one listener socket. Should you have configured XCOM to do SSL transfers as well, then you'll have another listener socket open, hence another buffer. Each locally-initiated transfer will also need a buffer. So, to estimate the storage you'll need for the buffers, you can use this formula:
(n+1)*bufsize (without SSL)
(n+2)*bufsize (with SSL)
where 'n' is the number of simultaneous transfers initiated by this server.
By changing TCPSRCVB and TCPSSNDB from 64 to 0 (in that particular case to a socket implementation default of 250K) we have seen reported a 20% reduction in elapsed times on the slowest links.
There may therefore be great benefits to be had by setting these parameters appropriately.