Cluster benchmarking tools
==========================

This is a set of simple scripts to run and time Pacemaker CTS
tests.

The purpose is to investigate how the cluster stack behaves for
different cluster sizes. Supported cluster stacks are openais
(legacy), corosync, and heartbeat.

Quick start
-----------

- Create a directory <dir> to contain the output

- Copy the example control file and edit it (optional)

- Run the benchmark tests:

	# /usr/share/pacemaker/tests/cts/clubench <dir>

  (on the first run, it will create ~/.cts file to keep your CTS settings)

- Create graphs from bench.csv

Description
-----------

The clubench shell script runs the benchmark. It depends on the
working ssh, syslog configuration (loghost), and cluster
configuration (stack dependent). The auxiliary cluster_test
script from the CTS may be used to do the CTS configuration. It
is stored in ~/.cts.

The stack configuration has to be done by other means.
Typically, it consists of creating and distributing the basic
configuration files (openais.conf, corosync.conf, or ha.cf) and
the authentication keys.

The benchmark tests configuration is held in the control file:

	SERIES: a list of cluster sizes to be tested (optional, defaults
	  to the fibonacci series including the node list length)
	RUNS: how many times to run CTS (optional, defaults to 3)
	CTSTESTS: CTS options to choose tests (optional, defaults
	  to --benchmark)

By default, all benchmark tests are run. Those are 

	Restart
	Stonithd
	Standby
	ResourceRecover

The CTS is run several times (RUNS) and then median is
calculated.

TODO: Stonithd should be updated to exclude time which takes the
node to come up.

Prerequisites
-------------

The benchmark is run on the control host (loghost). The loghost
must have the following packages installed:

	syslog-ng
	pacemaker

The nodes must have the following packages installed:

	syslog-ng
	pacemaker
	cluster stack packages

The usual prerequisite for CTS applies: ssh must work for root
without password from loghost to all nodes and between nodes.

Running the benchmark
---------------------

usage: ./clubench <dir>
	dir: working directory (with the control file)

# clubench output

Output
------

The output is stored in the directory given as argument to
clubench. hb_report generated reports are in subdirectories
named after the number of nodes of test clusters, e.g. the set
from the SERIES variable.

The end product is stored in bench.csv. It can be imported in a
spreadsheet application to generate graphs. bench.csv contains
only medians and timings for all runs are stored in bench.stats.
