DICOMFuse performance investigations - GoogleCloudPlatform/healthcare-api-dicom-fuse GitHub Wiki

Test stand - 1:

  • Google Cloud VM - Windows Server 2016 Datacenter
  • DICOMFuse - v1.0.4
  • WinFsp - 2019.2
  • SSD - 100 GB
  • CPU - 12 vCPUs 2.2GHz
  • Memory - 15 Gb
  • VM location - europe-west2
  • Dataset location - europe-west2
  • Files count - 1000

Throughput test results:

File size MiB Upload rate - 1 thread MiB/s Upload rate - 5 threads MiB/s Upload rate - 16 threads MiB/s
0,99 26,83 52,25 59,77
20,84 50,57 50,6 50,7

Note: for small files, you should use more threads. DICOMFuse supports a maximum of 16 threads on Windows.

Test stand - 2:

  • Google Cloud VM - Ubuntu 18.04 LTS
  • DICOMFuse - v1.0.4
  • libfuse2
  • SSD - 100 GB
  • CPU - 12 vCPUs 2.2GHz
  • Memory - 15 Gb
  • VM location - europe-west2
  • Dataset location - europe-west2
  • Files count - 1000

Throughput test results:

File size MiB Upload rate - 1 thread MiB/s Upload rate - 5 threads MiB/s Upload rate - 16 threads MiB/s
0,99 3,47 19,59 62,72
20,84 15,51 50,6 51,75

Note: for small files, you should use more threads.

Fuse implementations on Linux(libfuse2) and Windows(WinFsp) are different. On Linux, a new copy thread starts after a file has been uploaded to the server and a response is received that the upload was successful or not. On Windows, a new copy thread starts before a file has been uploaded to the server and a response is received. That's why throughput on Windows is higher than on Linux. To get more info, see the issue in WinFsp repo.