With Oracle Solaris 10 1/13, the performance of secure copy or scp
is significantly improved for high latency networks.
Oracle Solaris 10 1/13 enabling a TCP receive window size up to 1 MB has up to 8 times faster transfer times over the latency range 50 - 200 msec compared to the previous Oracle Solaris 10 8/11.
The default TCP receive window size of 48 KB delivered similar performance in both Oracle Solaris 10 1/13 and Oracle Solaris 10 8/11.
In this study, settings above 1 MB for the TCP receive window size delivered similar performance to the 1 MB results.
The tuning of the TPC receive window has been available in Oracle Solaris for some time. This improved performance is available with Oracle Solaris 10 1/13 and Oracle Solaris 11.
Performance Landscape
Configuration Summary
Test Systems:
1 TB memory
Oracle Solaris 10 1/13
Oracle Solaris 10 8/11
48 GB memory
Oracle Solaris 10 1/13
Oracle Solaris 10 8/11
Driver System:
48 GB memory
Oracle Solaris 10
Router / Programmable Delay System:
48 GB memory
Oracle Solaris 10
Switch in between the router and the 2 test systems
Benchmark Description
This benchmark measures the scp
performance
between two systems
with variable router delays in the network between the two
systems.
A file size of 48 MB was used while measuring the affects of
varying the latency (network delays) and varying the
TCP receive window size.
Key Points and Best Practices
-
The WAN emulator (aka.
hxbt
) is used in the router to achieve delays. Verification of network function and characteristics confirmed after setting the simulator using Netperf latency and bandwidth tests between driver and test system. - Transfers performed over 1 GbE private, dedicated network.
-
Files were transferred to and from
/tmp
(i.e. in memory) on the test systems to minimize effect of filesystem performance and variability on the measurements. -
Larger TCP receive windows than default can be enabled using the system-wide
parameter
tcp_recv_hiwat
(e.g. to enable 1024 KB windows using this method, use the command:ndd -set /dev/tcp tcp_recv_hiwat 1048576
). To make this change persistent the command will have to be added to system startup scripts. sshd
on target system must be restarted before any benefit can be observed after increasing the enabled tcp receive buffer size. (e.g: can restart with the command/usr/sbin/svcadm restart svc:/network/ssh:default
)-
Note that
tcp_recv_hiwat
is a system-wide variable that adjusts the entire TCP stack. Care, therefore, must be taken to make sure that changes do not adversely affect your environment. - Geographically distant servers can be affected by connection latencies of the kind presented here.
See Also
-
WAN emulator (
htbx
) instructional blog. - Oracle Solaris Tunable Parameters Reference Manual
- SPARC T4-4 Server
oracle.com OTN - Sun Fire X4170 M2 Server
oracle.comOTN -
Oracle Solaris
oracle.com OTN