From 4c0830ffbc045290c167e482855cb25a639df0e0 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sat, 9 Feb 2019 12:45:38 +0100 Subject: add allocators build support and two allocator definitions The allocators created by the file allocators/BA_allocators.py are those used in my BA thesis available at: https://muhq.space/ba.html. allocators/no_falsesharing.py builds patched versions of tcmalloc and glibc without any allocator inroduced falsesharing. --- allocators/tcmalloc_2.7_no_active_falsesharing.patch | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 allocators/tcmalloc_2.7_no_active_falsesharing.patch (limited to 'allocators/tcmalloc_2.7_no_active_falsesharing.patch') diff --git a/allocators/tcmalloc_2.7_no_active_falsesharing.patch b/allocators/tcmalloc_2.7_no_active_falsesharing.patch new file mode 100644 index 0000000..c14172d --- /dev/null +++ b/allocators/tcmalloc_2.7_no_active_falsesharing.patch @@ -0,0 +1,17 @@ +diff --git a/src/thread_cache.cc b/src/thread_cache.cc +index 6d2f832..2074f4a 100644 +--- a/src/thread_cache.cc ++++ b/src/thread_cache.cc +@@ -120,7 +120,11 @@ void* ThreadCache::FetchFromCentralCache(uint32 cl, int32_t byte_size, + ASSERT(list->empty()); + const int batch_size = Static::sizemap()->num_objects_to_move(cl); + +- const int num_to_move = min(list->max_length(), batch_size); ++ int num_to_move = min(list->max_length(), batch_size); ++ const int cache_line_parts = 64 / byte_size; ++ if (cache_line_parts > 0 && cache_line_parts > num_to_move) ++ num_to_move = cache_line_parts; ++ + void *start, *end; + int fetch_count = Static::central_cache()[cl].RemoveRange( + &start, &end, num_to_move); -- cgit v1.2.3