STOW RS Upload Performance Measurements - dcm4che/dcm4chee-arc-light GitHub Wiki
This page briefly guides measuring upload performance of stowrs tool used to upload different types of DICOM objects to STOW-RS server using STOW-RS services. STOW-RS server is simulated by usage of stowrsd tool.
Normally, each time a STOW-RS client (archive UI or stow-rs tool) uploads DICOM objects to STOW-RS server (archive) it is opening a new TCP connection.
- stow-rs tool : Several DICOM objects are sent in a single HTTP multipart request using a single TCP connection to archive. However, there is a limit to the number of files or data size that can be sent in one HTTP multipart request.
- Archive UI : Each DICOM file is sent in a single HTTP multipart request using a single TCP connection. This leads to opening several TCP connections thereby impacting speed to a certain extent. If HTTPS is used in STOW-RS service invocations, there is an additional impact of SSL handshakes for each of these TCP connections, again thereby impacting the speed.
stowrs tool has been enhanced
to allow limiting number of files that is sent in one multipart request using --limit
flag. This allows user to overcome
the earlier limitation of sending only a limited number of files in a single HTTP multipart request in a single TCP connection
to archive by splitting several hundreds or thousands of files into several HTTP multipart requests using a single
TCP connection.
The purpose of these upload performance measurements using enhanced stow-rs tool with the new --limit
flag is to
evaluate the size of data / no. of files that can be sent in one HTTP multipart request and its time consumption in addition
to invoking several HTTP multipart requests in one TCP connection allowing for a higher upload bandwidth. Finally, the
upload performance measurements also make use of parallel TCP connections used for several concurrent invocations of
STOW-RS service to archive.
This may help in improving the Upload DICOM objects function in archive UI which also acts as STOW-RS client.
The guide shall cover tests pertaining to following :
-
Modality wise data used in tests for various sets of no. of files or various sets of data size split and sent using several HTTP multipart requests in one TCP connection
Modality Type Size per object MR 513.3KB CT 1.9MB CR 5.9MB DX 11MB
-
No. of files split and sent using several http requests in one TCP connection : Eg. Total no. of files to be sent to archive is 2153
Limit Description - No Limit specified : Send all files in one HTTP multipart request in one TCP connection 5 Limit 5 DICOM files per HTTP multipart request thereby invoking 431 HTTP multipart requests in one TCP connection 10 Limit 10 DICOM files per HTTP multipart request thereby invoking 216 HTTP multipart requests in one TCP connection 50 Limit 50 DICOM files per HTTP multipart request thereby invoking 44 HTTP multipart requests in one TCP connection 100 Limit 100 DICOM files per HTTP multipart request thereby invoking 22 HTTP multipart requests in one TCP connection -
Data Size split and sent using several http requests in one TCP connection - Eg. Total size of DICOM data to be sent to archive is 1GB. Note : Limit can be specified only as number of files, therefore to limit HTTP request based on data size, one has to use the corresponding number of files equalling that data size.
Limit Description - No Limit specified : Send all data in one HTTP multipart request in one TCP connection. 250MB Limit each HTTP multipart request containing 250MB DICOM data thereby invoking 4 HTTP multipart requests in one TCP connection 500MB Limit each HTTP multipart request containing 500MB DICOM data thereby invoking 2 HTTP multipart requests in one TCP connection 750MB Limit each HTTP multipart request containing 750MB DICOM data thereby invoking 2 HTTP multipart requests in one TCP connection 1GB Limit each HTTP multipart request containing 1GB DICOM data thereby invoking 1 HTTP multipart request in one TCP connection -
Number of parallel TCP connections : Concurrent invocations of STOW RS service wherein each TCP connection shall contain one HTTP multipart request. For the tests, each parallel invoked STOW RS service contains either specific number of files (eg. 5 files) or specific data size (eg. 500MB).
Parallel TCP Connections Description 2 Store 10 objects or 1000MB data using 2 parallel connections 4 Store 20 objects or 2000MB data using 4 parallel connections 6 Store 30 objects or 3000MB data using 6 parallel connections 8 Store 40 objects or 4000MB data using 8 parallel connections