Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leeliu/dbench
Benchmark Kubernetes persistent disk volumes with fio: Read/write IOPS, bandwidth MB/s and latency
https://github.com/leeliu/dbench
benchmark fio iops kubernetes latency persistent-volume storage
Last synced: 12 days ago
JSON representation
Benchmark Kubernetes persistent disk volumes with fio: Read/write IOPS, bandwidth MB/s and latency
- Host: GitHub
- URL: https://github.com/leeliu/dbench
- Owner: leeliu
- License: mit
- Created: 2018-05-16T10:08:01.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-11-25T07:25:11.000Z (12 months ago)
- Last Synced: 2024-08-01T13:28:35.786Z (4 months ago)
- Topics: benchmark, fio, iops, kubernetes, latency, persistent-volume, storage
- Language: Shell
- Homepage:
- Size: 8.79 KB
- Stars: 251
- Watchers: 4
- Forks: 141
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dbench
Benchmark Kubernetes persistent disk volumes with `fio`: Read/write IOPS, bandwidth MB/s and latency.# Usage
1. Download [dbench.yaml](https://raw.githubusercontent.com/logdna/dbench/master/dbench.yaml) and edit the `storageClassName` to match your Kubernetes provider's Storage Class `kubectl get storageclasses`
2. Deploy Dbench using: `kubectl apply -f dbench.yaml`
3. Once deployed, the Dbench Job will:
* provision a Persistent Volume of `1000Gi` (default) using `storageClassName: ssd` (default)
* run a series of `fio` tests on the newly provisioned disk
* currently there are 9 tests, 15s per test - total runtime is ~2.5 minutes
4. Follow benchmarking progress using: `kubectl logs -f job/dbench` (empty output means the Job not yet created, or `storageClassName` is invalid, see Troubleshooting below)
5. At the end of all tests, you'll see a summary that looks similar to this:
```
==================
= Dbench Summary =
==================
Random Read/Write IOPS: 75.7k/59.7k. BW: 523MiB/s / 500MiB/s
Average Latency (usec) Read/Write: 183.07/76.91
Sequential Read/Write: 536MiB/s / 512MiB/s
Mixed Random Read/Write IOPS: 43.1k/14.4k
```
6. Once the tests are finished, clean up using: `kubectl delete -f dbench.yaml` and that should deprovision the persistent disk and delete it to minimize storage billing.## Notes / Troubleshooting
* If the Persistent Volume Claim is stuck on Pending, it's likely you didn't specify a valid Storage Class. Double check using `kubectl get storageclasses`. Also check that the volume size of `1000Gi` (default) is available for provisioning.
* It can take some time for a Persistent Volume to be Bound and the Kubernetes Dashboard UI will show the Dbench Job as red until the volume is finished provisioning.
* It's useful to test multiple disk sizes as most cloud providers price IOPS per GB provisioned. So a `4000Gi` volume will perform better than a `1000Gi` volume. Just edit the yaml, `kubectl delete -f dbench.yaml` and run `kubectl apply -f dbench.yaml` again after deprovision/delete completes.
* A list of all `fio` tests are in [docker-entrypoint.sh](https://github.com/logdna/dbench/blob/master/docker-entrypoint.sh).## Contributors
* Lee Liu (LogDNA)
* [Alexis Turpin](https://github.com/alexis-turpin)## License
* MIT