New minor version - Fix for speedup and Compatibility from JRE 6 to JRE 11 and other improvements or fixes
This minor update contains several improvements:
Speedups:
- Remove or decrease extra sleep command while there are no more needed
- Digest by packet is optimized (mode being SENDMD5 or RECVMD5, while digest could be any from CRC32, ADLER32, MD5, MD2, SHA1, SHA256, SHA384, SHA512)
- Reduce the Local Digest computation when not needed (while Global Digest is done)
- Cache DB access for Business, Host and Rule only
- Note, this is deactivated if the server is in "MultipleMonitor" mode (since Cache can be not coherent).
- Improve TaskRunner for specific case of Update on rank update (only rank and stop date are updated, not all fields).
- Reduction of latency
Fixes:
- Bad programming practice corrections
- Improvement of documentation
- Improvement of Rest V2 Service to include information from FileMonitoring
- Improvement of logs (performances and adapted level)
- Upgrade of external dependencies
New versions for JRE 6, 8 and 11 separately provided from now:
- JRE 6 to JRE 11 compatibility, including 3 kind of packages:
Waarp*.jar
for JRE6,Waarp*-jre8.jar
for JRE8Waarp*-jre11.jar
for JRE11
General recommendations for speedup
If one has a very limited resource server and wants to ignore all consistency checks, then :
- using transfer with no MD5 mode will allow to improve about 10% to 20% the speed of transfer.
- disabling final local check (
localdigest
toFalse
) will allow to improve about 20% more to the speed of transfer (since optimization is already there). - disabling global check (
globaldigest
toFalse
) will allow to improve about 25% more to the speed of transfer.
So globally, one can improve up to 50% (we were able to reach 110 MBPS or 880 MbPS).
However, it is not recommended to have no check at all during transfers.
So we recommend to at least active global digest (globaldigest
to True
or unset as default value), which will bring about 30% of improvements of speed (compared to all options actives).
Other recommendations
- Java arguments: use
-Xms2048m -Xmx2048m
- XML configuration:
serverthread
to nb of core (default) or less if you want to limit the CPU usageclientthread
to 10 * serverthread (default) or less if you want to limit the CPU usage- ignore or set
usefastmd5
toFalse
(default) (not anymore efficient) digest
to7
(SHA-512 while MD5 being the default) or if you accept more collisions,2
for MD5 but really more efficient (about 50%)- ignore or set
globaldigest
toTrue
(default) (consistency check) localdigest
toFalse
(True
is the default) (optional consistency check, this fix limits greatly its impact however)- ignore or set
runlimit
to1000
(default) or less if you want to limit the CPU usage (concurrency of submitted transfers, do not set to lower than10
) blocksize
to a multiple of 16KB (64KB being the default, but do not set more than 256KB) (the higher, the smaller the number of packets)memorylimit
to a value acceptable for HTTP and REST services (default 1GB, could be set to less)sessionlimit
andgloballimit
to an acceptable bandwidth limitation (for instance 100 MBPS), default being no limit (note: limit is in Bytes per second and not bits per second)- ignore or set
usenio
toFalse
(default) (no more improvement with true) - Use CPU limitation to adjust bandwidth automatically to prevent CPU high consuming over 60% (here for the example since
0.6
) (global bandwidth is adapted automatically)usecpulimit
toTrue
(defaultFalse
, as forusejdkcpulimit
that could be ignored),cpulimit
to a value less than1.0
(0.6
for instance),connlimit
still to0
(default, unlimited):