pgsql: Introduce pg_shmem_allocations_numa view

Tomas Vondra <tomas.vondra@postgresql.org>

From: Tomas Vondra <tomas.vondra@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Date: 2025-04-07T21:18:10Z
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

Introduce pg_shmem_allocations_numa view

Introduce new pg_shmem_alloctions_numa view with information about how
shared memory is distributed across NUMA nodes. For each shared memory
segment, the view returns one row for each NUMA node backing it, with
the total amount of memory allocated from that node.

The view may be relatively expensive, especially when executed for the
first time in a backend, as it has to touch all memory pages to get
reliable information about the NUMA node. This may also force allocation
of the shared memory.

Unlike pg_shmem_allocations, the view does not show anonymous shared
memory allocations. It also does not show memory allocated using the
dynamic shared memory infrastructure.

Author: Jakub Wartak <jakub.wartak@enterprisedb.com>
Reviewed-by: Andres Freund <andres@anarazel.de>
Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Reviewed-by: Tomas Vondra <tomas@vondra.me>
Discussion: https://postgr.es/m/CAKZiRmxh6KWo0aqRqvmcoaX2jUxZYb4kGp3N%3Dq1w%2BDiH-696Xw%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/8cc139bec34a2971b0682a04eb52ce7b3f5bb425

Modified Files
--------------
doc/src/sgml/system-views.sgml           |  95 ++++++++++++++++++
src/backend/catalog/system_views.sql     |   8 ++
src/backend/storage/ipc/shmem.c          | 159 +++++++++++++++++++++++++++++++
src/include/catalog/catversion.h         |   2 +-
src/include/catalog/pg_proc.dat          |   8 ++
src/test/regress/expected/numa.out       |  13 +++
src/test/regress/expected/numa_1.out     |   5 +
src/test/regress/expected/privileges.out |  16 +++-
src/test/regress/expected/rules.out      |   4 +
src/test/regress/parallel_schedule       |   2 +-
src/test/regress/sql/numa.sql            |  10 ++
src/test/regress/sql/privileges.sql      |   6 +-
12 files changed, 322 insertions(+), 6 deletions(-)