diff options
Diffstat (limited to 'src/allocators/tcmalloc.py')
| -rw-r--r-- | src/allocators/tcmalloc.py | 46 |
1 files changed, 37 insertions, 9 deletions
diff --git a/src/allocators/tcmalloc.py b/src/allocators/tcmalloc.py index ce00df3..7d51bdd 100644 --- a/src/allocators/tcmalloc.py +++ b/src/allocators/tcmalloc.py @@ -14,7 +14,6 @@ # # You should have received a copy of the GNU General Public License # along with allocbench. - """TCMalloc definition for allocbench""" from src.allocator import Allocator, BUILDDIR @@ -24,32 +23,61 @@ from src.artifact import GitArtifact class TCMalloc(Allocator): """TCMalloc allocator""" - sources = GitArtifact("tcmalloc", "https://github.com/gperftools/gperftools.git") + sources = GitArtifact("tcmalloc", "https://github.com/google/tcmalloc.git") + + def __init__(self, name, **kwargs): + + self.LD_PRELOAD = "{dir}/libtcmalloc.so" + self.patches = ["{patchdir}/tcmalloc_bazel_build_so.patch"] + self.build_cmds = [ + "cd {srcdir}; bazel build tcmalloc/tcmalloc.so --compilation_mode opt", + "mkdir -p {dir}", + "cp {srcdir}/bazel-bin/tcmalloc/tcmalloc.so {dir}/libtcmalloc.so" + ] + + super().__init__(name, **kwargs) + + +tcmalloc = TCMalloc("TCMalloc", + color="xkcd:blue", + version="1676100265bd189df6b5513feac15f102542367e") + + +class TCMallocGperftools(Allocator): + """gperftools TCMalloc allocator""" + + sources = GitArtifact("gperftools", + "https://github.com/gperftools/gperftools.git") def __init__(self, name, **kwargs): self.LD_PRELOAD = "{dir}/lib/libtcmalloc.so" self.prepare_cmds = ["./autogen.sh"] - self.build_cmds = ["cd {srcdir}; ./configure --prefix={dir}", - "cd {srcdir}; make install -j4"] + self.build_cmds = [ + "cd {srcdir}; ./configure --prefix={dir}", + "cd {srcdir}; make install -j4" + ] super().__init__(name, **kwargs) -tcmalloc = TCMalloc("TCMalloc", color="xkcd:blue", version="gperftools-2.7") +tcmalloc_gperftools = TCMallocGperftools("TCMalloc-gperftools", + color="xkcd:dark blue", + version="gperftools-2.7") -tcmalloc_nofs = TCMalloc("TCMalloc-NoFalsesharing", +tcmalloc_gperftools_nofs = TCMallocGperftools("TCMalloc-NoFalsesharing", patches=["{patchdir}/tcmalloc_2.7_no_active_falsesharing.patch"], version="gperftools-2.7", color="xkcd:navy") -tcmalloc_align = TCMalloc("TCMalloc-Aligned", +tcmalloc_gperftools_align = TCMallocGperftools("TCMalloc-Aligned", version="gperftools-2.7", color="xkcd:light blue") -tcmalloc_align.LD_PRELOAD = f"{BUILDDIR}/align_to_cl.so {tcmalloc_align.LD_PRELOAD}" +tcmalloc_gperftools_align.LD_PRELOAD = f"{BUILDDIR}/align_to_cl.so {tcmalloc_gperftools_align.LD_PRELOAD}" -tcmalloc_cacheline_exclusive = TCMalloc("TCMalloc-Cacheline-Exclusive", +tcmalloc_gperftools_cacheline_exclusive = TCMalloc("TCMalloc-Cacheline-Exclusive", patches=["{patchdir}/tcmalloc_2.7_cacheline_exclusive.patch"], version="gperftools-2.7", color="xkcd:royal blue") + |
