Skip to main content
Version: 2.23.0

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.

ServiceRequested CPURequested memoryCPU LimitMemory limit
Engine200m500Mi (524 MB)1 core3Gi (3.22 GB)
API200m1Gi (1.07 GB)1500m4Gi (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
MetricValue
Throughput per hour14,000 files, 7.5 GB
Throughput per day337,000 files, 180 GB
Mean request latency (end to end)656ms
Rebuild success rate99.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
MetricValue
Throughput per hour41,000 files, 22 GB
Throughput per day984,000 files, 528 GB
Mean request latency (end to end)634ms
Rebuild success rate97.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
MetricValue
Throughput per hour77,000 files, 42 GB
Throughput per day1,850,000 files, 1,008 GB
Mean request latency (end to end)775ms
Rebuild success rate99.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.

ServiceRequested CPURequested memoryCPU LimitMemory limit
Engine1300m5Gi (5.37 GB)1300m5Gi (5.37 GB)
API1 core3Gi (3.22 GB)1 core3Gi (3.22 GB)
MetricValue
Throughput per hour3,500 files, 1.9 GB
Throughput per day84,000 files, 45 GB
Mean request latency (end to end)849ms
Rebuild success rate99.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.

ServiceRequested CPURequested memoryCPU LimitMemory limit
Engine1300m3Gi (3.22 GB)1300m3Gi (3.22 GB)
API1 core3Gi (3.22 GB)1 core3Gi (3.22 GB)
API Access1 core2Gi (2.15 GB)3 cores2Gi (2.15 GB)
MetricValue
Throughput per hour34,900 files, 17 GB
Throughput per day837,000 files, 412 GB
Mean request latency (end to end)557ms
Rebuild success rate99.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.