Summary: | CPU starvation on outbound DICOMweb transfers | ||
---|---|---|---|
Product: | Orthanc | Reporter: | Sébastien Jodogne <s.jodogne> |
Component: | Plugin - DICOMweb | Assignee: | Sébastien Jodogne <s.jodogne> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | --- | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | All |
Description
Sébastien Jodogne
2020-06-29 15:16:12 CEST
[BitBucket user: Michel Rozpendowski] [BitBucket date: 2019-12-20.13:52:02] I tested by setting `foo` to send to `bar` in DICOMweb with `ChunkedTransfers` set to `false` and noticed that the performance issue is gone. No performance issue either with the DICOMweb plugin version 0.6 with Orthanc 1.5.8 and `ChunkedTransfers` set to `true` as the feature was implemented in DICOMweb plugin version 1.0 so the setting is just ignored. The problem is therefore in the implementation of `ChunkedTransfers` `true` for the DICOMweb plugin version 1.0. [BitBucket user: Alain Mazy] [BitBucket date: 2019-12-20.17:42:55] this line seems to be the culprit: https://hg.orthanc-server.com/orthanc/file/a648c2d67a6502fe0cac76e540a11566da6adf27/Core/HttpClient.cpp#L243 since there is a huge realloc \+ memcpy eachtime a 65KB chunk is transferred out of the 600MB buffer \(in case of a 600MB instance\). I’ll arrange that one of these days. [BitBucket user: Alain Mazy] [BitBucket date: 2019-12-23.09:44:41] this has been fixed in this commit: https://hg.orthanc-server.com/orthanc/changeset/d5740d3b1d67a09e3fa4d545df2080f58324731b Note that the fix is in Orthanc Core, not the Dicom-web plugin… This initial fix could lead to a crash in Orthanc 1.6.0 to 1.7.2. Orthanc 1.7.3 will include another fix to resolve the crash: https://hg.orthanc-server.com/orthanc/rev/8c559dd5034b |