Storage Benchmarking
Before you start
Before starting benchmarks get familiar with your environment. Even small missed detail can make your benchmark invalid. For example, there is no point in testing performance of Cloud Disk Array from different DC. While it will be working, latencies between DC are too high for such setup.
Selecting proper metrics for your use case is also very important. If you are planning to run a database, total available IOPS of 8KiB block size will probably be more important than total bandwidth with big IOs. If you plan to use Hadoop then storage requirements will be totally different.
In our case we try to find balance between different workloads. We use fio -- very popular benchmarking tool. It provides a lot of tunable options to simulate desired workload and gives detailed statistics about storage behaviour under load. It's also available on a wide range of operating systems and is free to use.
First benchmark
Make sure that client used for testing has access to your Cloud Disk Array. You can verify that by running:
If you can see output similar to above then you can start preparing image for testing:
You can test performance in three different situations:
- directly use RBD
- map image to /dev/rbd* device
- run benchmark inside VM running on RBD image
Using first method run fio as in example below:
When doing benchmark on /dev/rbd* device or from inside VM there are few factors than can affect performance:
- operating system cache -- it can make your system look like super--fast for a while and then slowing down -- make sure to use direct IO to avoid this
- support for FLUSH/FUA requests in storage stack used for tests
- hypervisor/driver (virtio/scsi) used for virtualization
- "warm up" your storage before starting benchmark or run benchmark multiple times
Real benchmark
Depending on the size of your cluster you may want to test bigger number of images or using different parameters. Usually you might want to change number of images, their size, queue depth, number of fio workers, workload type (read/write/random/sequential), test duration, etc.
Mixed random read/write with 4k block size
Sequential reads with 1M block size
Random writes with 4k block size
This test will spawn 4 fio processess, each writing to a separate image using two threads.
Mixed read/write with different block sizes
How we measure Cloud Disk Array performance
To measure Cloud Disk Array performance we are running test on a 32 images, each of 32GiB size, running for a few hours. Using big data set during test ensures us that performance will stay on a specified level.
Go further
Visit our dedicated Discord channel: https://discord.gg/ovhcloud. Ask questions, provide feedback and interact directly with the team that builds our Storage and Backup services.
If you need training or technical assistance to implement our solutions, contact your sales representative or click on this link to get a quote and ask our Professional Services experts for assisting you on your specific use case of your project.
Join our community of users on https://community.ovh.com/en/.