SystemBenchmark.jl

Julia package for benchmarking a system
Popularity
41 Stars
Updated Last
11 Months Ago
Started In
April 2020

SystemBenchmark.jl

Julia package for benchmarking a system. Contributions very welcome!

Submit your benchmarks to SystemBenchmark.jl/issues/8

Status

Run Tests GitHub Actions - Linux, MacOS, Windows - x86_64

Build Status Drone - Linux - arm, arm64

Usage

Run benchmark

julia> using SystemBenchmark

julia> res = runbenchmark();

julia> show(res, allrows=true, allcols=true)
32×4 DataFrame
│ Row │ cat         │ testname                  │ units  │ res                                      │
│     │ String      │ String                    │ String │ Any                                      │
├─────┼─────────────┼───────────────────────────┼────────┼──────────────────────────────────────────┤
│ 1   │ info        │ SysBenchVer               │        │ 0.3.0                                    │
│ 2   │ info        │ JuliaVer                  │        │ 1.4.1                                    │
│ 3   │ info        │ OS                        │        │ macOS (x86_64-apple-darwin18.7.0)        │
│ 4   │ info        │ CPU                       │        │ Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz │
│ 5   │ info        │ WORD_SIZE                 │        │ 64                                       │
│ 6   │ info        │ LIBM                      │        │ libopenlibm                              │
│ 7   │ info        │ LLVM                      │        │ libLLVM-8.0.1 (ORCJIT, skylake)          │
│ 8   │ info        │ GPU                       │        │ missing                                  │
│ 9   │ cpu         │ FloatMul                  │ ms     │ 1.708e-6                                 │
│ 10  │ cpu         │ FusedMulAdd               │ ms     │ 1.711e-6                                 │
│ 11  │ cpu         │ FloatSin                  │ ms     │ 4.773e-6                                 │
│ 12  │ cpu         │ VecMulBroad               │ ms     │ 4.55384e-5                               │
│ 13  │ cpu         │ CPUMatMul                 │ ms     │ 0.041647                                 │
│ 14  │ cpu         │ MatMulBroad               │ ms     │ 0.0194466                                │
│ 15  │ cpu         │ 3DMulBroad                │ ms     │ 0.0016652                                │
│ 16  │ cpu         │ peakflops                 │ flops  │ 1.96696e11                               │
│ 17  │ cpu         │ FFMPEGH264Write           │ ms     │ 154.421                                  │
│ 18  │ mem         │ DeepCopy                  │ ms     │ 0.000198299                              │
│ 19  │ mem         │ Bandwidth10kB             │ MiB/s  │ 96265.8                                  │
│ 20  │ mem         │ Bandwidth100kB            │ MiB/s  │ 50003.9                                  │
│ 21  │ mem         │ Bandwidth1MB              │ MiB/s  │ 25855.3                                  │
│ 22  │ mem         │ Bandwidth10MB             │ MiB/s  │ 11320.0                                  │
│ 23  │ mem         │ Bandwidth100MB            │ MiB/s  │ 9684.15                                  │
│ 24  │ diskio      │ DiskWrite1KB              │ ms     │ 0.145131                                 │
│ 25  │ diskio      │ DiskWrite1MB              │ ms     │ 10.4186                                  │
│ 26  │ diskio      │ DiskRead1KB               │ ms     │ 0.0969565                                │
│ 27  │ diskio      │ DiskRead1MB               │ ms     │ 0.560448                                 │
│ 28  │ loading     │ JuliaLoad                 │ ms     │ 209.872                                  │
│ 29  │ compilation │ compilecache              │ ms     │ 338.605                                  │
│ 30  │ compilation │ success_create_expr_cache │ ms     │ 349.521                                  │
│ 31  │ compilation │ create_expr_cache         │ ms     │ 13.648                                   │
│ 32  │ compilation │ output-ji-substart        │ ms     │ 7.2555                                   │

Compare benchmark to the default reference (a 2019 MSI Linux i7 Laptop) with:

julia> comp = comparetoref(res)

or to run the benchmark and do the comparison in one move:

julia> comp = comparetoref()
[ Info: CuArrays.functional() == false. No usable GPU detected
Compilation tests100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| Time: 0:01:58
[ Info: Printing of results may be truncated. To view the full results use `show(res, allrows=true)`
32×6 DataFrames.DataFrame
│ Row │ cat         │ testname                  │ units  │ ref_res                                  │ test_res                                 │ factor    │
│     │ String      │ String                    │ String │ Any                                      │ Any                                      │ Any       │
├─────┼─────────────┼───────────────────────────┼────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼───────────┤
│ 1   │ info        │ SysBenchVer               │        │ 0.3.0                                    │ 0.3.0                                    │ Equal     │
│ 2   │ info        │ JuliaVer                  │        │ 1.4.1                                    │ 1.4.1                                    │ Equal     │
│ 3   │ info        │ OS                        │        │ Linux (x86_64-pc-linux-gnu)              │ macOS (x86_64-apple-darwin18.7.0)        │ Not Equal │
│ 4   │ info        │ CPU                       │        │ Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz │ Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz │ Not Equal │
│ 5   │ info        │ WORD_SIZE                 │        │ 64                                       │ 64                                       │ Equal     │
│ 6   │ info        │ LIBM                      │        │ libopenlibm                              │ libopenlibm                              │ Equal     │
│ 7   │ info        │ LLVM                      │        │ libLLVM-8.0.1 (ORCJIT, skylake)          │ libLLVM-8.0.1 (ORCJIT, skylake)          │ Equal     │
│ 8   │ info        │ GPU                       │        │ GeForce GTX 1650 with Max-Q Design       │ missing                                  │ Not Equal │
│ 9   │ cpu         │ FloatMul                  │ ms     │ 1.1339999999999999e-6                    │ 1.715e-6                                 │ 1.51235   │
│ 10  │ cpu         │ FusedMulAdd               │ ms     │ 1.1339999999999999e-6                    │ 1.71e-6                                  │ 1.50794   │
│ 11  │ cpu         │ FloatSin                  │ ms     │ 4.051e-6                                 │ 5.736e-6                                 │ 1.41595   │
│ 12  │ cpu         │ VecMulBroad               │ ms     │ 2.9823115577889445e-5                    │ 5.12837e-5                               │ 1.7196    │
│ 13  │ cpu         │ CPUMatMul                 │ ms     │ 0.018683                                 │ 0.0401375                                │ 2.14834   │
│ 14  │ cpu         │ MatMulBroad               │ ms     │ 0.0042223                                │ 0.0205616                                │ 4.86976   │
│ 15  │ cpu         │ 3DMulBroad                │ ms     │ 0.0010529                                │ 0.0017379                                │ 1.65058   │
│ 16  │ cpu         │ peakflops                 │ flops  │ 1.8061545733047305e11                    │ 2.46247e11                               │ 1.36338   │
│ 17  │ cpu         │ FFMPEGH264Write           │ ms     │ 107.751337                               │ 150.311                                  │ 1.39498   │
│ 18  │ mem         │ DeepCopy                  │ ms     │ 0.00018790257558790594                   │ 0.000237082                              │ 1.26173   │
│ 19  │ mem         │ Bandwidth10kB             │ MiB/s  │ 104871.77985698299                       │ 96519.5                                  │ 0.920357  │
│ 20  │ mem         │ Bandwidth100kB            │ MiB/s  │ 58579.50346475738                        │ 42754.2                                  │ 0.729848  │
│ 21  │ mem         │ Bandwidth1MB              │ MiB/s  │ 33439.963407070725                       │ 31394.6                                  │ 0.938835  │
│ 22  │ mem         │ Bandwidth10MB             │ MiB/s  │ 5551.476774539766                        │ 10848.2                                  │ 1.95411   │
│ 23  │ mem         │ Bandwidth100MB            │ MiB/s  │ 6910.9558841033295                       │ 8858.09                                  │ 1.28175   │
│ 24  │ diskio      │ DiskWrite1KB              │ ms     │ 0.031895                                 │ 0.14471                                  │ 4.53707   │
│ 25  │ diskio      │ DiskWrite1MB              │ ms     │ 0.920052                                 │ 0.554107                                 │ 0.602257  │
│ 26  │ diskio      │ DiskRead1KB               │ ms     │ 0.006683666666666667                     │ 0.0730455                                │ 10.929    │
│ 27  │ diskio      │ DiskRead1MB               │ ms     │ 0.143755                                 │ 0.592742                                 │ 4.12328   │
│ 28  │ loading     │ JuliaLoad                 │ ms     │ 91.08045                                 │ 213.571                                  │ 2.34486   │
│ 29  │ compilation │ compilecache              │ ms     │ 208.532099                               │ 336.518                                  │ 1.61375   │
│ 30  │ compilation │ success_create_expr_cache │ ms     │ 235.4855485                              │ 334.724                                  │ 1.42142   │
│ 31  │ compilation │ create_expr_cache         │ ms     │ 0.894126                                 │ 12.2583                                  │ 13.7098   │
│ 32  │ compilation │ output-ji-substart        │ ms     │ 32.639706000000004                       │ 42.0636                                  │ 1.28873   │

Save to disk (includes a system report)

savebenchmark(path::String, res::DataFrame)

Compare two benchmarks

compare(ref::DataFrame, res::DataFrame)

Crowdsourced Results

Please consider submitting results to SystemBenchmark.jl/issues/8.

julia> using SystemBenchmark

julia> res = runbenchmark();

julia> savebenchmark("results.txt", res)

julia> show(res, allrows=true, allcols=true)

Then append the txt file and copy the printed table into a new comment on SystemBenchmark.jl/issues/8.

Any .txt results files posted to that issue can easily be collated into a dataframe with:

julia> comparison = getsubmittedbenchmarks()

or to specify another repo/issue:

getsubmittedbenchmarks(;repo::String="IanButterworth/SystemBenchmark.jl", issue::Int=8, refname::String="ref.txt", transpose::Bool=true)

Some basic plotting exists at reporting/plotting.jl, which hasn't been included in the main package due to limitations in platform compatability of Plots.jl.

Results summary

Used By Packages

No packages found.