From 61aca402cab9669e60a0c9d06dee8a6d89539c0e Mon Sep 17 00:00:00 2001 From: Geoffrey Yu Date: Tue, 14 Nov 2023 11:16:49 -0500 Subject: [PATCH] Workload output enhancements - Remove verbose transaction logging and replace with a summary - Remove unneeded defensive queue drain --- workloads/IMDB_extended/run_repeating_analytics.py | 2 -- workloads/IMDB_extended/run_transactions.py | 9 +++++++++ .../IMDB_extended/workload_utils/transaction_worker.py | 9 ++++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/workloads/IMDB_extended/run_repeating_analytics.py b/workloads/IMDB_extended/run_repeating_analytics.py index a64af53e..b9f1e82e 100644 --- a/workloads/IMDB_extended/run_repeating_analytics.py +++ b/workloads/IMDB_extended/run_repeating_analytics.py @@ -246,8 +246,6 @@ def noop(_signal, _frame): os.fsync(file.fileno()) file.close() database.close_sync() - # Make sure the queue is drained. - _ = stop_queue.get_nowait() def simulation_runner( diff --git a/workloads/IMDB_extended/run_transactions.py b/workloads/IMDB_extended/run_transactions.py index ac11c479..5a1c9c1e 100644 --- a/workloads/IMDB_extended/run_transactions.py +++ b/workloads/IMDB_extended/run_transactions.py @@ -162,6 +162,15 @@ def noop_handler(_signal, _frame): file=latency_file, ) + # Warn if the abort rate is high. + total_aborts = sum(aborts) + total_commits = sum(commits) + abort_rate = total_aborts / (total_aborts + total_commits) + if abort_rate > 0.15: + print( + f"[T {worker_idx}] Abort rate is higher than expected ({abort_rate:.4f})." + ) + try: _ = stop_queue.get_nowait() break diff --git a/workloads/IMDB_extended/workload_utils/transaction_worker.py b/workloads/IMDB_extended/workload_utils/transaction_worker.py index d7031512..7a202652 100644 --- a/workloads/IMDB_extended/workload_utils/transaction_worker.py +++ b/workloads/IMDB_extended/workload_utils/transaction_worker.py @@ -100,7 +100,8 @@ def edit_movie_note(self, db: Database) -> bool: return True except: # pylint: disable=bare-except - logger.exception("Need to rollback.") + # This is too verbose when we have a lot of clients hitting the DB. + # logger.exception("Need to rollback.") db.rollback_sync() return False @@ -150,7 +151,8 @@ def add_new_showing(self, db: Database) -> bool: return True except: # pylint: disable=bare-except - logger.exception("Need to rollback.") + # This is too verbose when we have a lot of clients hitting the DB. + # logger.exception("Need to rollback.") db.rollback_sync() return False @@ -225,7 +227,8 @@ def purchase_tickets(self, db: Database, select_using_name: bool) -> bool: return False except: # pylint: disable=bare-except - logger.exception("Need to rollback.") + # This is too verbose when we have a lot of clients hitting the DB. + # logger.exception("Need to rollback.") db.rollback_sync() return False