On 4/9/25 14:07, Tomas Vondra wrote: > ... > > OK, here are two patches, where 0001 adds the missingdeps check to the > Debian meson build. It just adds that to the build script. > > 0002 leaves the NUMA stuff in src/port (i.e. it's no longer moved to > src/backend/port). It still needs to include c.h because of PGDLLIMPORT, > but I think that's fine. >
Forgot to attach the patches ... -- Tomas Vondra
From a5d2080e8eb966698ced88364fc7beebea8a226a Mon Sep 17 00:00:00 2001 From: Tomas Vondra <to...@vondra.me> Date: Wed, 9 Apr 2025 13:29:31 +0200 Subject: [PATCH 1/2] adjust ci --- .cirrus.tasks.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml index 98f3455eb72..94ded37e29a 100644 --- a/.cirrus.tasks.yml +++ b/.cirrus.tasks.yml @@ -528,8 +528,17 @@ task: build-32 EOF - build_script: su postgres -c 'ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET}' - build_32_script: su postgres -c 'ninja -C build-32 -j${BUILD_JOBS} ${MBUILD_TARGET}' + build_script: | + su postgres <<-EOF + ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET} + ninja -C build -t missingdeps + EOF + + build_32_script: | + su postgres <<-EOF + ninja -C build-32 -j${BUILD_JOBS} ${MBUILD_TARGET} + ninja -C build -t missingdeps + EOF upload_caches: ccache -- 2.49.0
From 60b71e953d80150e6b596937a1f8fcd1af510798 Mon Sep 17 00:00:00 2001 From: Tomas Vondra <to...@vondra.me> Date: Tue, 8 Apr 2025 23:31:29 +0200 Subject: [PATCH 2/2] fixup --- contrib/pg_buffercache/pg_buffercache_pages.c | 2 +- src/backend/storage/ipc/shmem.c | 33 +++++++++++++++- src/include/port/pg_numa.h | 3 -- src/include/storage/shmem.h | 2 + src/port/pg_numa.c | 38 +------------------ 5 files changed, 36 insertions(+), 42 deletions(-) diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c b/contrib/pg_buffercache/pg_buffercache_pages.c index c9ceba604b1..e1701bd56ef 100644 --- a/contrib/pg_buffercache/pg_buffercache_pages.c +++ b/contrib/pg_buffercache/pg_buffercache_pages.c @@ -343,7 +343,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS) * This information is needed before calling move_pages() for NUMA * node id inquiry. */ - os_page_size = pg_numa_get_pagesize(); + os_page_size = pg_get_shmem_pagesize(); /* * The pages and block size is expected to be 2^k, so one divides the diff --git a/src/backend/storage/ipc/shmem.c b/src/backend/storage/ipc/shmem.c index e10b380e5c7..0903eb50f54 100644 --- a/src/backend/storage/ipc/shmem.c +++ b/src/backend/storage/ipc/shmem.c @@ -93,6 +93,8 @@ static HTAB *ShmemIndex = NULL; /* primary index hashtable for shmem */ /* To get reliable results for NUMA inquiry we need to "touch pages" once */ static bool firstNumaTouch = true; +Datum pg_numa_available(PG_FUNCTION_ARGS); + /* * InitShmemAccess() --- set up basic pointers to shared memory. */ @@ -615,7 +617,7 @@ pg_get_shmem_allocations_numa(PG_FUNCTION_ARGS) * This information is needed before calling move_pages() for NUMA memory * node inquiry. */ - os_page_size = pg_numa_get_pagesize(); + os_page_size = pg_get_shmem_pagesize(); /* * Allocate memory for page pointers and status based on total shared @@ -727,3 +729,32 @@ pg_get_shmem_allocations_numa(PG_FUNCTION_ARGS) return (Datum) 0; } + +/* This should be used only after the server is started */ +Size +pg_get_shmem_pagesize(void) +{ + Size os_page_size; +#ifdef WIN32 + SYSTEM_INFO sysinfo; + + GetSystemInfo(&sysinfo); + os_page_size = sysinfo.dwPageSize; +#else + os_page_size = sysconf(_SC_PAGESIZE); +#endif + + Assert(IsUnderPostmaster); + Assert(huge_pages_status != HUGE_PAGES_UNKNOWN); + + if (huge_pages_status == HUGE_PAGES_ON) + GetHugePageSize(&os_page_size, NULL); + + return os_page_size; +} + +Datum +pg_numa_available(PG_FUNCTION_ARGS) +{ + PG_RETURN_BOOL(pg_numa_init() != -1); +} diff --git a/src/include/port/pg_numa.h b/src/include/port/pg_numa.h index 7e990d9f776..40f1d324dcf 100644 --- a/src/include/port/pg_numa.h +++ b/src/include/port/pg_numa.h @@ -14,12 +14,9 @@ #ifndef PG_NUMA_H #define PG_NUMA_H -#include "fmgr.h" - extern PGDLLIMPORT int pg_numa_init(void); extern PGDLLIMPORT int pg_numa_query_pages(int pid, unsigned long count, void **pages, int *status); extern PGDLLIMPORT int pg_numa_get_max_node(void); -extern PGDLLIMPORT Size pg_numa_get_pagesize(void); #ifdef USE_LIBNUMA diff --git a/src/include/storage/shmem.h b/src/include/storage/shmem.h index 904a336b851..c1f668ded95 100644 --- a/src/include/storage/shmem.h +++ b/src/include/storage/shmem.h @@ -41,6 +41,8 @@ extern void *ShmemInitStruct(const char *name, Size size, bool *foundPtr); extern Size add_size(Size s1, Size s2); extern Size mul_size(Size s1, Size s2); +extern PGDLLIMPORT Size pg_get_shmem_pagesize(void); + /* ipci.c */ extern void RequestAddinShmemSpace(Size size); diff --git a/src/port/pg_numa.c b/src/port/pg_numa.c index 5e2523cf798..63dff799436 100644 --- a/src/port/pg_numa.c +++ b/src/port/pg_numa.c @@ -13,17 +13,14 @@ *------------------------------------------------------------------------- */ -#include "postgres.h" +#include "c.h" #include <unistd.h> #ifdef WIN32 #include <windows.h> #endif -#include "fmgr.h" -#include "miscadmin.h" #include "port/pg_numa.h" -#include "storage/pg_shmem.h" /* * At this point we provide support only for Linux thanks to libnuma, but in @@ -36,8 +33,6 @@ #include <numa.h> #include <numaif.h> -Datum pg_numa_available(PG_FUNCTION_ARGS); - /* libnuma requires initialization as per numa(3) on Linux */ int pg_numa_init(void) @@ -66,8 +61,6 @@ pg_numa_get_max_node(void) #else -Datum pg_numa_available(PG_FUNCTION_ARGS); - /* Empty wrappers */ int pg_numa_init(void) @@ -89,32 +82,3 @@ pg_numa_get_max_node(void) } #endif - -Datum -pg_numa_available(PG_FUNCTION_ARGS) -{ - PG_RETURN_BOOL(pg_numa_init() != -1); -} - -/* This should be used only after the server is started */ -Size -pg_numa_get_pagesize(void) -{ - Size os_page_size; -#ifdef WIN32 - SYSTEM_INFO sysinfo; - - GetSystemInfo(&sysinfo); - os_page_size = sysinfo.dwPageSize; -#else - os_page_size = sysconf(_SC_PAGESIZE); -#endif - - Assert(IsUnderPostmaster); - Assert(huge_pages_status != HUGE_PAGES_UNKNOWN); - - if (huge_pages_status == HUGE_PAGES_ON) - GetHugePageSize(&os_page_size, NULL); - - return os_page_size; -} -- 2.49.0