From c2560e5c7dd2e6fb21dfa41547143f0d08e83b63 Mon Sep 17 00:00:00 2001 From: Ana Mativi Date: Wed, 25 Oct 2017 13:40:46 +0200 Subject: [PATCH 1/3] DRAMSylva uses the same latency range for all plots --- DRAMSys/traceAnalyzer/scripts/plots.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/DRAMSys/traceAnalyzer/scripts/plots.py b/DRAMSys/traceAnalyzer/scripts/plots.py index d0a52cc3..cf24d23d 100755 --- a/DRAMSys/traceAnalyzer/scripts/plots.py +++ b/DRAMSys/traceAnalyzer/scripts/plots.py @@ -4,6 +4,8 @@ from memUtil import * from math import * import ntpath import os +numberOfBins = 50 +latencyRange = None plots = [] @@ -236,7 +238,7 @@ def latency_histogram(connection, tracePath, steps): import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPages - plt.hist(dataArray, histtype='bar', facecolor='green') + plt.hist(dataArray, numberOfBins, range=latencyRange, histtype='bar', facecolor='green') plt.grid(True) plt.xlabel("Access Time [ns]") plt.ylabel("Number of Accesses (Frequency)") @@ -312,4 +314,7 @@ def generatePlots(pathToTrace): if __name__ == "__main__": path = sys.argv[1] + if ((len(sys.argv)) > 2): + numberOfBins = int(sys.argv[2]) # Optional argument to use a different number of bins + latencyRange = (0, int(sys.argv[3])) # Optional argument to use a different range generatePlots(path) From 4d9ec186dc069bd9c078569a24370b856f06b712 Mon Sep 17 00:00:00 2001 From: Ana Mativi Date: Thu, 26 Oct 2017 18:10:49 +0200 Subject: [PATCH 2/3] Improvements for DRAMSylva latency plot --- DRAMSys/traceAnalyzer/scripts/metrics.py | 7 +++++++ DRAMSys/traceAnalyzer/scripts/plots.py | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/DRAMSys/traceAnalyzer/scripts/metrics.py b/DRAMSys/traceAnalyzer/scripts/metrics.py index 24bf8e1e..26e55057 100644 --- a/DRAMSys/traceAnalyzer/scripts/metrics.py +++ b/DRAMSys/traceAnalyzer/scripts/metrics.py @@ -57,6 +57,13 @@ def trans_with_max_response_latency(connection): result = cursor.fetchone() return result[0] +@metric +def duration_max_response_latency(connection): + cursor = connection.cursor() + cursor.execute(""" SELECT max(RESP.PHASEBEGIN - REQ.PHASEBEGIN)/1000 FROM PHASES REQ, PHASES RESP WHERE REQ.PHASENAME = 'REQ' AND RESP.PHASENAME='RESP' AND REQ.TRANSACT = RESP.TRANSACT """) + result = cursor.fetchone() + return result[0] + @metric def memory_active(connection): diff --git a/DRAMSys/traceAnalyzer/scripts/plots.py b/DRAMSys/traceAnalyzer/scripts/plots.py index cf24d23d..7576fd8a 100755 --- a/DRAMSys/traceAnalyzer/scripts/plots.py +++ b/DRAMSys/traceAnalyzer/scripts/plots.py @@ -4,7 +4,7 @@ from memUtil import * from math import * import ntpath import os -numberOfBins = 50 +numberOfBins = "auto" latencyRange = None plots = [] @@ -238,7 +238,7 @@ def latency_histogram(connection, tracePath, steps): import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPages - plt.hist(dataArray, numberOfBins, range=latencyRange, histtype='bar', facecolor='green') + plt.hist(dataArray, bins=numberOfBins, range=latencyRange, histtype='bar', facecolor='green') plt.grid(True) plt.xlabel("Access Time [ns]") plt.ylabel("Number of Accesses (Frequency)") @@ -315,6 +315,7 @@ def generatePlots(pathToTrace): if __name__ == "__main__": path = sys.argv[1] if ((len(sys.argv)) > 2): - numberOfBins = int(sys.argv[2]) # Optional argument to use a different number of bins - latencyRange = (0, int(sys.argv[3])) # Optional argument to use a different range + latencyRange = (0, int(sys.argv[2])) # Optional argument to use a different range + if ((len(sys.argv)) > 3): + numberOfBins = int(sys.argv[3]) # Optional argument to use a different number of bins generatePlots(path) From ddeeeeb0e809f6afb732168caba71d502d2be91c Mon Sep 17 00:00:00 2001 From: Ana Mativi Date: Mon, 6 Nov 2017 18:26:36 +0100 Subject: [PATCH 3/3] Updating metric name and using 50 bins as default --- DRAMSys/traceAnalyzer/scripts/metrics.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/DRAMSys/traceAnalyzer/scripts/metrics.py b/DRAMSys/traceAnalyzer/scripts/metrics.py index 26e55057..1b6e73ce 100644 --- a/DRAMSys/traceAnalyzer/scripts/metrics.py +++ b/DRAMSys/traceAnalyzer/scripts/metrics.py @@ -51,16 +51,17 @@ def average_response_latency_in_ns(connection): @metric -def trans_with_max_response_latency(connection): +def max_response_latency_in_ns(connection): cursor = connection.cursor() - cursor.execute(""" SELECT REQ.TRANSACT, max(RESP.PHASEBEGIN - REQ.PHASEBEGIN)/1000 FROM PHASES REQ, PHASES RESP WHERE REQ.PHASENAME = 'REQ' AND RESP.PHASENAME='RESP' AND REQ.TRANSACT = RESP.TRANSACT """) + cursor.execute(""" SELECT max(RESP.PHASEBEGIN - REQ.PHASEBEGIN)/1000 FROM PHASES REQ, PHASES RESP WHERE REQ.PHASENAME = 'REQ' AND RESP.PHASENAME='RESP' AND REQ.TRANSACT = RESP.TRANSACT """) result = cursor.fetchone() return result[0] + @metric -def duration_max_response_latency(connection): +def trans_with_max_response_latency(connection): cursor = connection.cursor() - cursor.execute(""" SELECT max(RESP.PHASEBEGIN - REQ.PHASEBEGIN)/1000 FROM PHASES REQ, PHASES RESP WHERE REQ.PHASENAME = 'REQ' AND RESP.PHASENAME='RESP' AND REQ.TRANSACT = RESP.TRANSACT """) + cursor.execute(""" SELECT REQ.TRANSACT, max(RESP.PHASEBEGIN - REQ.PHASEBEGIN)/1000 FROM PHASES REQ, PHASES RESP WHERE REQ.PHASENAME = 'REQ' AND RESP.PHASENAME='RESP' AND REQ.TRANSACT = RESP.TRANSACT """) result = cursor.fetchone() return result[0]