Benchmarking zot with zb¶
zbtool is useful for benchmarking OCI registry workloads in scenarios such as the following:
- comparing configuration changes
- comparing software versions
- comparing hardware/deployment environments
- comparing with other registries
zb tool, you can benchmark a
zot registry or any other container image registry that conforms to the OCI Distribution Specification published by the Open Container Initiative (OCI).
Tip: We recommend installing and benchmarking with
zbwhen you install
How to get zb¶
zb project is hosted with
zot on GitHub at project-zot. From GitHub, you can download the
zb binary or you can build
zb from the source.
Supported platforms and architectures¶
zb is supported for the following operating systems and platform architectures:
|linux||amd64||Intel-based Linux servers|
|linux||arm64||ARM-based servers and Raspberry Pi4|
Downloading zb binaries¶
Download the executable binary for your server platform and architecture under "Assets" on the GitHub zot releases page.
The binary image is named using the target platform and architecture from the Supported platforms and architectures table. For example, the binary for an Intel-based MacOS server is
Building zb from source¶
To build the
zb binary, copy or clone the
zot project from GitHub and execute the
make bench command in the
zot directory. Use the same command options that you used to build
zot, as shown:
make OS=os ARCH=architecture bench
For example, the following command builds
zb for an Intel-based MacOS server:
make OS=darwin ARCH=amd64 bench
In this example, the resulting executable file is
zb-darwin-amd64 in the
Tip: A sample Dockerfile for
zbis available at Dockerfile-zb.
Tip: The instructions and examples in this guide use
zbas the name of the executable file.
The original filename of the executable file will reflect the build options, such as
zb-linux-amd64. For convenience, you can rename the executable to simply
To view the usage and options of
zb, run the command with the
Usage: zb <url> [flags] Flags: -A, --auth-creds string Use colon-separated BASIC auth creds -c, --concurrency int Number of multiple requests to make at a time (default 1) -h, --help help for zb -o, --output-format string Output format of test results: stdout (default), json, ci-cd -r, --repo string Use specified repo on remote registry for test data -n, --requests int Number of requests to perform (default 1) -v, --version Show the version and exit -d, --working-dir string Use specified directory to store test data
The following example executes a benchmark operation using zb.
bin/zb http://localhost:8080 -c 10 -n 1000
Registry URL: http://localhost:8080 Concurrency Level: 2 Total requests: 100 Working dir: ======== Test name: Get Catalog Time taken for tests: 45.397205ms Complete requests: 100 Failed requests: 0 Requests per second: 2202.7788 2xx responses: 100 min: 402.259µs max: 3.295887ms p50: 855.045µs p75: 971.709µs p90: 1.127389ms p99: 3.295887ms ======== Test name: Push Monolith 1MB Time taken for tests: 952.336383ms Complete requests: 100 Failed requests: 0 Requests per second: 105.00491 2xx responses: 100 min: 11.125673ms max: 26.375356ms p50: 18.917253ms p75: 21.753441ms p90: 24.02137ms p99: 26.375356ms ...