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

From Tomas Vondra
Subject Re: Draft for basic NUMA observability
Date
Msg-id 317009f2-7b8c-4148-a685-777afafd62b2@vondra.me
Whole thread Raw
In response to Re: Draft for basic NUMA observability  (Andres Freund <andres@anarazel.de>)
Responses Re: Draft for basic NUMA observability
List pgsql-hackers
On 4/9/25 17:14, Andres Freund wrote:
> 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?
> 

Right, that wasn't quite accurate. The miscadmin.h and pg_shmem.h are
unnecessary thanks to moving stuff to shmem.c.

> 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.
> 

Not really, I also need to include "c.h" instead of "postgres.h" (which
is also causing the same failure).

> 
>> 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()?
> 

Good question. But if it's needed there, shouldn't it have failed on CI?

> 
>> 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.
> 

We can add it as a meson.build test, sure. I was going for the CI first,
because then it fires no matter what build I do locally (I'm kinda still
used to autotools).

If you agree adding it to build_script is the right way to do that, I'll
do the same thing for the windows job.


regards

-- 
Tomas Vondra




pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Add missing PGDLLIMPORT markings
Next
From: Andres Freund
Date:
Subject: Re: Draft for basic NUMA observability