Speed.exe with output parsing for more machine-readable output.
346
It is often helpful to be able to understand the performance of OrcaFlex on different hardware configurations.
For example, you may want to assess the cost-benefit of using machines with more powerful processors or a higher core count.
Orcina provides Speed.exe which helps users to benchmark hardware. More details can be found on the Orcina website.
Additionally, we now provide the orcina/orcaflex-benchmark Docker image to help with this on remote Windows servers.
The Windows version is specified by the image tag. This is important because Windows containers and their hosts share the same kernel.
You can't run a container built for a newer version on an older host.
For example, :win2022 will not work on Windows 10.
Below is a mapping table for tags to Windows versions:
| Docker Image Tag | Windows Server Version | Windows 10/11 Equivalent (Based on Build Number) | Kernel Version |
|---|---|---|---|
win2022 | Windows Server 2022 LTSC | Windows 11, version 21H2 | 10.0.20348 |
win2019 | Windows Server 2019 LTSC | Windows 10, version 1809 | 10.0.17763 |
You can simply execute:
docker run -t orcina/orcaflex-benchmark:win2019
And this will run Speed.exe inside the container a number of times and parse the output data.
While the raw Speed.exe output is great for humans to read and understand, it's not the most useful if this is being
run programmatically on a range of hardware.
To assist here, the image contains C:\parse.ps1 which will run C:\Speed.exe with a number of
different fixed thread counts:
For systems where the logical and physical cores are the same or logical is exactly double of the physical, we will
only process the unique thread counts. The output from these runs is combined with some system information to populate
C:\Summary.json and is returned in the container output, like this:
Running Speed.exe with 16 threads...
Running Speed.exe with 8 threads...
Running Speed.exe with 4 threads...
=====BEGIN SUMMARY JSON=====
{
"system_info": {
"os": "Microsoft 10.0.17763",
"cpu": {
"physical_cores": 8,
"logical_processors": 16,
"processor": "Intel(R) Core(TM) Ultra 7 165H"
},
"ram": 1072631808
},
"benchmarks": [
{
"thread_count": 16,
"labels": "logical",
"result": {
"best_time": 2096.8,
"average_time": 1524.2
}
},
{
"thread_count": 8,
"labels": [
"half_logical",
"physical"
],
"result": {
"best_time": 1355,
"average_time": 1229.3
}
},
{
"thread_count": 4,
"labels": "half_physical",
"result": {
"best_time": 1481.6,
"average_time": 1425.3
}
}
]
}
=====END SUMMARY JSON=====
NOTE: On Docker Desktop for Windows (using WSL2) the Docker VM will only be allocated 2 CPUs by default. This can be controlled: in the Docker Desktop config; via a custom .wslconfig or at runtime. For example to run with 8 CPUs use
docker run --cpus=8 -t orcina/orcaflex-benchmark:win2022. Windows Server hosts will make all cores available by default.
If you want to control the number of threads and the parsing of output yourself you call C:\Speed.exe directly as
the docker run command like this:
docker run orcina/orcaflex-benchmark:win2019 C:\Speed.exe
For the default behaviour, Or
docker run orcina/orcaflex-benchmark:win2019 C:\Speed.exe 8
To only run 8 simulations in 8 threads, or
docker run orcina/orcaflex-benchmark:win2019 C:\Speed.exe 8 12
To run 8, 9, 10, 11 and 12 simulations in the same number of threads. The output will be similar to:
Program Version: 11.5c 64 bit threadlocalmm
54830A05FFEA: run at 4/3/2025 2:41:14 PM
Microsoft 10.0.17763
CPU=8664 Level=6 Rev=AA04 Logical processors=12 Physical processor cores=6
Running 8 simulations using 8 threads...
Run 1: 1559.8s of simulation in 20.0s of real time
Run 2: 1272.3s of simulation in 20.0s of real time
Run 3: 1627.1s of simulation in 20.0s of real time
-----------------------------------
Best time 1627.1s
Average time 1486.4s
Running 9 simulations using 9 threads...
Run 1: 1821.9s of simulation in 20.0s of real time
Run 2: 1818.4s of simulation in 20.0s of real time
Run 3: 1829.1s of simulation in 20.0s of real time
-----------------------------------
Best time 1829.1s
Average time 1823.1s
Running 10 simulations using 10 threads...
Run 1: 1771.3s of simulation in 20.0s of real time
Run 2: 1788.6s of simulation in 20.0s of real time
Run 3: 1701.5s of simulation in 20.0s of real time
-----------------------------------
Best time 1788.6s
Average time 1753.8s
Running 11 simulations using 11 threads...
Run 1: 1816.9s of simulation in 20.0s of real time
Run 2: 1800.0s of simulation in 20.0s of real time
Run 3: 1764.2s of simulation in 20.0s of real time
-----------------------------------
Best time 1816.9s
Average time 1793.7s
Running 12 simulations using 12 threads...
Run 1: 1864.0s of simulation in 20.0s of real time
Run 2: 1853.4s of simulation in 20.0s of real time
Run 3: 1845.7s of simulation in 20.0s of real time
-----------------------------------
Best time 1864.0s
Average time 1854.4s
-----------------------------------
Throughput for 12 cores 1864.0s
-----------------------------------
Content type
Image
Digest
sha256:75bbbad21…
Size
1.2 GB
Last updated
8 months ago
docker pull orcina/orcaflex-benchmark:linux