sysbench

Description

kewpie’s sysbench mode allows a user to run a specific iteration of a sysbench test (eg an oltp readonly run at concurrency = 16)

Requirements

The SYSBENCH command requires that the Drizzle library header be installed. Simply build Drizzle and do:

$> sudo make install

This will install the right headers.

The SYSBENCH command also requires installation of the drizzle-sysbench program, which can be installed from source like so:

$> bzr branch lp:~drizzle-developers/sysbench/trunk  drizzle-sysbench
$> cd drizzle-sysbench
$> ./autogen.sh && ./configure && make && sudo make install

Make sure sysbench is in your path

sysbench / kewpie tests

The sysbench test suite consists of python unittests that encapsulate / automate sysbench oltp runs for readonly and readwrite.

The tests are written in Python and are rather straightforward to modify.

Changing server options:

#drizzle options
server_requirements = [['innodb.buffer-pool-size=256M innodb.log-file-size=64M innodb.log-buffer-size=8M innodb.thread-concurrency=0 innodb.additional-mem-pool-size=16M table-open-cache=4096 table-definition-cache=4096 mysql-protocol.max-connections=2048']]

#mysql options
server_requirements = [['innodb_buffer_pool_size=256M innodb_log_file_size=64M innodb_log_buffer_size=8M innodb_thread_concurrency=0 innodb_additional_mem_pool_size=16M table_open_cache=4096 table_definition_cache=4096 max_connections=2048']]

Altering concurrencies tested:

The concurrencies for the tests are specified in the /tests/lib/util/sysbenchTestCase.py file. The concurrencies can be changed by directly editing them in the file mentioned. ( The tests are straightforward to modify / flexible )

#various concurrencies to use with sysbench
self.concurrencies = [ 16, 32, 64, 128, 256, 512, 1024 ]

This line can be modified according to the need

Altering iterations:

By default, the tests will execute 3 iterations of each concurrency tested. This is to help achieve some consistency for performance analysis. However, the number of iterations can be varied, by editing them in the file /tests/lib/util/sysbenchTestCase.py

#how many times to run sysbench at each concurrency
self.iterations = 3

This line can be modified according to the need

Running tests

There are several different ways to run tests using kewpie ‘s sysbench mode.

It should be noted that unless kewpie.py --force is used, the program will stop execution upon encountering the first failing test. kewpie.py --force is recommended if you are running several tests - it will allow you to view all successes and failures in one run.

Running tests

If one only wants to run a few, specific tests, they may do so this way:

./kewpie --suite=sysbench [OPTIONS] sysbench_readonly_test | sysbench_readwrite_test

Note

Calling tests using <suitename>.<testname> currently does not work. One must specify the test suite via the kewpie.py --suite option.

Results database

The Drizzle team has ported drizzle-automation functionality for sysbench. This means that a user can run a Drizzle / MySQL database and use it to store sysbench run data and to compare runs against historic data.

The SQL to create the required tables are in tests/std_data/sysbench_db.sql

This will create 3 tables:

  • bench_config
  • bench_runs
  • sysbench_run_iterations

This emulates drizzle-automation’s historic behavior.

Once the tables have been created, add the following option to the kewpie call: –results-db-dsn=’host_ip:user:user_pass:drizzle_stats:port’

Reporting test result

Once the benchmark test(s) get(s) completed, a report is generated.

Given below is an example of the test report

====================================================================================================
SYSBENCH BENCHMARK REPORT
====================================================================================================
MACHINE:  erlking
RUN ID:   19
RUN DATE: 2012-08-15T18:16:12.596937
WORKLOAD: sysbench
SERVER:   drizzle
VERSION:  staging
REVISION: 2595
COMMENT:  2595: Ported this reporting capability!
====================================================================================================

TRENDING OVER LAST 5 runs
Conc   TPS     % Diff from Avg   Diff       Min        Max        Avg        STD
====================================================================================================
128    218.72       +0.58%       1.26     192.64     232.90     217.46      13.02
256    223.71       +6.85%      14.34     192.28     227.73     209.37      14.07
512    223.40       +7.47%      15.53     192.70     228.93     207.87      12.76
====================================================================================================

TRENDING OVER Last 20 runs

Conc   TPS     % Diff from Avg   Diff       Min        Max        Avg        STD
====================================================================================================
128    218.72       +2.95%       6.26     188.42     232.90     212.45      15.27
256    223.71       +7.92%      16.42     189.18     232.99     207.29      14.94
512    223.40       +8.46%      17.42     191.35     232.79     205.98      14.09
====================================================================================================

TRENDING OVER ALL runs

Conc   TPS     % Diff from Avg   Diff       Min        Max        Avg        STD
====================================================================================================
128    218.72       +2.95%       6.26     188.42     232.90     212.45      15.27
256    223.71       +7.92%      16.42     189.18     232.99     207.29      14.94
512    223.40       +8.46%      17.42     191.35     232.79     205.98      14.09
====================================================================================================
20120815-184028  sysbench.sysbench_readonly_test            [ pass ]  1455879
20120815-184028  ===============================================================

Email test report

Another drizzle-automation functionality that is ported to kewpie’s sysbench is emailing test report to the specified email ID.

./kewpie --suite=sysbench --email-report-tgt=foo@bar.com

The output, after including the mailing option:

20120815-184028 Mailing report...
20120815-184028 To: foo@bar.com
20120815-184028 From: smtplibpython@gmail.com
20120815-184028 Report successfully sent...

Table Of Contents

Previous topic

sql-bench

Next topic

Writing native/unittest test cases

This Page