From 380bc6d2e4ec62e724612dbac57ffdbd82511f9d Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Wed, 27 Apr 2022 15:06:22 +0000 Subject: [PATCH] [CHERRY-PICKED FOR TESTING ONLY] crimson: Enable tcmalloc when using seastar classic-osds have always caused significant memory fragmentation when using the libc memory allocator due to the way that Ceph tends to utilize memory. In recent testing, crimson-osd was found to use 25-27GB of RAM with the stock 3GB bluestore cache settings (osd_memory_target is only used when tcmalloc is available). Upon further testing, it was found that the classic OSD is even worse, using between 32-33GB of RAM after a 5 minute 4K sequential write test when using libc malloc. The good news is that it appears that crimson-osd is able to use tcmalloc for alienstore without significant modification. Better still, it drastically reduces memory usage. In the same test that resulted in 25GB RSS memory usage for crimson-osd with libc malloc, a tcmalloc linked version took around 9GB (with an 8GB osd_memory_target). Since we do not yet (afaik) expose classic OSD debugging in crimson it is tough to tell why we are still a little over, but it's clear that for alienstore we are going to need to use tcmalloc as we do in classic. Signed-off-by: Mark Nelson (cherry picked from commit 9f31ad7b7388996307808e26722260aed29d4ea1) --- src/perfglue/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/perfglue/CMakeLists.txt b/src/perfglue/CMakeLists.txt index 66e2f2bf96315..9ad73d576e4e5 100644 --- a/src/perfglue/CMakeLists.txt +++ b/src/perfglue/CMakeLists.txt @@ -1,4 +1,4 @@ -if(ALLOCATOR STREQUAL "tcmalloc" AND NOT WITH_SEASTAR) +if(ALLOCATOR STREQUAL "tcmalloc") add_library(heap_profiler STATIC heap_profiler.cc) target_link_libraries(heap_profiler