From ff0be98bad9549eeb06355e848bd868c792203a5 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Wed, 26 Feb 2020 16:19:57 +0100 Subject: externalize speedymalloc --- src/allocators/speedymalloc.py | 35 +++++++++++++++++++++++++++++++---- src/allocators/speedymallocs.py | 25 +++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 src/allocators/speedymallocs.py (limited to 'src/allocators') 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 +# +# 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 . + +"""Collection containing all glibc variants""" + +import src.allocators.speedymalloc as sm + + +allocators = [sm.speedymalloc, + sm.speedymalloc_dont_madv_free, + sm.speedymalloc_dont_madv_willneed] -- cgit v1.2.3