motivation
we have tested ceph s3 in openstack swift intensively before.
We were interested in the behavior of the radosgw stack in ceph.
We paid particular attention to the size and number of objects in relation to the resource consumption of the radosgw process.
Effects on response latencies of radosgw were also important to us. To be able to plan the right sizing of the physical and virtual environments.
technical topics
From a technical point of view, we were interested in the behavior of radosgw in the following topics.
- dynamic bucket sharding
- http frontend difference between Civetweb and Beast
- index pool io pattern and latencies
- data pool io pattern and latencies with erasure-coded and replicated pools
- fast_read vs. standard read for workloads with large and small objects.
requirements
when choosing the right tool, it was important for us to be able to test both small and large ceph clusters with several thousand osds.
We want to use the test results as a file for evaluation as well as have a graphical representation as timeseries data.
For timeseries data we rely on the standard stack with Grafana, Prometheus and Thanos.
the main prometheus exporters we use are ceph-mgr-exporter and node-exporter.
CBT is a testing harness written in python
https://github.com/ceph/cbt
s3 - tests
This is a set of unofficial Amazon AWS S3 compatibility tests
https://github.com/ceph/s3-tests
COSBench - Cloud Object Storage Benchmark
COSBench is a benchmarking tool to measure the performance of Cloud Object Storage services.
https://github.com/intel-cloud/cosbench
Gosbench
Gosbench is the Golang reimplementation of Cosbench. It is a distributed S3 performance benchmark tool with Prometheus exporter leveraging the official Golang AWS SDK
https://github.com/mulbc/gosbench
hsbench
hsbench is an S3 compatable benchmark originally based on wasabi-tech/s3-benchmark.
https://github.com/markhpc/hsbench
Warp
Minio - S3 benchmarking tool.
https://github.com/minio/warp
getput
getput can be run individually on a test client.
gpsuite is responsible for synchronization and scaling across any number of test clients.
Communication takes place via ssh keys and the simultaneous start of all s3 test clients is synchronized over a common time base.
Installation on linux as script or as container is supported.
https://github.com/markseger/getput