Index: storedproc/mysql/delivery.sql =================================================================== --- storedproc/mysql/delivery.sql (.../vendor) (revision 1) +++ storedproc/mysql/delivery.sql (.../trunk) (revision 14) @@ -10,7 +10,7 @@ drop procedure if exists delivery; -delimiter |; +delimiter | CREATE PROCEDURE delivery(in_w_id INT, in_o_carrier_id INT) BEGIN Index: storedproc/mysql/new_order.sql =================================================================== --- storedproc/mysql/new_order.sql (.../vendor) (revision 1) +++ storedproc/mysql/new_order.sql (.../trunk) (revision 14) @@ -9,7 +9,7 @@ */ drop procedure if exists new_order; -delimiter |; +delimiter | CREATE PROCEDURE new_order(tmp_w_id INT, tmp_d_id INT, Index: storedproc/mysql/new_order_2.sql =================================================================== --- storedproc/mysql/new_order_2.sql (.../vendor) (revision 1) +++ storedproc/mysql/new_order_2.sql (.../trunk) (revision 14) @@ -10,7 +10,7 @@ drop procedure if exists new_order_2; -delimiter |; +delimiter | CREATE PROCEDURE new_order_2 (in_w_id INT, Index: storedproc/mysql/stock_level.sql =================================================================== --- storedproc/mysql/stock_level.sql (.../vendor) (revision 1) +++ storedproc/mysql/stock_level.sql (.../trunk) (revision 14) @@ -10,7 +10,7 @@ drop procedure if exists stock_level; -delimiter |; +delimiter | CREATE PROCEDURE stock_level(in_w_id INT, in_d_id INT, Index: storedproc/mysql/payment.sql =================================================================== --- storedproc/mysql/payment.sql (.../vendor) (revision 1) +++ storedproc/mysql/payment.sql (.../trunk) (revision 14) @@ -17,7 +17,7 @@ drop procedure if exists payment; -delimiter |; +delimiter | CREATE PROCEDURE payment(in_w_id INT, in_d_id INT, in_c_id INT, in_c_w_id INT, in_c_d_id INT, in_c_last VARCHAR(16), in_h_amount INT) Index: storedproc/mysql/order_status.sql =================================================================== --- storedproc/mysql/order_status.sql (.../vendor) (revision 1) +++ storedproc/mysql/order_status.sql (.../trunk) (revision 14) @@ -11,7 +11,7 @@ drop procedure if exists order_status; -delimiter |; +delimiter | CREATE PROCEDURE order_status (in_c_id INT, Index: src/Makefile.in =================================================================== --- src/Makefile.in (.../vendor) (revision 1) +++ src/Makefile.in (.../trunk) (revision 14) @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.10 from Makefile.am. +# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -69,14 +69,13 @@ client-dbc_integrity.$(OBJEXT) $(am__objects_2) nodist_client_OBJECTS = $(am__objects_3) client_OBJECTS = $(am_client_OBJECTS) $(nodist_client_OBJECTS) -client_LDADD = $(LDADD) -client_LINK = $(CCLD) $(client_CFLAGS) $(CFLAGS) $(client_LDFLAGS) \ +am__DEPENDENCIES_1 = +client_DEPENDENCIES = $(am__DEPENDENCIES_1) +client_LINK = $(CCLD) $(client_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am_datagen_OBJECTS = datagen.$(OBJEXT) common.$(OBJEXT) datagen_OBJECTS = $(am_datagen_OBJECTS) -datagen_LDADD = $(LDADD) -datagen_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(datagen_LDFLAGS) \ - $(LDFLAGS) -o $@ +datagen_DEPENDENCIES = am__objects_4 = driver-common.$(OBJEXT) driver-logging.$(OBJEXT) \ driver-_socket.$(OBJEXT) driver-client_interface.$(OBJEXT) \ driver-transaction_data.$(OBJEXT) driver-_semaphore.$(OBJEXT) @@ -84,8 +83,8 @@ driver-driver.$(OBJEXT) driver-input_data_generator.$(OBJEXT) \ $(am__objects_4) driver_OBJECTS = $(am_driver_OBJECTS) -driver_LDADD = $(LDADD) -driver_LINK = $(CCLD) $(driver_CFLAGS) $(CFLAGS) $(driver_LDFLAGS) \ +driver_DEPENDENCIES = $(am__DEPENDENCIES_1) +driver_LINK = $(CCLD) $(driver_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am__objects_5 = transaction_test-common.$(OBJEXT) \ transaction_test-logging.$(OBJEXT) \ @@ -109,10 +108,10 @@ nodist_transaction_test_OBJECTS = $(am__objects_7) transaction_test_OBJECTS = $(am_transaction_test_OBJECTS) \ $(nodist_transaction_test_OBJECTS) -transaction_test_LDADD = $(LDADD) +transaction_test_DEPENDENCIES = $(am__DEPENDENCIES_1) transaction_test_LINK = $(CCLD) $(transaction_test_CFLAGS) $(CFLAGS) \ - $(transaction_test_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = am__depfiles_maybe = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ @@ -262,21 +261,21 @@ $(COMMON_SRCS) client_CFLAGS = $(DBCFLAGS) -client_LDFLAGS = $(DBLDFLAGS) +client_LDADD = $(DBLDFLAGS) nodist_client_SOURCES = $(INTERFACE_SRCS) datagen_SOURCES = datagen.c common.c datagen_INCLUDES = -Iinclude -datagen_LDFLAGS = -lm -lpthread +datagen_LDADD = -lm -lpthread driver_SOURCES = driver_main.c driver.c input_data_generator.c \ $(COMMON_SRCS) driver_CFLAGS = $(DBCFLAGS) -driver_LDFLAGS = $(DBLDFLAGS) +driver_LDADD = $(DBLDFLAGS) transaction_test_SOURCES = transaction_test.c db.c input_data_generator.c \ $(COMMON_SRCS) transaction_test_CFLAGS = $(DBCFLAGS) -transaction_test_LDFLAGS = $(DBLDFLAGS) +transaction_test_LDADD = $(DBLDFLAGS) nodist_transaction_test_SOURCES = $(INTERFACE_SRCS) EXTRA_DIST = include/_semaphore.h \ include/_socket.h \ @@ -359,9 +358,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/Makefile + $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -407,7 +406,7 @@ $(client_LINK) $(client_OBJECTS) $(client_LDADD) $(LIBS) datagen$(EXEEXT): $(datagen_OBJECTS) $(datagen_DEPENDENCIES) @rm -f datagen$(EXEEXT) - $(datagen_LINK) $(datagen_OBJECTS) $(datagen_LDADD) $(LIBS) + $(LINK) $(datagen_OBJECTS) $(datagen_LDADD) $(LIBS) driver$(EXEEXT): $(driver_OBJECTS) $(driver_DEPENDENCIES) @rm -f driver$(EXEEXT) $(driver_LINK) $(driver_OBJECTS) $(driver_LDADD) $(LIBS) @@ -702,8 +701,8 @@ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS @@ -715,8 +714,8 @@ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ @@ -726,13 +725,12 @@ CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ - here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique Index: src/include/mysql_common.h =================================================================== --- src/include/mysql_common.h (.../vendor) (revision 1) +++ src/include/mysql_common.h (.../trunk) (revision 14) @@ -28,12 +28,20 @@ char * query; }; +/* extern char mysql_dbname[32]; extern char mysql_host[32]; extern char mysql_port_t[32]; extern char mysql_user[32]; extern char mysql_pass[32]; extern char mysql_socket_t[256]; +*/ +extern const char* mysql_dbname; +extern const char* mysql_host; +extern const char* mysql_port_t; +extern const char* mysql_user; +extern const char* mysql_pass; +extern const char* mysql_socket_t; int commit_transaction(struct db_context_t *dbc); int _connect_to_db(struct db_context_t *dbc); Index: src/db_threadpool.c =================================================================== --- src/db_threadpool.c (.../vendor) (revision 1) +++ src/db_threadpool.c (.../trunk) (revision 14) @@ -84,6 +84,7 @@ #ifdef LIBMYSQL printf("connect to mysql server with parameters: db_name: |%s| host: |%s| user: |%s| pass: |%s| port: |%s| socket: |%s|\n", sname, dbt2_mysql_host, dbt2_user, dbt2_pass, dbt2_mysql_port, dbt2_mysql_socket); + fflush(stdout); db_init(sname, dbt2_mysql_host , dbt2_user, dbt2_pass, dbt2_mysql_port, dbt2_mysql_socket); #endif /* LIBMYSQL */ Index: src/mysql/dbc_common.c =================================================================== --- src/mysql/dbc_common.c (.../vendor) (revision 1) +++ src/mysql/dbc_common.c (.../trunk) (revision 14) @@ -12,12 +12,12 @@ #include "mysql_common.h" #include -char mysql_dbname[32] = "dbt2"; -char mysql_host[32] = "localhost"; -char mysql_user[32] = "root"; -char mysql_pass[32] = ""; -char mysql_port_t[32] = "0"; -char mysql_socket_t[256] = "/tmp/mysql.sock"; +const char* mysql_dbname = "dbt2"; +const char* mysql_host = "localhost"; +const char* mysql_user = "root"; +const char* mysql_pass = ""; +const char* mysql_port_t = "0"; +const char* mysql_socket_t = "/tmp/mysql.sock"; int commit_transaction(struct db_context_t *dbc) @@ -72,22 +72,22 @@ { /* Copy values only if it's not NULL. */ if (_mysql_dbname != NULL) { - strcpy(mysql_dbname, _mysql_dbname); + mysql_dbname = strdup (_mysql_dbname); } if (_mysql_host != NULL) { - strcpy(mysql_host, _mysql_host); + mysql_host = strdup (_mysql_host); } if (_mysql_user != NULL) { - strcpy(mysql_user, _mysql_user); + mysql_user = strdup (_mysql_user); } if (_mysql_pass != NULL) { - strcpy(mysql_pass, _mysql_pass); + mysql_pass = strdup (_mysql_pass); } if (_mysql_port != NULL) { - strcpy(mysql_port_t, _mysql_port); + mysql_port_t = strdup (_mysql_port); } if (_mysql_socket != NULL) { - strcpy(mysql_socket_t, _mysql_socket); + mysql_socket_t = strdup (_mysql_socket); } return OK; } Index: src/Makefile.am =================================================================== --- src/Makefile.am (.../vendor) (revision 1) +++ src/Makefile.am (.../trunk) (revision 14) @@ -35,23 +35,23 @@ client_SOURCES = client.c transaction_queue.c listener.c db_threadpool.c db.c \ $(COMMON_SRCS) client_CFLAGS = $(DBCFLAGS) -client_LDFLAGS = $(DBLDFLAGS) +client_LDADD = $(DBLDFLAGS) nodist_client_SOURCES = $(INTERFACE_SRCS) datagen_SOURCES = datagen.c common.c datagen_INCLUDES = -Iinclude -datagen_LDFLAGS = -lm -lpthread +datagen_LDADD = -lm -lpthread driver_SOURCES = driver_main.c driver.c input_data_generator.c \ $(COMMON_SRCS) driver_CFLAGS = $(DBCFLAGS) -driver_LDFLAGS = $(DBLDFLAGS) +driver_LDADD = $(DBLDFLAGS) transaction_test_SOURCES = transaction_test.c db.c input_data_generator.c \ $(COMMON_SRCS) transaction_test_CFLAGS = $(DBCFLAGS) -transaction_test_LDFLAGS = $(DBLDFLAGS) +transaction_test_LDADD = $(DBLDFLAGS) nodist_transaction_test_SOURCES = $(INTERFACE_SRCS) EXTRA_DIST = include/_semaphore.h \ Index: scripts/run_workload.sh.in =================================================================== --- scripts/run_workload.sh.in (.../vendor) (revision 1) +++ scripts/run_workload.sh.in (.../trunk) (revision 14) @@ -13,14 +13,57 @@ source ${DIR}/dbt2_profile || exit 1 trap 'echo "Test was interrupted by Control-C."; \ - killall client; killall driver; killall sar; killall sadc; killall vmstat; killall iostat; ${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/stop_db.sh' INT + killall client; killall driver; killall sar; killall sadc; killall vmstat; \ + killall iostat; \ + if [ "${CLUSTER_MODE}" != "yes" ]; then \ + ${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/stop_db.sh; fi; exit 1' INT trap 'echo "Test was interrupted. Got TERM signal."; \ - killall client; killall driver; killall sar; killall sadc; killall vmstat; killall iostat; ${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/stop_db.sh' TERM + killall client; killall driver; killall sar; killall sadc; killall vmstat; \ + killall iostat; + if [ "${CLUSTER_MODE}" != "yes" ]; then \ + ${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/stop_db.sh; fi; exit 1' TERM +draw_gauge() +{ + local len=$1 + local percent=$2 + local full=$(( $percent * $len / 100 )) + local empty=$(( len - full )) + + echo -e '\r\c' + echo -n '[' + for j in $(seq 1 $full); do + echo -n '#' + done + for j in $(seq 1 $empty); do + echo -n '_' + done + echo -n "] $percent% " +} + do_sleep() { echo "Sleeping $1 seconds" - sleep $1 + local gauge_len=60 + local sleep_total=$1 + local sleep_int=$(( $sleep_total / $gauge_len )) + if [ $sleep_int -eq 0 ]; then + sleep_int=1 + fi + local sleep_times=$(( $sleep_total / $sleep_int )) + local sleep_last=$(( $sleep_total % $sleep_int )) + + draw_gauge $gauge_len 0 + for i in $(seq 1 $sleep_times); do + sleep $sleep_int + local percent=$(( $i * $sleep_int * 100 / $sleep_total )) + draw_gauge $gauge_len $percent + done + if [ ! $sleep_last -eq 0 ]; then + sleep $sleep_last + draw_gauge $gauge_len 100 + fi + echo "" } make_directories() @@ -193,14 +236,16 @@ echo 'other options:' echo ' -d ' echo ' -h ' - echo ' -l ' - echo ' -o ' + echo ' -P ' + echo ' -o enable oprofile data collection' echo ' -s ' - echo ' -n ' + echo ' -n no thinking or keying time (default no)' if [ "$DBDIR" == "mysql" ]; then echo ' -u ' - echo ' -x ' + echo ' -p ' fi + echo ' -l ' + echo ' -x enable cluster mode (no ssh connections to "database host", just NOTPM)' echo ' -z ' echo '' echo 'Example: sh run_workload.sh -c 20 -d 100 -w 1' @@ -227,15 +272,24 @@ if [ ${DBDIR} == "pgsql" ]; then DB_PORT=5432 elif [ ${DBDIR} == "mysql" ]; then - DB_PORT="" + DB_PORT=3306 fi DB_USER=${DBUSER} SLEEPY=1000 # milliseconds USE_OPROFILE=0 THREADS_PER_WAREHOUSE=10 -while getopts "c:d:H:hl:nop:s:t:u:w:x:z:" opt; do +if [ $# == 0 ]; then + usage + exit 1 +fi + +while getopts "Hc:d:h:P:nol:s:t:u:p:w:xz:" opt; do case $opt in + H) + usage + exit 1 + ;; c) # Check for numeric value DBCON=`echo $OPTARG | egrep "^[0-9]+$"` @@ -245,14 +299,10 @@ DURATION=`echo $OPTARG | egrep "^[0-9]+$"` validate_parameter $opt $OPTARG $DURATION ;; - H) + h) DB_HOSTNAME=${OPTARG} ;; - h) - usage - exit 1 - ;; - l) + P) DB_PORT=`echo $OPTARG | egrep "^[0-9]+$"` validate_parameter $opt $OPTARG $DB_PORT ;; @@ -262,7 +312,7 @@ o) USE_OPROFILE=1 ;; - p) + l) DB_PARAMS=$OPTARG ;; s) @@ -276,15 +326,16 @@ u) DB_USER=${OPTARG} ;; - + p) + DB_PASSWORD=${OPTARG} + ;; w) WAREHOUSES=`echo $OPTARG | egrep "^[0-9]+$"` validate_parameter $opt $OPTARG $WAREHOUSES ;; x) - DB_PASSWORD=${OPTARG} + CLUSTER_MODE="yes" ;; - z) COMMENT=$OPTARG ;; @@ -338,7 +389,7 @@ # Create the directories we will need. # make_directories -if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then +if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" -a ! "${CLUSTER_MODE}" == "yes" ]; then # # Create direcotires on the database server if specified. # @@ -368,7 +419,6 @@ # Get any OS specific information. OS_DIR=`uname` $abs_top_srcdir/scripts/$OS_DIR/get_os_info.sh -o $OUTPUT_DIR - # Output run information into the readme.txt. echo "Database Scale Factor: $WAREHOUSES warehouses" >> $OUTPUT_DIR/readme.txt echo "Test Duration: $DURATION seconds" >> $OUTPUT_DIR/readme.txt @@ -378,14 +428,15 @@ DB_COMMAND="ssh ${DB_HOSTNAME}" fi -${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/stop_db.sh -if [ -n "${DB_COMMAND}" ]; then - ${DB_COMMAND} "${abs_top_srcdir}/scripts/${DBDIR}/start_db.sh ${START_DB_ARGS} -p \"${DB_PARAMS}\"" || exit 1 -else +if [ ! "${CLUSTER_MODE}" == "yes" ]; then + ${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/stop_db.sh + if [ -n "${DB_COMMAND}" ]; then + ${DB_COMMAND} "${abs_top_srcdir}/scripts/${DBDIR}/start_db.sh ${START_DB_ARGS} -p \"${DB_PARAMS}\"" # || exit 1 + else ${abs_top_srcdir}/scripts/${DBDIR}/start_db.sh ${START_DB_ARGS} \ -p "${DB_PARAMS}" || exit 1 + fi fi - # # Redisplay the test parameters. # @@ -426,6 +477,10 @@ CLIENT_COMMAND_ARGS="${CLIENT_COMMAND_ARGS} -t ${DB_SOCKET}" fi +if [ -n "${DB_HOSTNAME}" ]; then + CLIENT_COMMAND_ARGS="${CLIENT_COMMAND_ARGS} -h ${DB_HOSTNAME}" +fi + if [ -n "${DB_PORT}" ]; then echo "DATABASE PORT: ${DB_PORT}" CLIENT_COMMAND_ARGS="${CLIENT_COMMAND_ARGS} -l ${DB_PORT}" @@ -444,6 +499,7 @@ # Start the client. # echo "Stage 1. Starting up client..." +USE_PGPOOL=${USE_PGPOOL:-0} if [ ${DBDIR} == "pgsql" ]; then if [ ${USE_PGPOOL} -eq 1 ]; then echo "Starting pgpool..." @@ -457,15 +513,16 @@ CLIENT_COMMAND_ARGS="${CLIENT_COMMAND_ARGS} -d ${DBNAME} -t /tmp/mysql.sock" fi CLIENT_COMMAND_ARGS="${CLIENT_COMMAND_ARGS} -f -c ${DBCON} -s ${SLEEPY} -o ${CLIENT_OUTPUT_DIR}" -${abs_top_srcdir}/src/client ${CLIENT_COMMAND_ARGS} > \ +# exec is here to prevent ugly notification when the client is killed +exec ${abs_top_srcdir}/src/client ${CLIENT_COMMAND_ARGS} > \ ${OUTPUT_DIR}/client.out 2>&1 || exit 1 & - # Sleep long enough for all the client database connections to be established. SLEEPYTIME=$(( (1+$DBCON)*$SLEEPY/1000 )) do_sleep $SLEEPYTIME # Start collecting data before we start the test. -SLEEP_RAMPUP=$(( (($WAREHOUSES+1)*10*$SLEEPY/1000) )) +#SLEEP_RAMPUP=$(( (($WAREHOUSES+1)*10*$SLEEPY/1000) )) - $WAREHOUSES+1 seems to be off by 1 +SLEEP_RAMPUP=$(( ($WAREHOUSES*$SLEEPY)/100 )) SLEEPYTIME=$(( $SLEEP_RAMPUP+$DURATION )) SAMPLE_LENGTH=60 ITERATIONS=$(( ($SLEEPYTIME/$SAMPLE_LENGTH)+1 )) @@ -473,16 +530,17 @@ --iter ${ITERATIONS} \ --sample ${SAMPLE_LENGTH} \ --outdir ${OUTPUT_DIR} > ${OUTPUT_DIR}/stats.out 2>&1 & -if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then +if [ ! "${CLUSTER_MODE}" == "yes" ]; then + if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then ${DB_COMMAND} "${abs_top_srcdir}/scripts/sysstats.sh --iter ${ITERATIONS} --sample ${SAMPLE_LENGTH} --outdir ${DB_OUTPUT_DIR} > ${DB_OUTPUT_DIR}/stats.out 2>&1" & + fi + ${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/db_stat.sh -o $DB_OUTPUT_DIR \ + -i $ITERATIONS -s $SAMPLE_LENGTH > $OUTPUT_DIR/dbstats.out 2>&1 & fi -${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/db_stat.sh -o $DB_OUTPUT_DIR \ - -i $ITERATIONS -s $SAMPLE_LENGTH > $OUTPUT_DIR/dbstats.out 2>&1 & - # Initialize oprofile before we start the driver. if [ ${USE_OPROFILE} -eq 1 ]; then oprofile_init - if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then + if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" -a ! "${CLUSTER_MODE}" == "yes" ]; then oprofile_init ${DB_HOSTNAME} fi fi @@ -490,21 +548,18 @@ # Start the driver. echo '' echo "Stage 2. Starting up driver..." -echo "${SLEEPY} threads started per millisecond" - +echo "1 thread started per ${SLEEPY} millisecond" DRIVERS=$(( $THREADS_PER_WAREHOUSE*$WAREHOUSES )) DRIVER_COMMAND_ARGS="-d ${CLIENT_HOSTNAME} -l ${DURATION} -wmin 1 -wmax ${WAREHOUSES} -w ${WAREHOUSES} -sleep ${SLEEPY} -outdir ${DRIVER_OUTPUT_DIR} -tpw ${THREADS_PER_WAREHOUSE} ${NO_THINK}" ${abs_top_srcdir}/src/driver ${DRIVER_COMMAND_ARGS} > \ ${OUTPUT_DIR}/driver.out 2>&1 || exit 1& - echo -n "estimated rampup time: " do_sleep $SLEEP_RAMPUP echo "estimated rampup time has elapsed" - # Clear the readprofile data after the driver ramps up. if [ -f /proc/profile ]; then readprofile_clear() - if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then + if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" -a ! "${CLUSTER_MODE}" == "yes" ]; then readprofile_clear ${DB_HOSTNAME} fi fi @@ -512,7 +567,7 @@ # Reset the oprofile counters after the driver ramps up. if [ ${USE_OPROFILE} -eq 1 ]; then oprofile_reset - if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then + if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" -a ! "${CLUSTER_MODE}" == "yes" ]; then oprofile_reset ${DB_HOSTNAME} fi fi @@ -524,7 +579,7 @@ # Collect readprofile data. if [ -f /proc/profile ]; then readprofile_collect ${OUTPUT_DIR} - if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then + if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" -a ! "${CLUSTER_MODE}" == "yes" ]; then readprofile_collect ${DB_OUTPUT_DIR} ${DB_HOSTNAME} fi fi @@ -532,7 +587,7 @@ # Collect oprofile data. if [ ${USE_OPROFILE} -eq 1 ]; then oprofile_collect ${OUTPUT_DIR} - if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then + if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" -a ! "${CLUSTER_MODE}" == "yes" ]; then oprofile_collect ${DB_OUTPUT_DIR} ${DB_HOSTNAME} fi fi @@ -544,7 +599,9 @@ echo "Killing client..." killall client driver 2> /dev/null -${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/stop_db.sh +if [ ! "${CLUSTER_MODE}" == "yes" ]; then + ${DB_COMMAND} ${abs_top_srcdir}/scripts/${DBDIR}/stop_db.sh +fi if [ ${USE_PGPOOL} -eq 1 ]; then @PGPOOL@ -f ${DIR}/pgsql/pgpool.conf stop fi @@ -553,33 +610,36 @@ ${abs_top_srcdir}/scripts/post-process \ --dir ${OUTPUT_DIR} --xml > ${DRIVER_OUTPUT_DIR}/results.out -if [ ${USE_OPROFILE} -eq 1 ]; then + +if [ ! "${CLUSTER_MODE}" == "yes" ]; then + if [ ${USE_OPROFILE} -eq 1 ]; then oprofile_annotate ${OUTPUT_DIR} & if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then oprofile_annotate ${DB_OUTPUT_DIR} ${DB_HOSTNAME} & fi wait -fi + fi -if [ ${USE_OPROFILE} -eq 1 ]; then + if [ ${USE_OPROFILE} -eq 1 ]; then oprofile_stop if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then oprofile_stop ${DB_HOSTNAME} fi -fi + fi -if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then + if [ -n ${DB_HOSTNAME} -a ! "${DB_HOSTNAME}" == "localhost" ]; then # # If a database system is specified, rsync all the logs back to here. # @RSYNC@ -a -e "ssh" --delete ${DB_HOSTNAME}:${DB_OUTPUT_DIR}/ \ ${DB_OUTPUT_DIR}/ + fi fi - # Change the permissions on the database log, not readable by other users by # default. (No, not the transaction log.) -chmod 644 ${DB_OUTPUT_DIR}/log - +if [ -e "${DB_OUTPUT_DIR}/log" ]; then + chmod 644 ${DB_OUTPUT_DIR}/log +fi # Postprocessing of Database Statistics post_process_sar ${OUTPUT_DIR}/sar_raw.out post_process_sar ${DB_OUTPUT_DIR}/sar_raw.out Index: scripts/mysql/build_db.sh.in =================================================================== --- scripts/mysql/build_db.sh.in (.../vendor) (revision 1) +++ scripts/mysql/build_db.sh.in (.../trunk) (revision 14) @@ -148,7 +148,8 @@ no_o_id int(11) NOT NULL default '0', no_d_id int(11) NOT NULL default '0', no_w_id int(11) NOT NULL default '0', - PRIMARY KEY (no_d_id,no_w_id,no_o_id) + PRIMARY KEY (no_d_id,no_w_id,no_o_id), + KEY ix_no_wid_did (no_w_id,no_d_id) )" ORDER_LINE="CREATE TABLE order_line ( @@ -358,6 +359,7 @@ MYSQL="@MYSQL@" DB_HOST="localhost" +DB_PORT="3306" DB_NAME=${DBNAME} DB_PATH=${DBDATA} DB_SOCKET="/tmp/mysql.sock" @@ -367,7 +369,7 @@ GENERATE_DATAFILE=0 WAREHOUSES=1 -while getopts "d:h:f:gs:e:m:u:p:vw:" opt; do +while getopts "d:h:P:f:gs:e:m:u:p:vw:l" opt; do case $opt in d) DB_NAME=${OPTARG} @@ -378,7 +380,6 @@ g) GENERATE_DATAFILE=1 ;; - s) DB_SOCKET=$OPTARG ;; @@ -388,6 +389,9 @@ h) DB_HOST=$OPTARG ;; + P) + DB_PORT=$OPTARG + ;; u) DB_USER=$OPTARG ;; @@ -455,7 +459,7 @@ ${TOPDIR}/src/datagen -d ${DBDATA} -w ${WAREHOUSES} --mysql || exit 1 fi -MYSQL_ARGS="$MYSQL_ARGS -h $DB_HOST -u $DB_USER --socket=$DB_SOCKET" +MYSQL_ARGS="$MYSQL_ARGS -h $DB_HOST -P $DB_PORT -u $DB_USER --socket=$DB_SOCKET" MYSQL="$MYSQL $MYSQL_ARGS" echo "" @@ -464,6 +468,7 @@ echo "DB_ENGINE: $DB_ENGINE" echo "DB_SCHEME: $DB_SCHEME" echo "DB_HOST: $DB_HOST" +echo "DB_PORT: $DB_PORT" echo "DB_USER: $DB_USER" echo "DB_SOCKET: $DB_SOCKET"