Site icon Built to Scale – Max Jahn

A Cloud Benchmarking Tools Collection

From time to time we see the need to evaluate the performance of systems running in the cloud with those on-premises. As a reference (mostly for myself) I created a list of tools for this purpose. Note that most of these tools are in no way specific to cloud environments.

Storage performance

Performance of cloud storage in most environments depend on some kind of storage tier and size of the allotted storage. For comparable results, make sure to pick similar configurations in terms of tier and storage size for your tests. And I’d strongly recommend to pick a similar VM shape as well.

fio

Probably the most common tool for measuring disk throughput and IOPS is fio. A very nice guide on using it for analysis can be found in the Google Cloud documentation.

The configuration for the benchmarking run is defined in a configuration file, this might look like this:

[global]
directory=${TEST_DIR}
size=100M
group_reporting=1
time_based
runtime=60s
ramp_time=2s
;ioengine=libaio
direct=1
verify=0
iodepth=64
stonewall
unlink=1

[write_throughput]
bs=1M
rw=write

[write_iops]
bs=4K
rw=randwrite

[read_throughput]
bs=1M
rw=read

[read_iops]
bs=4K
rw=randread

Network performance

Network performance in most cases is influenced by choice of VM shape, in most cases a larger number of vCPU leads to more available bandwidth. Depending on the CSP, there often are specific options to optimize networking, e.g. fastpath in Azure. Make sure to explore those options and understand how they affect the parts of network performance that is critical for your systems.

Tools for this task have been around for a long time, so go with one of those, e.g.

DB Performance

For evaluation of DB performance the gold standard would be to run your own workloads that reflect your specific requirements. If you are able to do this, perfect. All others will have to use some other means of performance and load testing. If migrating from an existing environment, you can run the benchmarks in into the current and the new environments and investigate any differences.

Since this not an uncommon need, a wide range of tools for DB benchmarks are available. Those might be a good starting point for your performance analysis.

One caveat: Do not underestimate the complexity and prerequisites for using some of the available tools. As an example, Oracle Real Application Testing will require expertise and solid preparation of data capture and replay to get meaningful results.

Swingbench for Oracle databases

Swingbench is one fairly popular tool for performance benchmarking and load testing of Oracle databases. It will generate its own testing data and has a couple of predefined workload scenarios to run. So these are synthetic workloads and it is up to you to pick the right scenarios to run or to define one yourself.

Download straight from Github.

pgbench for PostgreSQL

PostgreSQL comes with its own benchmarking tool, pgbench.

mysqlslap for MySQL

MySQL comes with its own load testing / emulation tool, mysqlslap.

Cloud Performance Testing Suites

Then there are full performance testing suites focusing on cloud.

CloudSuite

CloudSuite is showing performance for various typical scenarios (data analytics, web server, …).

PerfKitBenchmarker

PerfKit is the cloud performance testing suites beast bringing together lots of tools to run comparison tests for cloud environments. It already includes some of the tools mentioned before like the whole CloudSuite and is maintained by GCP.

Exit mobile version