<head>
  <meta name="search_weight" content="2" />
</head>
## Industry-leading performance

### Overview

- Test suite of 20 business files ranging from 0.05 MB to 17 MB in size
- Mean file size = 3.74 MB
- File types include: Excel, Word, Powerpoint, video, image, PDF, audio
- The test was run against v2.6.1 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 | 1Gi (1.07 GB)
| API | 1500m | 4Gi (4.29 GB)| 1500m | 4Gi (4.29 GB)

#### Small

Based on a single node (1 x [DS5_v2](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dsv2-series?tabs=sizebasic#sizes-in-series)) in a Kubernetes cluster comprising of:
- 10 Engines
- 16 virtual cores
- 56 GB memory

| Throughput | Files processed | Data processed
|--------|--------|--------
| Per hour	| 26,500	| 96 GB
| Per day	| 635,000	| 2300 GB
| Mean processing speed | 136ms  |
| API Success rate | 99.999% |

#### Medium

Based on 5 node (5 x [DS4_v2](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dsv2-series?tabs=sizebasic#sizes-in-series)) in a Kubernetes cluster comprising of:
- 25 Engines
- 8 virtual cores per node 40 total
- 28 GB memory per node 140 total

| Throughput | Files processed | Data processed
|--------|--------|--------
| Per hour	| 54,800	| 200 GB
| Per day	| 1,300,000	| 4800 GB
| Mean processing speed | 65ms  |
| API Success rate | 99.999% |

#### Large

Based on 5 nodes (5 x [DS5_v2](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dsv2-series?tabs=sizebasic#sizes-in-series)) in a Kubernetes cluster comprising of:

- 50 Engines
- 16 virtual cores per node 80 total
- 56 GB memory per node 280 total

| Throughput | Files processed | Data processed
|--------|--------|--------
| Per hour	| 93,800	| 343 GB
| Per day	| 2,250,000	| 8230 GB
| Mean processing speed | 38ms  |
| API Success rate | 99.999% |

### OVA

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)

#### Small

Based on a small VM ([F16s_v2](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/compute-optimized/fsv2-series?tabs=sizebasic#sizes-in-series)) running the OVA. comprising of:

| Throughput | Files processed | Data processed
|--------|--------|--------
| Per hour	| 9,150	| 33 GB
| Per day	| 220,000	| 800 GB
| Mean processing speed | 392ms  |
| API Success rate | 99.999% |
- 3 Engines
- 16 virtual cores
- 32 GB memory

#### Large

Based on a large VM ([F32s_v2](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/compute-optimized/fsv2-series?tabs=sizebasic#sizes-in-series)) running the OVA.

| Throughput | Files processed | Data processed
|--------|--------|--------
| Per hour	| 13,800	| 50 GB
| Per day	| 331,400	| 1200 GB
| Mean processing speed | 260ms  |
| API Success rate | 99.999% |
- 13 Engines
- 32 virtual cores
- 64 GB memory

### 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.