From: Ondřej Surý Date: Fri, 20 Sep 2024 07:10:20 +0000 (+0200) Subject: Use libuv functions to get memory available to BIND 9 X-Git-Tag: v9.21.2~18^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06e5ada4beec8c0a81569415ada4164317d307d7;p=thirdparty%2Fbind9.git Use libuv functions to get memory available to BIND 9 This change uses uv_get_total_memory() to get the memory available to BIND 9 with possible modification by uv_get_constrained_memory() if the libuv version is recent enough to honour constraints created by f.e. cgroups. --- diff --git a/lib/isc/meminfo.c b/lib/isc/meminfo.c index 570154ce718..5480a74b114 100644 --- a/lib/isc/meminfo.c +++ b/lib/isc/meminfo.c @@ -12,42 +12,18 @@ */ #include -#include -#include -#include - -#if HAVE_SYS_SYSCTL_H && !defined(__linux__) -#include -#endif #include +#include uint64_t isc_meminfo_totalphys(void) { -#if defined(CTL_HW) && (defined(HW_PHYSMEM64) || defined(HW_MEMSIZE)) - int mib[2]; - mib[0] = CTL_HW; -#if defined(HW_MEMSIZE) - mib[1] = HW_MEMSIZE; -#elif defined(HW_PHYSMEM64) - mib[1] = HW_PHYSMEM64; -#endif /* if defined(HW_MEMSIZE) */ - uint64_t size = 0; - size_t len = sizeof(size); - if (sysctl(mib, 2, &size, &len, NULL, 0) == 0) { - return (size); - } -#endif /* if defined(CTL_HW) && (defined(HW_PHYSMEM64) || defined(HW_MEMSIZE)) \ - * */ -#if defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE) - long pages = sysconf(_SC_PHYS_PAGES); - long pagesize = sysconf(_SC_PAGESIZE); - - if (pages < 0 || pagesize < 0) { - return (0); + uint64_t tmem = uv_get_total_memory(); +#if UV_VERSION_HEX >= UV_VERSION(1, 29, 0) + uint64_t cmem = uv_get_constrained_memory(); + if (cmem > 0 && cmem < tmem) { + return (cmem); } - - return ((uint64_t)pages * pagesize); -#endif /* if defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE) */ - return (0); +#endif /* UV_VERSION_HEX >= UV_VERSION(1, 29, 0) */ + return (tmem); }