Re: failed NUMA pages inquiry status: Operation not permitted

Tomas Vondra <tomas@vondra.me>

From: Tomas Vondra <tomas@vondra.me>
To: Christoph Berg <myon@debian.org>, Tomas Vondra <tomas.vondra@postgresql.org>, Jakub Wartak <jakub.wartak@enterprisedb.com>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2025-10-16T14:27:47Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Handle EPERM in pg_numa_init

  2. Add CHECK_FOR_INTERRUPTS into pg_numa_query_pages

  3. Silence valgrind about pg_numa_touch_mem_if_required

  4. Limit the size of numa_move_pages requests

  5. Introduce pg_shmem_allocations_numa view


On 10/16/25 13:38, Christoph Berg wrote:
>> src/test/regress/expected/numa.out       |  13 +++
>> src/test/regress/expected/numa_1.out     |   5 +
> 
> numa_1.out is catching this error:
> 
> ERROR:  libnuma initialization failed or NUMA is not supported on this platform
> 
> This is what I'm getting when running PG18 in docker on Debian trixie
> (libnuma 2.0.19).
> 
> However, on older distributions, the error is different:
> 
> postgres =# select * from pg_shmem_allocations_numa;
> ERROR:  XX000: failed NUMA pages inquiry status: Operation not permitted
> LOCATION:  pg_get_shmem_allocations_numa, shmem.c:691
> 
> This makes the numa regression tests fail in Docker on Debian bookworm
> (libnuma 2.0.16) and older and all of the Ubuntu LTS releases.
> 

It's probably more about the kernel version. What kernels are used by
these systems?

> The attached patch makes it accept these errors, but perhaps it would
> be better to detect it in pg_numa_available().
> 

Not sure how would that work. It seems this is some sort of permission
check in numa_move_pages, that's not what pg_numa_available does. Also,
it may depending on the page queried (e.g. whether it's exclusive or
shared by multiple processes).

thanks

-- 
Tomas Vondra