LOAD-04Large files (1 GiB images)
Pass
All large images arrived intact and memory stayed bounded with default settings: at most 174 MB working set in the sender and 264 MB in the receiver while 8 GiB were in flight. One association moved a 1 GiB image in about 4.9 s (208 MB/s); STOW-RS stored it with default options in 2.7 s and WADO-RS read it back at 444 MB/s.
What this test proves
Shows that 1 GiB images can be written, sent, stored and read back with DicomKit while memory use stays small on both sides.
How it was run
- Each test image has 2,048 frames of 512x512 16-bit pixels (1 GiB of pixel data); the sender streams it and never holds the whole image.
- One image is written to disk with DicomFile.SaveAsync and read back.
- C-STORE sends 1 GiB images over 1, 2, 4 and 8 parallel associations to a DicomServer that stores them with FileSystemStoreHandler; then five studies of about 1.6 GB are sent at once.
- STOW-RS stores one 1 GiB image with default server options, WADO-RS reads it back and single frames are fetched from it; a second server with MaxPartBytes set to 1 GiB must refuse the same image with HTTP 413.
- Files are verified and deleted after each step.
How correctness was checked
The SHA-256 of the pixel data of every received 1 GiB and 512 MiB image (and of every 10th small image) was equal to what was sent; the image read back by WADO-RS had the same SHA-256; frames fetched by WADO-RS were byte-identical to the original frames.
Measured results
| Step | Operations | Ops/s | MB/s | p50 | p95 | p99 | Max | Errors | Peak memory |
|---|---|---|---|---|---|---|---|---|---|
| C-STORE 1 GiB, 1 at a time 2 images |
2 | 0.2 | 208 | 4,870 ms | 4,959 ms | 4,959 ms | 4,959 ms | 0 | 99 MB |
| C-STORE 1 GiB, 2 in parallel 4 images |
4 | 0.3 | 327 | 6,066 ms | 6,476 ms | 6,476 ms | 6,480 ms | 0 | 109 MB |
| C-STORE 1 GiB, 4 in parallel 4 images |
4 | 0.5 | 500 | 8,139 ms | 8,196 ms | 8,196 ms | 8,196 ms | 0 | 174 MB |
| C-STORE 1 GiB, 8 in parallel 8 images |
8 | 0.4 | 360 | 22,069 ms | 22,752 ms | 22,752 ms | 22,752 ms | 0 | 238 MB |
| 5 studies at once (1 GiB + 512 MiB + 100 CT each) 510 images, one association per study |
510 | 21.1 | 327 | 8.66 ms | 18.2 ms | 7,696 ms | 15,681 ms | 0 | 264 MB |
| STOW-RS 1 GiB with MaxPartBytes set to 1 GiB refused with HTTP 413 as expected (the part is larger than the limit) |
1 | 0.6 | 0 | 211 MB | |||||
| STOW-RS 1 GiB, default server options | 1 | 0.4 | 379 | 2,704 ms | 2,704 ms | 2,704 ms | 2,704 ms | 0 | 212 MB |
| WADO-RS 1 GiB, streamed | 1 | 0.3 | 355 | 2,308 ms | 2,308 ms | 2,308 ms | 2,308 ms | 0 | 212 MB |
| WADO-RS single frames of the 1 GiB image 33 single-frame requests, one 16-frame request and one rendered frame |
35 | 55.1 | 38.5 | 15.9 ms | 38.2 ms | 49.1 ms | 49.1 ms | 0 | 240 MB |
Latency is per operation (p50 = median, p95/p99 = 95th/99th percentile). Memory is the peak working set of the test process.
Test run
- Run
- a20bedea-bacd-468b-af8d-945829c4b81f
- Started (UTC)
- 2026-10-26 17:02:46, finished 2026-10-26 18:52:45
- Test PC
- Intel(R) Core(TM) i9-14900K, 24 cores / 32 threads, 64 GB RAM, NVMe SSD, Microsoft Windows 11 Pro build 26200.9711, .NET 10.0.12 (one PC, client and server on loopback)
- License
- Enterprise
- Source commit
- b804fb7
- DicomKit
- 1.0.0 SHA-256 96ada39062c07bca37511abfb6baac0a44d914fb705bac01d77cb02146fdac0e
- DicomKit.Imaging
- 1.0.0 SHA-256 015b51ea833039d934ba153cae50d393fb77846430ca3fc3d65b4fb8cf4346ed
- DicomKit.Web
- 1.0.0 SHA-256 2a2f4f7f02e1849929294062bee7dd8f3a24449428469c1fddb6982e77218a7b
- DicomKit.Web.AspNetCore
- 1.0.0 SHA-256 daa1105881f1c0b60ca9c788d52d41445bd653a9d190c8862a2b2b1386d5e37c