Performance
Industry-leading performance
Overview
- Test suite of 2,000 real-world files sourced from gov.uk, ranging from under 0.01 MB to 34 MB in size
- Mean file size = 0.56 MB
- File types include: PDF, Word, Excel, Powerpoint, OpenDocument, CSV, image
- The test was run against v2.21.0 of Halo
AKS
Cluster configuration assumes specific memory and compute allocations for containers. Production performance will always depend on size and complexities of real world files. Configurations can be optimised to favour throughput or file processing speeds.
For these tests the following requests and limits were set on the pods.
| Service | Requested CPU | Requested memory | CPU Limit | Memory limit |
|---|---|---|---|---|
| Engine | 200m | 500Mi (524 MB) | 1 core | 3Gi (3.22 GB) |
| API | 200m | 1Gi (1.07 GB) | 1500m | 4Gi (4.29 GB) |
Small
Based on a single node (1 x D8as_v5) in a Kubernetes cluster comprising of:
- 5 Engines
- 8 virtual cores
- 32 GB memory
| Metric | Value |
|---|---|
| Throughput per hour | 14,000 files, 7.5 GB |
| Throughput per day | 337,000 files, 180 GB |
| Mean request latency (end to end) | 656ms |
| Rebuild success rate | 99.2% |
Medium
Based on 3 nodes (3 x D8as_v5) in a Kubernetes cluster comprising of:
- 15 Engines
- 8 virtual cores per node, 24 total
- 32 GB memory per node, 96 total
| Metric | Value |
|---|---|
| Throughput per hour | 41,000 files, 22 GB |
| Throughput per day | 984,000 files, 528 GB |
| Mean request latency (end to end) | 634ms |
| Rebuild success rate | 97.6% |
Large
Based on 5 nodes (5 x D8as_v5) in a Kubernetes cluster comprising of:
- 25 Engines
- 8 virtual cores per node, 40 total
- 32 GB memory per node, 160 total
| Metric | Value |
|---|---|
| Throughput per hour | 77,000 files, 42 GB |
| Throughput per day | 1,850,000 files, 1,008 GB |
| Mean request latency (end to end) | 775ms |
| Rebuild success rate | 99.2% |
OVA
Small
Based on a single VM (1 x F16s_v2) running the OVA, comprising of:
- 2 Engines
- 16 virtual cores
- 32 GB memory
For these tests the following requests and limits were set on the pods.
| Service | Requested CPU | Requested memory | CPU Limit | Memory limit |
|---|---|---|---|---|
| Engine | 1300m | 5Gi (5.37 GB) | 1300m | 5Gi (5.37 GB) |
| API | 1 core | 3Gi (3.22 GB) | 1 core | 3Gi (3.22 GB) |
| Metric | Value |
|---|---|
| Throughput per hour | 3,500 files, 1.9 GB |
| Throughput per day | 84,000 files, 45 GB |
| Mean request latency (end to end) | 849ms |
| Rebuild success rate | 99.5% |
Large
Based on a single VM (1 x F32s_v2) running the OVA, comprising of:
- 13 Engines
- 3 API Access replicas
- 32 virtual cores
- 64 GB memory
For these tests the following requests and limits were set on the pods.
| Service | Requested CPU | Requested memory | CPU Limit | Memory limit |
|---|---|---|---|---|
| Engine | 1300m | 3Gi (3.22 GB) | 1300m | 3Gi (3.22 GB) |
| API | 1 core | 3Gi (3.22 GB) | 1 core | 3Gi (3.22 GB) |
| API Access | 1 core | 2Gi (2.15 GB) | 3 cores | 2Gi (2.15 GB) |
| Metric | Value |
|---|---|
| Throughput per hour | 34,900 files, 17 GB |
| Throughput per day | 837,000 files, 412 GB |
| Mean request latency (end to end) | 557ms |
| Rebuild success rate | 99.3% |
OVA vs Kubernetes performance differences
- The OVA uses RKE with the Kubernetes control plane also using resources on the machine.
- Multi node clusters need to use a file share for storing files. io with this share will incur an overhead.
- While it limits the scalability, the OVA will inherently have faster network speeds between services due to all being on the same machine.