Hi,

On Fri, Apr 04, 2025 at 09:25:57PM +0200, Tomas Vondra wrote:
> OK,
> 
> here's v25 after going through the patches once more, fixing the issues
> mentioned by Bertrand, etc.

Thanks!

> I think 0001 and 0002 are fine,

Agree, I just have some cosmetic nits comments: please find them in
nit-bertrand-0002.txt attached.

> I have a
> couple minor questions about 0003.
> 
> - I was wondering if maybe we should have some "global ID" of memory
> page, so that with large memory pages it's indicated the buffers are on
> the same memory page. Right now each buffer starts page_num from 0, but
> it should not be very hard to have a global counter. Opinions?

I think that's a good idea. We could then add a new column (say os_page_id) that
would help identify which buffers are sharing the same "physical" page.

> 0003
> ----
> - Minor formatting tweaks, comment improvements.
> - Isn't this comment a bit confusing / misleading?
> 
>     /* Get number of OS aligned pages */
> 
> AFAICS the point is to adjust the allocated_size to be a multiple of
> os-page_size, to get "all" memory pages the segment uses. But that's not
> what I understand by "aligned page" (which is about there the page is
> expected to start).

Agree, what about? 

"
Align the start of the allocated size to an OS page size boundary and then get
the total number of OS pages used by this segment"
"

> - There's a comment at the end which talks about "ignored segments".
> IMHO that type of information should be in the function comment,
> but I'm
> also not quite sure I understand what "output shared memory" is ...

I think that comes from the comments that are already in
pg_get_shmem_allocations().

I think that those are located here and worded that way to ease to understand 
what is not in with pg_get_shmem_allocations_numa() if one look at both
functions. That said, I'm +1 to put this kind of comments in the function 
comment.

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
commit 17942e95d99d288658b6530e49795c28a93886d2
Author: Bertrand Drouvot <bertranddrouvot...@gmail.com>
Date:   Sat Apr 5 08:56:03 2025 +0000

    Nit

diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c 
b/contrib/pg_buffercache/pg_buffercache_pages.c
index 65ade9d8135..0b96476c319 100644
--- a/contrib/pg_buffercache/pg_buffercache_pages.c
+++ b/contrib/pg_buffercache/pg_buffercache_pages.c
@@ -364,7 +364,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
                         buffers_per_page, pages_per_buffer);
 
 
-               /* initialize the multi-call context, load entries about 
buffers */
+               /* Initialize the multi-call context, load entries about 
buffers */
 
                funcctx = SRF_FIRSTCALL_INIT();
 
@@ -412,7 +412,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
                MemoryContextSwitchTo(oldcontext);
 
 
-               /* used to determine the NUMA node for all OS pages at once */
+               /* Used to determine the NUMA node for all OS pages at once */
                os_page_ptrs = palloc0(sizeof(void *) * os_page_count);
                os_page_status = palloc(sizeof(uint64) * os_page_count);
 
@@ -484,10 +484,10 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
 
                }
 
-               /* we should get exactly the expected number of entrires */
+               /* We should get exactly the expected number of entrires */
                Assert(idx == os_page_count);
 
-               /* query NUMA status for all the pointers */
+               /* Query NUMA status for all the pointers */
                if (pg_numa_query_pages(0, os_page_count, os_page_ptrs, 
os_page_status) == -1)
                        elog(ERROR, "failed NUMA pages inquiry: %m");
 
@@ -500,7 +500,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
                        fctx->record[i].numa_node = os_page_status[i];
                }
 
-               /* remember this backend touched the pages */
+               /* Remember this backend touched the pages */
                firstNumaTouch = false;
        }
 

Reply via email to