aboutsummaryrefslogtreecommitdiff
path: root/src/benchmarks/rdtsc.py
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2020-05-06 16:56:32 +0200
committerFlorian Fischer <florian.fl.fischer@fau.de>2020-06-02 11:18:47 +0200
commit8174a918ea3b7cb216bf7ea98cfdc10661b5c37d (patch)
tree0747ec3ccb9f8d7eeccfac35977fc17855ca3bbb /src/benchmarks/rdtsc.py
parent8f52e8fc02dd235582f5961941bcd564e9a681cd (diff)
downloadallocbench-8174a918ea3b7cb216bf7ea98cfdc10661b5c37d.tar.gz
allocbench-8174a918ea3b7cb216bf7ea98cfdc10661b5c37d.zip
make the whole project more python idiomatic
* rename src directory to allocbench * make global variable names UPPERCASE * format a lot of code using yapf * use lowercase ld_preload and ld_library_path as Allocator members * name expected Errors 'err' and don't raise a new Exception * disable some pylint messages
Diffstat (limited to 'src/benchmarks/rdtsc.py')
-rw-r--r--src/benchmarks/rdtsc.py81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/benchmarks/rdtsc.py b/src/benchmarks/rdtsc.py
deleted file mode 100644
index 03f8ff3..0000000
--- a/src/benchmarks/rdtsc.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2020 Florian Fischer <florian.fl.fischer@fau.de>
-#
-# This file is part of allocbench.
-#
-# allocbench is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# allocbench is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with allocbench. If not, see <http://www.gnu.org/licenses/>.
-"""Definition of the rdtsc micro benchmark
-
-This benchmark measures the clock cycles used by malloc.
-It tries to spread the spawned thread on all cores exept the first one.
-See: https://developers.redhat.com/blog/2016/03/11/practical-micro-benchmarking-with-ltrace-and-sched/
-"""
-
-import numpy as np
-import matplotlib
-import matplotlib.pyplot as plt
-
-from src.benchmark import Benchmark
-import src.globalvars
-import src.plots
-
-
-class BenchmarkRdtsc(Benchmark):
- """rdtsc micro benchmark
-
- This benchmark allocates and frees n blocks in t concurrent threads measuring the used cycles.
- """
- def __init__(self):
- name = "rdtsc"
-
- self.cmd = "rdtsc {mode} 100000 64 {threads}"
- self.measure_cmd = ""
-
- self.args = {"threads": [1],
- "mode": ['fresh', 'cached']}
-
- self.requirements = ["rdtsc"]
- super().__init__(name)
-
- def process_output(self, result, stdout, stderr, alloc, perm):
- all_cycles = []
- for line in stdout.splitlines():
- all_cycles.append(int(line.split()[1]))
- result["all_cycles"] = all_cycles
- result["cycles"] = np.mean(all_cycles)
-
- def summary(self):
- for perm in self.iterate_args(args=self.results['args']):
- label = f'rdtsc_{perm}_cycles'
- fig = plt.figure(label)
- src.plots.FIGURES[label] = fig
-
- axes = plt.axes()
- axes.set_ylim([50, 800])
-
- for i, alloc in enumerate(self.results['allocators']):
- d = np.sort(self.results[alloc][perm][0]['all_cycles'])
- color = src.plots._get_alloc_color(self, alloc)
- color = f"C{i}"
- plt.plot(d, label=alloc, color=color)
-
- plt.legend()
- plt.title(str(perm))
- fig.savefig(f'{label}.{src.globalvars.summary_file_ext}')
- plt.show()
-
-
- src.plots.export_stats_to_csv(self, "cycles")
-
-
-rdtsc = BenchmarkRdtsc()