aboutsummaryrefslogtreecommitdiff
path: root/src/allocators
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2020-02-26 16:19:57 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2020-02-26 16:19:57 +0100
commitff0be98bad9549eeb06355e848bd868c792203a5 (patch)
treea0444b0320b1b0d80b9b4215d16805113fb63871 /src/allocators
parentda69bb193b5249c3f489b18a746e3800b36e37d0 (diff)
downloadallocbench-ff0be98bad9549eeb06355e848bd868c792203a5.tar.gz
allocbench-ff0be98bad9549eeb06355e848bd868c792203a5.zip
externalize speedymalloc
Diffstat (limited to 'src/allocators')
-rw-r--r--src/allocators/speedymalloc.py35
-rw-r--r--src/allocators/speedymallocs.py25
2 files changed, 56 insertions, 4 deletions
diff --git a/src/allocators/speedymalloc.py b/src/allocators/speedymalloc.py
index 0cf6836..e71ac5e 100644
--- a/src/allocators/speedymalloc.py
+++ b/src/allocators/speedymalloc.py
@@ -22,8 +22,35 @@ memory in speeds favor. Memory is mmapped per thread and never freed.
See src/bumpptr.c for the actual implementation.
"""
-import os
-from src.allocator import Allocator, BUILDDIR
+from src.artifact import GitArtifact
+from src.allocator import Allocator
-speedymalloc = Allocator("speedymalloc", LD_PRELOAD=os.path.join(BUILDDIR, "speedymalloc.so"),
- color="xkcd:dark")
+VERSION = "ac18af91cf7c50a686b34402b772423b013553d2"
+
+class Speedymalloc(Allocator):
+ """ Speedymalloc definition for allocbench"""
+
+ sources = GitArtifact("speedymalloc", "https://gitlab.cs.fau.de/flow/speedymalloc.git")
+
+ def __init__(self, name, **kwargs):
+
+ configuration = ""
+ for option, value in kwargs.get("options", {}).items():
+ configuration += f"-D{option}={value} "
+
+ self.build_cmds = ["meson {srcdir} {dir}",
+ f"meson configure {{dir}} {configuration}",
+ "ninja -C {dir}"]
+
+ self.LD_PRELOAD = "{dir}/libspeedymalloc.so"
+ super().__init__(name, **kwargs)
+
+speedymalloc = Speedymalloc("speedymalloc", version=VERSION)
+
+speedymalloc_dont_madv_free = Speedymalloc("speedymalloc_dont_madv_free",
+ options = {"madvise_free": "false"},
+ version=VERSION)
+
+speedymalloc_dont_madv_willneed = Speedymalloc("speedymalloc_dont_madv_willneed",
+ options = {"madvise_willneed": "false"},
+ version=VERSION)
diff --git a/src/allocators/speedymallocs.py b/src/allocators/speedymallocs.py
new file mode 100644
index 0000000..9c14839
--- /dev/null
+++ b/src/allocators/speedymallocs.py
@@ -0,0 +1,25 @@
+# Copyright 2018-2019 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/>.
+
+"""Collection containing all glibc variants"""
+
+import src.allocators.speedymalloc as sm
+
+
+allocators = [sm.speedymalloc,
+ sm.speedymalloc_dont_madv_free,
+ sm.speedymalloc_dont_madv_willneed]