Changeset: 10d166b0195f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/10d166b0195f
Modified Files:
cmake/monetdb-defines.cmake
gdk/CMakeLists.txt
gdk/gdk_utils.c
monetdb5/mal/CMakeLists.txt
monetdb_config.h.in
tools/mserver/CMakeLists.txt
Branch: Mar2025
Log Message:
On SIGUSR1, print succinct information from malloc library.
We support jemalloc and glibc malloc (mallinfo2 function).
diffs (134 lines):
diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake
--- a/cmake/monetdb-defines.cmake
+++ b/cmake/monetdb-defines.cmake
@@ -84,6 +84,8 @@ function(monetdb_configure_defines)
check_symbol_exists("strerror_r" "string.h" HAVE_STRERROR_R)
check_function_exists("lockf" HAVE_LOCKF)
check_symbol_exists("madvise" "sys/mman.h" HAVE_MADVISE)
+ check_function_exists("malloc_info" HAVE_MALLOC_INFO)
+ check_function_exists("mallinfo2" HAVE_MALLINFO2)
check_symbol_exists("mremap" "sys/mman.h" HAVE_MREMAP)
check_function_exists("nanosleep" HAVE_NANOSLEEP)
check_function_exists("nl_langinfo" HAVE_NL_LANGINFO)
@@ -145,6 +147,16 @@ macro(monetdb_macro_variables)
set(HAVE_RTREE ${RTREE_FOUND})
set(HAVE_OPENSSL ${OPENSSL_FOUND})
+ if(MALLOC_FOUND)
+ if(${WITH_MALLOC} STREQUAL "jemalloc")
+ set(WITH_JEMALLOC 1)
+ elseif(${WITH_MALLOC} STREQUAL "mimalloc")
+ set(WITH_MIMALLOC 1)
+ elseif(${WITH_MALLOC} STREQUAL "tcmalloc")
+ set(WITH_TCMALLOC 1)
+ endif()
+ endif()
+
if(PY3INTEGRATION)
set(HAVE_LIBPY3 "${Python3_NumPy_FOUND}")
set(PY3VER "${Python3_VERSION_MINOR}")
diff --git a/gdk/CMakeLists.txt b/gdk/CMakeLists.txt
--- a/gdk/CMakeLists.txt
+++ b/gdk/CMakeLists.txt
@@ -118,7 +118,8 @@ target_link_libraries(bat
$<$<PLATFORM_ID:Windows>:ws2_32>
$<$<BOOL:${KVM_FOUND}>:KVM::KVM>
${CMAKE_DL_LIBS}
- Threads::Threads)
+ Threads::Threads
+ $<$<BOOL:${MALLOC_FOUND}>:Malloc::Malloc>)
# This definition is also used in Linux
target_compile_definitions(bat
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -2025,6 +2025,22 @@ GDKprintinfo(void)
printf("SIGUSR1 info start\n");
printf("Virtual memory allocated: %zu, of which %zu with malloc\n",
vmallocated + allocated, allocated);
+#ifdef WITH_MALLOC
+#ifdef WITH_JEMALLOC
+ size_t jeallocated = 0, jeactive = 0, jemapped = 0, jeresident = 0,
jeretained = 0;
+ if (mallctl("stats.allocated", &jeallocated,
&(size_t){sizeof(jeallocated)}, NULL, 0) == 0 &&
+ mallctl("stats.active", &jeactive, &(size_t){sizeof(jeactive)},
NULL, 0) == 0 &&
+ mallctl("stats.mapped", &jemapped, &(size_t){sizeof(jemapped)},
NULL, 0) == 0 &&
+ mallctl("stats.resident", &jeresident,
&(size_t){sizeof(jeresident)}, NULL, 0) == 0 &&
+ mallctl("stats.retained", &jeretained,
&(size_t){sizeof(jeretained)}, NULL, 0) == 0)
+ printf("JEmalloc: allocated %zu, active %zu, mapped %zu,
resident %zu, retained %zu\n", jeallocated, jeactive, jemapped, jeresident,
jeretained);
+#endif
+#elif defined(HAVE_MALLINFO2)
+ struct mallinfo2 mi = mallinfo2();
+ printf("mallinfo: arena %zu, ordblks %zu, smblks %zu, hblks %zu, hblkhd
%zu, fsmblks %zu, uordblks %zu, fordblks %zu, keepcost %zu\n",
+ mi.arena, mi.ordblks, mi.smblks, mi.hblks, mi.hblkhd,
mi.fsmblks, mi.uordblks, mi.fordblks, mi.keepcost);
+ printf(" total allocated (arena+hblkhd): %zu\n", mi.arena +
mi.hblkhd);
+#endif
printf("gdk_vm_maxsize: %zu, gdk_mem_maxsize: %zu\n",
GDK_vm_maxsize, GDK_mem_maxsize);
printf("gdk_mmap_minsize_persistent %zu, gdk_mmap_minsize_transient
%zu\n",
diff --git a/monetdb5/mal/CMakeLists.txt b/monetdb5/mal/CMakeLists.txt
--- a/monetdb5/mal/CMakeLists.txt
+++ b/monetdb5/mal/CMakeLists.txt
@@ -82,7 +82,8 @@ target_link_libraries(mal
mutils
stream
mapi
- bat)
+ bat
+ $<$<BOOL:${MALLOC_FOUND}>:Malloc::Malloc>)
set_target_properties(mal
PROPERTIES
diff --git a/monetdb_config.h.in b/monetdb_config.h.in
--- a/monetdb_config.h.in
+++ b/monetdb_config.h.in
@@ -141,6 +141,8 @@
#cmakedefine HAVE_STRERROR_R 1
#cmakedefine HAVE_LOCKF 1
#cmakedefine HAVE_MADVISE 1
+#cmakedefine HAVE_MALLINFO2 1
+#cmakedefine HAVE_MALLOC_INFO 1
#cmakedefine HAVE_MREMAP 1
#cmakedefine HAVE_NANOSLEEP 1
#cmakedefine HAVE_NL_LANGINFO 1
@@ -192,6 +194,11 @@
#cmakedefine HAVE_LIBPY3 1
#cmakedefine HAVE_OPENSSL 1
+#cmakedefine WITH_JEMALLOC 1
+#cmakedefine WITH_MIMALLOC 1
+#cmakedefine WITH_TCMALLOC 1
+#cmakedefine WITH_MALLOC "@WITH_MALLOC@"
+
// #cmakedefine SOCKET_LIBRARIES
#cmakedefine HAVE_GETADDRINFO 1
#cmakedefine HAVE_CUDF 1
@@ -474,4 +481,15 @@ gmtime_r(const time_t *restrict timep, s
__attribute__((__constructor__)) static void f(void)
#endif
+#ifdef WITH_MALLOC
+#ifdef WITH_JEMALLOC
+#include <jemalloc/jemalloc.h>
+#endif
+#ifdef WITH_MIMALLOC
+#include <mimalloc.h>
+#endif
+#elif defined(HAVE_MALLOC_INFO)
+#include <malloc.h>
+#endif
+
#endif /* MT_SEEN_MONETDB_CONFIG_H */
diff --git a/tools/mserver/CMakeLists.txt b/tools/mserver/CMakeLists.txt
--- a/tools/mserver/CMakeLists.txt
+++ b/tools/mserver/CMakeLists.txt
@@ -54,7 +54,8 @@ target_link_libraries(mserver5
$<$<PLATFORM_ID:Windows>:${GETOPT_LIB}>
$<$<BOOL:${PCRE_FOUND}>:PCRE::PCRE>
$<$<BOOL:${MALLOC_FOUND}>:Malloc::Malloc>
- Threads::Threads)
+ Threads::Threads
+ $<$<BOOL:${MALLOC_FOUND}>:Malloc::Malloc>)
if(TESTING)
add_executable(shutdowntest)
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]