#Mandatory parameters
# We need to define the benchmark, we need to point out the tarballs
# used to drive the benchmark, this will also point to the binaries
# produced when building the software. We also always need to define
# the MySQL base version to ensure we use the correct parameters in
# various situations.
# We also need to point out where the binaries are placed (and to be
# placed by builds).
# If one want to use a binary tarball one can set
# USE_BINARY_MYSQL_TARBALL to yes.
#
BENCHMARK_TO_RUN="sysbench"
TARBALL_DIR="/Users/mikael/bench/tarballs"
MYSQL_VERSION="mysql-cluster-gpl-7.5.4"
SYSBENCH_VERSION="sysbench-0.4.12.11"
DBT2_VERSION="dbt2-0.37.50.12"
MYSQL_BASE="5.6"
REMOTE_BIN_INSTALL_DIR="/Users/mikael/bench/mysql"
#
# Next comes a number of parameters used to define how to access the
# MySQL Server. This is a required parameter when executing sysbench
# and DBT2 benchmarks. FlexAsynch doesn't need this parameter.
# Here one also needs to define the storage engine which normally
# is NDB, but the scripts also support running benchmarks with InnoDB.
#
SERVER_HOST="127.0.0.1"
SERVER_PORT="3316"
ENGINE="ndb"
#
# If we build the software from a source tarball then we need to set a
# a number of parameters for the build process.
#
# Set STATIC_LINKING_FLAG to yes if static linking is desired
# Set DEBUG_FLAG to no if no debug symbols are wanted in the binary
# Set WITH_DEBUG to --with-debug if debug build is desired
# Default compiler is gcc, other allowed values are open64, icc, forte
# Set LINK_TIME_OPTIMIZER to "yes" if interprocedural optimisations are desired
# For Open64 compiler one can set --mso to get multi-core scalability
# optimisations. Set MSO_FLAG to "yes" to get this.
# Set USE_FAST_MYSQL to no to not get most optimal compiler options
# Set COMPILE_SIZE_FLAG to --32 or --64 if specifically want a 32 or 64-bit build
# Set WITH_PERFSCHEMA_FLAG to yes to compile with performance schema
# Set FEEDBACK_COMPILATION to yes to enable feedback compilation
#
# After building the software the next step is to generate the internal
# benchmark config files and also the NDB config file. These are all
# generated and saved in the same directory where the autobench.conf
# is placed.
# We will create one file called iclaustron.conf that is used by
# all scripts to define variables in the scripts.
# We will create a file called dbt2.conf for use in executing DBT2
# benchmarks. This also defines variables for the scripts used to
# execute the benchmark.
# We will create a file called sysbench.conf for use in executing
# sysbench benchmarks. This is also used to define variables for
# scripts that execute the sysbench benchmark.
# We will create 
#
# We can run against an existing cluster with all MySQL Servers and NDB
# management server and NDB data node already up and running. In this
# case the next section isn't needed. In this case if we run flexAsynch
# we still need to define the host of the NDB manangement server and
# the NDB management server port.
# Normal operation for a benchmark is however to also start and stop
# cluster from these benchmark scripts.
# In this case we need to define settings for first NDB management
# server.
# Set NDB_MGMD_PORT to port number unless default 1186 is used.
NDB_MGMD_NODES="127.0.0.1"
#
# One setting which is common to all nodes is that we can set
# CORE_FILE_USED to yes if we want to produce a core file when
# a crash occurs.
# 
# Another common parameter is DATA_DIR_BASE. This is where the MySQL
# Server and NDB data node and also NDB management server place their
# files.
#
# -----------------------------------------------------
# Define the settings for MySQL Server
# -----------------------------------------------------
# We first need to set the host names and port numbers of the MySQL
# Servers, this was however covered already above. This also included
# setting the storage engine used when creating tables.
# For the MySQL Server we set all parameters as command line
# parameters, so all parameter settings for started MySQL Servers
# comes from settings in autobench.conf.
#
# An important parameter for the MySQL Server is to set a specific
# Malloc library. To use such a specific one sets USE_MALLOC_LIB to
# yes, the reference to the Malloc library is put in MALLOC_LIB.
# There is a scalability hog in in modern jemalloc versions. This
# can be handled by setting PREPARE_JEMALLOC to yes. So for best
# performance we set USE_MALLOC_LIB and PREPARE_JEMALLOC to yes
# and in our case we set MALLOC_LIB to /usr/local/lib/libjemalloc.so.1
#
# There is a few common MySQL Server parameters settable:
# KEY_BUFFER_SIZE (defaults to 50M)
# MAX_HEAP_TABLE_SIZE (defaults to 1000M)
# SORT_BUFFER_SIZE (defaults to 32768)
# TMP_TABLE_SIZE (defaults to 100M)
# MAX_TMP_TABLES (defaults to 100)
# TABLE_CACHE_SIZE (defaults to same default as MySQL Server)
# this is used to set both table_open_cache and table_definition_cache.
# TABLE_CACHE_INSTANCES (defaults to 16)
#
# MySQL Server started through the benchmark always sets
# --skip-grant-tables. If not wanted one can set the variable
# GRANT_TABLE_OPTION to empty.
#
# It is also possible to set transaction-isolation by setting
# it in the variable TRANSACTION_ISOLATION.
#
# query-cache-size is always set to 0, query_cache_type is also set to 0
# and temp-pool is also set to 0. max_prepared_stmt is set to 1048576.
#
# One can set metadata_locks_cache_size by setting META_DATA_CACHE_SIZE
# in which case we set metadata_locks_hash_instances to 16.
# 
# One can set max_connections by setting MAX_CONNECTIONS, default it
# is 1000.
# We set language to english.
#
# When starting the MySQL Server we start it using SSH unless we are
# using localhost or 127.0.0.1 in which case we start it on local
# server.
#
# We can set USE_LARGE_PAGES to yes to set large_pages. We can set
# LOCK_ALL to yes to set memlock config parameter.
#
# There is also a set of specific MySQL Server config parameters
# only used with NDB storage engine.
# We can set ENGINE_CONDITION_PUSHDOWN to yes to enable condition
# pushdown. ndb_autoincrement_prefetch_sz is set through
# NDB_AUTOINCREMENT_OPTION, it defaults to 256.
#
# In 7.5 we also can use NDB_READ_BACKUP set to yes to set ndb_read_backup
# also NDB_FULLY_REPLICATED to yes to set ndb_fully_replicated and we can
# set NDB_DATA_NODE_NEIGHBOUR to set ndb_data_node_neighbour. We set
# ndb_default_column_format to fixed and to set it to DYNAMIC we can
# NDB_DEFAULT_COLUMN_FORMAT to DYNAMIC.
#
# A very important parameter for benchmarks is NDB_MULTI_CONNECTION which
# is used to set ndb_cluster_connection_pool, this is the number of
# API nodes used by the MySQL Server to connect to the cluster.
#
# We can also set ndb_recv_thread_activation_threshold and also
# ndb_recv_thread_cpu_mask through NDB_RECV_ACTIVATION_THRESHOLD
# and NDB_RECV_THREAD_CPU_MASK.
#
# We always set ndb_use_exact_count to to 0 and we always set
# ndb_use_transactions to 1 and we set ndb_force_send to 1 unless
# we set NDB_FORCE_SEND to no. We never enable index statistics
# through setting ndb_index_stat_enable to 0.
# We always ndb_extra_logging to 0 and we set the new parameter
# to enable user defined partitioning for NDB tables.
#
# We can also run with thread pool plugin set through setting
# THREADPOOL_SIZE to set thread_pool_size, it is also possible
# to set THREADPOOL_ALGORITHM, THREADPOOL_STALL_LIMIT and
# THREADPOOL_PRIO_KICKUP_TIMER.
#
# All other MySQL Server parameters are set to their default value.
#
# We can also lock the MySQL Server using either taskset or using
# numactl.
#
# With taskset set in TASKSET then one sets the CPUs to lock it to
# in SERVER_CPUS (in the form 0x1234).
#
# With numactl set in TASKSET we set the CPUs to lock to in
# SERVER_CPUS (in the form 0-2,60-62).
#
# With numactl we can also set SERVER_BIND to numa node to lock
# memory to and we can set SERVER_MEM_POLICY.
#
# Setting TASKSET to empty means no CPU locking of MySQL Server.
#
# That concludes the settings possible for the MySQL Server.
# There is also a wide set of options available to set for InnoDB
# when running tests with InnoDB as storage engine, we will here
# however focus on running with NDB as storage engine.
#
# ----------------------------------------------------------
# Definition of configuration of NDB data nodes.
# ----------------------------------------------------------
# We also generate a configuration file for NDB.
# This sets up the proper number of data nodes, management servers
# and API nodes.
