STOW RS Upload Performance Measurements - dcm4che/dcm4chee-arc-light GitHub Wiki

Overview

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
  1. 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
  2. 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
  3. 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
⚠️ **GitHub.com Fallback** ⚠️