Streams Performance Tuning Steps
We have been working, with the help of Taiwan, on several Streams optimizations with long latency network links and we have achieved a significant improvement going from 400 LCR/s to more than 3000 LCR/s in the case of Taiwan as target database.
We should now introduce these optimizations to all the sites and compare the results. So I would like to ask you to implement the following changes:
TCP tuning
Apply the following changes to /etc/sysctl.conf and run sysctl -p to activate the changes (for all the RAC nodes):
# increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# increase Linux autotuning TCP buffer limits # min, default, and max
# number of bytes to use
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
Apply performance
From sqlplus as sysdba user:
alter table sys.streams$_apply_progress initrans 16 pctfree 10;
-- event to reduce the acknowledge time/frequency:
-- on each running instance (once per instance):
alter system set events '26749 trace name context forever, level 2';
-- on one RAC instance:
alter system set event='26749 trace name context forever, level 2' scope=spfile sid='*';
Network tuning
Introduce the following parameters in the sqlnet.ora file (for all the RAC nodes):
DEFAULT_SDU_SIZE=32767
RECV_BUF_SIZE=
SEND_BUF_SIZE=
The last 2 parameters must be calculated in base of the bandwidth of the link and the network Round Trip time. I have calculated the value for each site:
- RAL: 7125000
- GridKa: 4500000
- CNAF: 4500000
- IN2P3: 6000000
- BNL: 54750000
- Triumf: 63375000
- Taiwan: 117000000
- SARA: 6375000
- NDGF: 14400000
- PIC: 14400000