Re: Draft for basic NUMA observability - Mailing list pgsql-hackers

From Andres Freund
Subject Re: Draft for basic NUMA observability
Date
Msg-id pew2r5qbhhobhnvmo3fln4cu4x52q7jnmzvlb2hvrtzrauxome@slcpmivdz2nq
Whole thread Raw
In response to Re: Draft for basic NUMA observability  (Tomas Vondra <tomas@vondra.me>)
Responses Re: Draft for basic NUMA observability
List pgsql-hackers
Hi,

On 2025-04-09 16:33:14 +0200, Tomas Vondra wrote:
> From e1f093d091610d70fba72b2848f25ff44899ea8e Mon Sep 17 00:00:00 2001
> From: Tomas Vondra <tomas@vondra.me>
> Date: Tue, 8 Apr 2025 23:31:29 +0200
> Subject: [PATCH 1/2] Cleanup of pg_numa.c
> 
> This moves/renames some of the functions defined in pg_numa.c:
> 
> * pg_numa_get_pagesize() is renamed to pg_get_shmem_pagesize(), and
>   moved to src/backend/storage/ipc/shmem.c. The new name better reflects
>   that the page size is not related to NUMA, and it's specifically about
>   the page size used for the main shared memory segment.
> 
> * move pg_numa_available() to src/backend/storage/ipc/shmem.c, i.e. into
>   the backend (which more appropriate for functions callable from SQL).
>   While at it, improve the comment to explain what page size it returns.
> 
> * remove unnecessary includes from src/port/pg_numa.c, adding
>   unnecessary dependencies (src/port should be suitable for frontent).
>   These were leftovers from earlier patch versions.

I don't think the include in src/port/pg_numa.c were leftover? Just the one in
pg_numa.h, right?

I'd mention that the includes of postgres.h/fmgr.h is what caused missing
build-time dependencies and via that failures on buildfarm member dogfish.


> 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

I think this may not be needed anymore, that was just there for
GetSystemInfo(), right?  Conversely, I suspect it may now be needed in the new
location of pg_numa_get_pagesize()?


> From 201f8be652e9344dfa247b035a66e52025afa149 Mon Sep 17 00:00:00 2001
> From: Tomas Vondra <tomas@vondra.me>
> Date: Wed, 9 Apr 2025 13:29:31 +0200
> Subject: [PATCH 2/2] ci: Check for missing dependencies in meson build
> 
> Extends the meson build on Debian to also check for missing dependencies
> by executing
> 
>     ninja -t missingdeps
> 
> right after the build. This highlights unindended dependencies.
> 
> Reviewed-by: Andres Freund <andres@anarazel.de>
> https://postgr.es/m/CALdSSPi5fj0a7UG7Fmw2cUD1uWuckU_e8dJ+6x-bJEokcSXzqA@mail.gmail.com

FWIW, while I'd prefer it as a meson.build visible test(), I think it's ok to
have it just in CI until we have that.  I would however also add it to the
windows job, as that's the most "different" type of build / source of missed
dependencies that wouldn't show up on our development systems.

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Build macOS shared modules as dylib rather than bundle
Next
From: "Maksim.Melnikov"
Date:
Subject: Re: sync_standbys_defined read/write race on startup