@@ -13,6 +13,7 @@ CURRENT_TS=$(date +%Y%m%d_%H%M%S%N_%Z)
13
13
DOCKER_MACHINE=" nancy-$CURRENT_TS "
14
14
DOCKER_MACHINE=" ${DOCKER_MACHINE// _/ -} "
15
15
KEEP_ALIVE=0
16
+ DURATION_WRKLD=" "
16
17
VERBOSE_OUTPUT_REDIRECT=" > /dev/null"
17
18
EBS_SIZE_MULTIPLIER=5
18
19
POSTGRES_VERSION_DEFAULT=10
@@ -1065,7 +1066,7 @@ if [[ "$RUN_ON" == "localhost" ]]; then
1065
1066
if [[ -z ${CONTAINER_ID+x} ]]; then
1066
1067
CONTAINER_HASH=$( docker run --name=" pg_nancy_${CURRENT_TS} " \
1067
1068
-v $TMP_PATH :/machine_home \
1068
- -dit " postgresmen/postgres-with-stuff:pg ${PG_VERSION} " \
1069
+ -dit " postgresmen/postgres-with-stuff:postgres ${PG_VERSION} _pgbadger10 " \
1069
1070
)
1070
1071
else
1071
1072
CONTAINER_HASH=" $CONTAINER_ID "
@@ -1388,7 +1389,9 @@ function apply_postgres_configuration() {
1388
1389
# None
1389
1390
# ######################################
1390
1391
function prepare_start_workload() {
1391
- # Save before workload log
1392
+ msg " Execute vacuumdb..."
1393
+ docker_exec vacuumdb -U postgres $DB_NAME -j $CPU_CNT --analyze
1394
+
1392
1395
msg " Save prepaparation log"
1393
1396
logpath=$( \
1394
1397
docker_exec bash -c " psql -XtU postgres \
@@ -1398,17 +1401,16 @@ function prepare_start_workload() {
1398
1401
docker_exec bash -c " mkdir $MACHINE_HOME /$ARTIFACTS_FILENAME "
1399
1402
docker_exec bash -c " gzip -c $logpath > $MACHINE_HOME /$ARTIFACTS_FILENAME /postgresql.prepare.log.gz"
1400
1403
1401
- # Clear statistics and log
1402
- msg " Execute vacuumdb..."
1403
- docker_exec vacuumdb -U postgres $DB_NAME -j $CPU_CNT --analyze
1404
+ msg " Reset pg_stat_*** and Postgres log"
1405
+ docker_exec psql -U postgres $DB_NAME -c ' select pg_stat_reset(), pg_stat_statements_reset();' > /dev/null
1404
1406
docker_exec bash -c " echo '' > /var/log/postgresql/postgresql-$PG_VERSION -main.log"
1405
1407
}
1406
1408
1407
1409
# ######################################
1408
1410
# Execute workload.
1409
1411
# Globals:
1410
1412
# WORKLOAD_REAL, WORKLOAD_REAL_REPLAY_SPEED, WORKLOAD_CUSTOM_SQL, MACHINE_HOME,
1411
- # DB_NAME, VERBOSE_OUTPUT_REDIRECT, docker_exec alias
1413
+ # DURATION_WRKLD, DB_NAME, VERBOSE_OUTPUT_REDIRECT, docker_exec alias
1412
1414
# Arguments:
1413
1415
# None
1414
1416
# Returns:
@@ -1439,6 +1441,7 @@ function execute_workload() {
1439
1441
END_TIME=$( date +%s)
1440
1442
DURATION=$( echo $(( END_TIME- OP_START_TIME)) | awk ' {printf "%d:%02d:%02d", $1/3600, ($1/60)%60, $1%60}' )
1441
1443
msg " Time taken to execute workload: $DURATION ."
1444
+ DURATION_WRKLD=" $DURATION "
1442
1445
}
1443
1446
1444
1447
# ######################################
@@ -1490,7 +1493,7 @@ function collect_results() {
1490
1493
if [[ " $RUN_ON " == " localhost" ]]; then
1491
1494
docker cp $CONTAINER_HASH :$MACHINE_HOME /$ARTIFACTS_FILENAME $ARTIFACTS_DESTINATION /
1492
1495
elif [[ " $RUN_ON " == " aws" ]]; then
1493
- mkdir $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME
1496
+ mkdir -p $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME
1494
1497
docker-machine scp $DOCKER_MACHINE :/home/storage/$ARTIFACTS_FILENAME /* $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME /
1495
1498
else
1496
1499
err " ASSERT: must not reach this point"
@@ -1531,17 +1534,24 @@ apply_ddl_undo_code
1531
1534
1532
1535
END_TIME=$( date +%s)
1533
1536
DURATION=$( echo $(( END_TIME- START_TIME)) | awk ' {printf "%d:%02d:%02d", $1/3600, ($1/60)%60, $1%60}' )
1534
- echo -e " $( date " +%Y-%m-%d %H:%M:%S" ) : Run done for $DURATION "
1535
- echo -e " JSON Report: $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME /pgbadger.json"
1536
- echo -e " HTML Report: $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME /pgbadger.html"
1537
- echo -e " Query log: $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME /postgresql.workload.log.gz"
1538
- echo -e " Prepare log: $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME /postgresql.prepare.log.gz"
1539
- echo -e " Postgresql configuration log: $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME /postgresql.conf"
1540
-
1541
- echo -e " -------------------------------------------"
1542
- echo -e " Workload summary:"
1543
- echo -e " Summarized query duration:\t" $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .overall_stat.queries_duration' ) " ms"
1544
- echo -e " Queries:\t\t\t" $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .overall_stat.queries_number' )
1545
- echo -e " Query groups:\t\t" $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .normalyzed_info| length' )
1546
- echo -e " Errors:\t\t\t" $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .overall_stat.errors_number' )
1547
- echo -e " -------------------------------------------"
1537
+ msg " Done."
1538
+ echo -e " ------------------------------------------------------------------------------"
1539
+ echo -e " Artifacts (collected in \" $ARTIFACTS_DESTINATION /$ARTIFACTS_FILENAME /\" ):"
1540
+ echo -e " Postgres config: postgresql.conf"
1541
+ echo -e " Postgres logs: postgresql.prepare.log.gz (preparation),"
1542
+ echo -e " postgresql.workload.log.gz (workload)"
1543
+ echo -e " pgBadger reports: pgbadger.html (for humans),"
1544
+ echo -e " pgbadger.json (for robots)"
1545
+ echo -e " Stat stapshots: pg_stat_statements.csv,"
1546
+ echo -e " pg_stat_***.csv"
1547
+ echo -e " ------------------------------------------------------------------------------"
1548
+ echo -e " Total execution time: $DURATION "
1549
+ echo -e " ------------------------------------------------------------------------------"
1550
+ echo -e " Workload:"
1551
+ echo -e " Execution time: $DURATION_WRKLD "
1552
+ echo -e " Total query time: " $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .overall_stat.queries_duration' ) " ms"
1553
+ echo -e " Queries: " $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .overall_stat.queries_number' )
1554
+ echo -e " Query groups: " $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .normalyzed_info | length' )
1555
+ echo -e " Errors: " $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .overall_stat.errors_number' )
1556
+ echo -e " Errors groups: " $( docker_exec cat $MACHINE_HOME /$ARTIFACTS_FILENAME /pgbadger.json | jq ' .error_info | length' )
1557
+ echo -e " ------------------------------------------------------------------------------"
0 commit comments