During testing on 10 Gb/s network I experienced very low bandwidth usage during the tests: ~ 1.5 Gb/s instead of the 8 Gb/s I measured with IPerf and with my own Java tool for network transfer speed measurement.
Investigation showed that DCMTK unfortunately always set TCP send and receive buffers by setsocopt (in dulfsm.cc and dul.cc):
bufLen = 65536; // a socket buffer size of 64K gives best throughput for image transmission
...
(void) setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *) &bufLen, sizeof(bufLen));
(void) setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *) &bufLen, sizeof(bufLen));
This was probably good approach before TCP autotuning was introduced, but since it is available in newer kernels (>2.6) setting SO_SNDBUF or SO_RCVBUF is switching off the TCP autotune feature that results terrible performance over 10 Gb/s (see http://www.psc.edu/index.php/networking/641-tcp-tune).
When I commented out these setsockopt lines in
./dcmnet/libsrc/dulfsm.cc
./dcmnet/libsrc/dul.cc
the newly built tools could reach ~5.2 Gb/s bandwidth utilization.
10 Gb/s and DCMTK
Moderator: Moderator Team
-
- DCMTK Developer
- Posts: 2506
- Joined: Tue, 2011-05-03, 14:38
- Location: Oldenburg, Germany
- Contact:
Re: 10 Gb/s and DCMTK
Thanks for the report. This is a known issue (or let's called it "requested feature", see Feature #597).
Who is online
Users browsing this forum: Google [Bot], Majestic-12 [Bot] and 1 guest