Sign inSign up

orcina/orcaflex-benchmark

By orcina

•Updated 8 months ago

Speed.exe with output parsing for more machine-readable output.

Image
0

346

orcina/orcaflex-benchmark repository overview

⁠Introduction

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 TagWindows Server VersionWindows 10/11 Equivalent (Based on Build Number)Kernel Version
win2022Windows Server 2022 LTSCWindows 11, version 21H210.0.20348
win2019Windows Server 2019 LTSCWindows 10, version 180910.0.17763

⁠Usage

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:

  • All Physical Cores
  • Half Physical Cores
  • All Logical Cores
  • Half Logical Cores

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.

⁠Raw Speed.exe output

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

Tag summary

Content type

Image

Digest

sha256:75bbbad21…

Size

1.2 GB

Last updated

8 months ago

docker pull orcina/orcaflex-benchmark:linux