Sysbench Under the Covers

Sysbench Under the Covers

Sysbench is a popular open-source benchmarking tool designed to evaluate the performance of system components such as CPU, memory, disk I/O, and databases. It is commonly used for testing MySQL, PostgreSQL, and other databases under different load conditions. Sysbench is a scriptable multi-threaded benchmark tool based on LuaJIT.

Created by Alexey Kopytov, sysbench has been around for approximately two decades. While git shows the first commit as Jan 2006 this product was previously used on Launchpad https://launchpad.net/sysbench and the Changelog has a reference of 2004-02-19.

While many see benchmark results published using sysbench online to compare hardware or software or a combination, what does it actually do under the covers? What capabilities can sysbench provide? How can you use sysbench for your own testing needs?

You make know sysbench can run database read-only tests, write tests, read-write tests and many different combinations. Did you know the popular oltp_read_only test runs 16 SQL statements per transaction. You can with the correct arguments configure this to 1 statement. When you see a graph online of results, knowing the underlying details matter.

I’ve taken the time to create a repository the larger system ecosystem and specifics that are important.

  • A list of Sysbench Tests by various authors.
  • The default Sysbench Arguments .
  • An analysis of SmallDatum suite of test cases and arguments used.
  • Detailed evaluation of tests showing the SQL, table structures, query explain plans and command line options. Check out oltp_read_only as an example.

What is Important with Benchmarking?

The answer will depend on who is asked and what product(s) are being evaluated. Generally the most important measurements for comparison include:

  1. Query Throughput
  2. Query Latency
  3. Runtime Resource Utilization (e.g. CPU, RAM, I/O, Network)
  4. Data Storage
  5. Total Execution Time
  6. Cost Savings

Conclusion

I have built my own suite of benchmarking scenarios which I will be using for performing a number of benchmarks of various infrastructure and software architects and I’ve leveraged sysbench as my foundation for these tests. Stay tuned!

Tagged with: Databases Benchmarking Sysbench

Related Posts

Evaluating Readyset Caching for MySQL

Readyset is a database caching solution for MySQL and PostgreSQL . For applications that have increased load on your primary database, or use scale-out infrastructure to support a high-read workload, ReadySet can be a drop-in solution to address current performance issues.

Read more

Creating a More Realistic Benchmark

Common benchmark approaches fall into two general categories, synthetic testing and realistic testing. You have the most generic operations from a synthetic test, starting with the most simple example using a single table, a single column, and for a single DML operation.

Read more

#WDILTW – AWS RDS Proxy

This week I was evaluating AWS RDS Proxy . If you are familiar with the Relational Database Service (RDS) and use MySQL or Postgres, this is an additional option to consider.

Read more