Benchmark Tool

Use the Klever Benchmark Tool to check if your machine is ready to run a validator node.

Follow the instructions on https://docs.docker.com/engine/install to install Docker before continuing.


Step 1 — Create the benchmark folder

The benchmark tool uses a local folder to write temporary disk test files. Create it in your working directory:

mkdir benchmark

Make sure to give it correct permissions so the Docker container can read/write to it.

chown 999 benchmark/

Your folder structure should look like this:

~/
└── benchmark/

Step 2 — Run the benchmark

Run all benchmarks with the default settings:

docker run \
    -v $(pwd)/benchmark:/opt/klever-blockchain/benchmark \
    kleverapp/klever-go:latest \
    /usr/local/bin/benchmark \
    --disk-dir /opt/klever-blockchain/benchmark

The tool will run six test categories one by one. Each one produces a result with a verdict tag — [OK], [!!], or [XX] — and a score. At the end, a final grade is printed.


Step 3 — Understand the results

Verdicts

Each metric is compared against two thresholds:

IconLabelMeaning
[OK]PASSMeets production validator requirements
[!!]WARNMinimum requirements met but below recommended
[XX]FAILDoes not meet validator requirements

Final grade

The tool adds up a weighted score across all categories (total: 1,000 points) and assigns a grade:

GradeScoreDescription
S≥ 90 %Elite — top-tier validator hardware
A≥ 75 %Excellent — production-ready for high-traffic networks
B≥ 60 %Good — suitable for standard validator operation
C≥ 45 %Acceptable — meets minimum validator requirements
D≥ 30 %Marginal — several metrics below recommended levels
F< 30 %Insufficient — does not meet validator requirements

What each category tests

CategoryWhat it measuresKey metrics
GoroutineCPU scalability via parallel SHA-256 hashingEfficiency at NumCPU workers
Disk I/OSequential and random read/write throughputMB/s, IOPS
NetworkTCP loopback latency and streaming throughputP50/P99 µs, MB/s
KV StoreIn-memory state-access patterns (80/20 read-write)ops/s
MemoryDRAM bandwidth, random latency, allocator speedGB/s, ns, M allocs/s
BigNum / FPU2048-bit modexp/modmul and float64 transcendentalsops/s

Step 4 — Save the report

To keep a copy of the results, output the report as JSON and save it to a file:

docker run \
    -v $(pwd)/benchmark:/opt/klever-blockchain/benchmark \
    kleverapp/klever-go:latest \
    /usr/local/bin/benchmark \
    --disk-dir /opt/klever-blockchain/benchmark \
    --output json > report-$(hostname)-$(date +%Y%m%d).json

Advanced options

You can skip specific categories or tune the test parameters using flags.

Run only disk and network tests:

docker run \
    -v $(pwd)/benchmark:/opt/klever-blockchain/benchmark \
    kleverapp/klever-go:latest \
    /usr/local/bin/benchmark \
    --disk-dir /opt/klever-blockchain/benchmark \
    --skip-goroutine --skip-kv --skip-memory --skip-bignum

Increase concurrency and test duration:

docker run \
    -v $(pwd)/benchmark:/opt/klever-blockchain/benchmark \
    kleverapp/klever-go:latest \
    /usr/local/bin/benchmark \
    --disk-dir /opt/klever-blockchain/benchmark \
    --goroutines 128 --duration 5

All available flags

FlagDefaultDescription
--goroutinesNumCPU×4Maximum number of concurrent goroutines
--duration3Duration in seconds per concurrency level
--disk-dirauto temp dirDirectory for disk I/O test files
--disk-size256Sequential test file size in MB
--skip-goroutineSkip CPU scalability benchmark
--skip-diskSkip disk I/O benchmark
--skip-networkSkip network TCP loopback benchmark
--skip-kvSkip KV store benchmark
--skip-memorySkip memory bandwidth and latency benchmark
--skip-bignumSkip big-number / FPU benchmark
--outputtextOutput format: text or json
--verboseEnable verbose logging
--versionPrint version and exit

Was this page helpful?