aboutsummaryrefslogtreecommitdiff
path: root/src/allocators
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2020-02-19 13:12:30 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2020-02-19 13:12:30 +0100
commit7017f4774c5e33a84ddf662af9689b7b4ab290ce (patch)
treee602ad30bf8521c8c4a187bcfe4d00d8c2baea66 /src/allocators
parenta2ba38e85297ffc101b5db4a9b9f45330d224ca4 (diff)
parent64adaca5ef13770988dc732e23d17d5df10a58cc (diff)
downloadallocbench-7017f4774c5e33a84ddf662af9689b7b4ab290ce.tar.gz
allocbench-7017f4774c5e33a84ddf662af9689b7b4ab290ce.zip
Merge branch 'master' into align_to_cl
Diffstat (limited to 'src/allocators')
-rw-r--r--src/allocators/all.py5
-rw-r--r--src/allocators/glibc.py4
-rw-r--r--src/allocators/tcmalloc.py46
-rw-r--r--src/allocators/tcmalloc/tcmalloc_bazel_build_so.patch22
-rw-r--r--src/allocators/tcmallocs.py7
5 files changed, 70 insertions, 14 deletions
diff --git a/src/allocators/all.py b/src/allocators/all.py
index 4ac0819..8be79e7 100644
--- a/src/allocators/all.py
+++ b/src/allocators/all.py
@@ -18,7 +18,7 @@
"""Collection containing all available allocators"""
import src.allocators.glibcs
-from src.allocators.tcmalloc import tcmalloc, tcmalloc_nofs
+from src.allocators.tcmalloc import tcmalloc, tcmalloc_gperftools, tcmalloc_gperftools_nofs
from src.allocators.jemalloc import jemalloc
from src.allocators.hoard import hoard
from src.allocators.mesh import mesh
@@ -31,6 +31,7 @@ from src.allocators.snmalloc import snmalloc
from src.allocators.rpmalloc import rpmalloc
-allocators = [*src.allocators.glibcs.allocators, tcmalloc, tcmalloc_nofs,
+allocators = [*src.allocators.glibcs.allocators,
+ tcmalloc, tcmalloc_gperftools, tcmalloc_gperftools_nofs,
jemalloc, hoard, mesh, supermalloc, scalloc, tbbmalloc, llalloc, # streamflow,
mimalloc, snmalloc, rpmalloc]
diff --git a/src/allocators/glibc.py b/src/allocators/glibc.py
index 2718343..faeadd4 100644
--- a/src/allocators/glibc.py
+++ b/src/allocators/glibc.py
@@ -17,6 +17,8 @@
"""Glibc definitions"""
+from multiprocessing import cpu_count
+
from src.allocator import Allocator, LIBRARY_PATH
from src.artifact import GitArtifact
@@ -37,7 +39,7 @@ class Glibc(Allocator):
self.build_cmds = ["mkdir -p glibc-build",
"cd glibc-build; {srcdir}/configure --prefix={dir} " + configure_args,
"cd glibc-build; make",
- "cd glibc-build; make install"]
+ f"cd glibc-build; make -l {cpu_count()} install"]
self.cmd_prefix = "{dir}/lib/ld-linux-x86-64.so.2 --library-path {dir}/lib:" + LIBRARY_PATH
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")
+
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(
diff --git a/src/allocators/tcmallocs.py b/src/allocators/tcmallocs.py
index fe8121f..46eccda 100644
--- a/src/allocators/tcmallocs.py
+++ b/src/allocators/tcmallocs.py
@@ -17,7 +17,10 @@
"""Collection containing all glibc variants"""
-from src.allocators.tcmalloc import tcmalloc, tcmalloc_nofs, tcmalloc_align
+import src.allocators.tcmalloc as tcm
-allocators = [tcmalloc, tcmalloc_nofs, tcmalloc_align]
+allocators = [tcm.tcmalloc,
+ tcm.tcmalloc_gperftools_nofs,
+ tcm.tcmalloc_gperftools_align,
+ tcm.tcmalloc_gperftools_cacheline_exclusive]