This section presents the performance benchmarks for all supported versions of . For those versions no longer supported, see the documentation for the relevant version.
Benchmark Methodology
The following results were gathered on the FRTB 4.0.0 release. Here we explain how we gathered the benchmark results.Benchmark Results
The benchmark results are displayed in tables with two axes; Cores and Dataset Size. This tells us what size machine and what size dataset the tests were run on. Each cell of these tables represent an individual performance test. Each Approach (ex: IMA-DRC) was run independently.Performance Test Procedure
The performance test was run many times on multiple Azure machines to generate the Benchmark results. Each iteration of the performance test did the following:- Create a new Azure VM with a specific number of CPUs
- Load the approach’s dataset onto the Azure VM
- Load the FRTB 4.0 Accelerator docker image onto the Azure VM
- Start the FRTB 4.0 Accelerator
- Run Queries
- Approach (IMA-DRC, IMA-ES, SA-DRC, SA-SBM)
- Number of CPUs: (16, 32, 64)
- Dataset Size: (Small, Medium, Large)
Creating Azure Instance
Each iteration of the performance test was run on a new, clean Azure VM running Linux with a specific number of CPUs. For these tests we used the Azure EdsV5 Virtual Machines. For more information, see EdsV5 VMs on Azure’s details page. When allocating the machines we allocated the following machines with the stated docker images:Azure VM Allocations:
Docker Container CPU limit:
The reason we allocate large VMs and then limit the CPUs the Docker Image can use is because the Azure instances for smaller VMs do not have enough memory for our tests. We want to allow our tests to have enough memory overhead so the JVM is not forced to perform many Garbage Collections.
Datasets
Each approach has its own three datasets, one for each size (Small, Medium, Large). This allows us to control how much data is injected into the Cube. Having one dataset per approach provides the following benefits:- Ensure that we are only loading the necessary data for that approach and the approach’s queries
- Tailor the datasets to maximize the number of locations our queries have to aggregate
- Generate more accurate memory statistics.
- /configuration/*
- /date/General/*
- /date/DRC/*
- /historical/fx-data/*
- /historical/drc-summary/*