diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2020-02-17 15:18:29 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2020-02-17 15:18:29 +0100 |
| commit | 4c39d7b1e2d3a2ac4d6255170631c5bd610a2878 (patch) | |
| tree | bbd58ccb7bcba1f6620b3b9670b5441da57621c5 | |
| parent | 2cb2015a6a9cecac3e204af9951675b981f19554 (diff) | |
| download | allocbench-4c39d7b1e2d3a2ac4d6255170631c5bd610a2878.tar.gz allocbench-4c39d7b1e2d3a2ac4d6255170631c5bd610a2878.zip | |
add new standalone TCMalloc
| -rw-r--r-- | src/allocators/tcmalloc.py | 45 | ||||
| -rw-r--r-- | src/allocators/tcmalloc/tcmalloc_bazel_build_so.patch | 22 |
2 files changed, 58 insertions, 9 deletions
diff --git a/src/allocators/tcmalloc.py b/src/allocators/tcmalloc.py index f81f88b..571ef0d 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 @@ -24,21 +23,49 @@ 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", "mkdir {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:blue", + version="gperftools-2.7") -tcmalloc_nofs = TCMalloc("TCMalloc-NoFalsesharing", - patches=["{patchdir}/tcmalloc_2.7_no_active_falsesharing.patch"], - version="gperftools-2.7", - color="xkcd:navy") +tcmalloc_gperftools_nofs = TCMallocGperftools( + "TCMalloc-gperftools-NoFalsesharing", + patches=["{patchdir}/tcmalloc_2.7_no_active_falsesharing.patch"], + version="gperftools-2.7", + color="xkcd:navy") diff --git a/src/allocators/tcmalloc/tcmalloc_bazel_build_so.patch b/src/allocators/tcmalloc/tcmalloc_bazel_build_so.patch new file mode 100644 index 0000000..cdd2840 --- /dev/null +++ b/src/allocators/tcmalloc/tcmalloc_bazel_build_so.patch @@ -0,0 +1,22 @@ +diff --git tcmalloc/BUILD tcmalloc/BUILD +index 66d160e..25946af 100644 +--- tcmalloc/BUILD ++++ tcmalloc/BUILD +@@ -109,6 +109,17 @@ cc_library( + alwayslink = 1, + ) + ++# This library provides tcmalloc as shared object ++cc_binary( ++ name = "tcmalloc.so", ++ copts = TCMALLOC_DEFAULT_COPTS, ++ linkshared = 1, ++ linkstatic = 1, ++ deps = overlay_deps + tcmalloc_deps + [ ++ ":tcmalloc", ++ ] ++) ++ + # Provides tcmalloc always; use per-thread mode. + # + cc_library( |
