10 Gb/s and DCMTK

All other questions regarding DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
tpalagyi
Posts: 3
Joined: Fri, 2016-02-05, 13:53

10 Gb/s and DCMTK

#1 Post by tpalagyi »

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.

J. Riesmeier
DCMTK Developer
Posts: 2506
Joined: Tue, 2011-05-03, 14:38
Location: Oldenburg, Germany
Contact:

Re: 10 Gb/s and DCMTK

#2 Post by J. Riesmeier »

Thanks for the report. This is a known issue (or let's called it "requested feature", see Feature #597).

Post Reply

Who is online

Users browsing this forum: Google [Bot], Majestic-12 [Bot] and 1 guest