Re: pgsql: Introduce pg_shmem_allocations_numa view - Mailing list pgsql-hackers

From Christoph Berg
Subject Re: pgsql: Introduce pg_shmem_allocations_numa view
Date
Msg-id aFm5tmSFwhGX7mA7@msg.df7cb.de
Whole thread Raw
In response to Re: pgsql: Introduce pg_shmem_allocations_numa view  (Tomas Vondra <tomas@vondra.me>)
Responses Re: pgsql: Introduce pg_shmem_allocations_numa view
List pgsql-hackers
Re: Tomas Vondra
> Huh. So it's only the first call that does this?

The first call after a restart. Reconnecting is not enough.

> Can you maybe print the addresses passed to pg_numa_query_pages? I

The addresses look good:

Breakpoint 1, pg_numa_query_pages (pid=0, count=32768, pages=0xeb44d02c, status=0xeb42c02c) at
../src/port/pg_numa.c:49
49        return numa_move_pages(pid, count, pages, NULL, status, 0);
(gdb) p *pages
$1 = (void *) 0xebc33000
(gdb) p pages[1]
$2 = (void *) 0xebc34000
(gdb) p pages[2]
$3 = (void *) 0xebc35000


> wonder if there's some bug in how we fill that array. Not sure why would
> it happen only on 32-bit systems, though.

I found something, but that should be harmless:

--- a/contrib/pg_buffercache/pg_buffercache_pages.c
+++ b/contrib/pg_buffercache/pg_buffercache_pages.c
@@ -365,7 +365,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)

         /* 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);
+        os_page_status = palloc(sizeof(int) * os_page_count);

         /* Fill pointers for all the memory pages. */
         idx = 0;

Christoph



pgsql-hackers by date:

Previous
From: Melanie Plageman
Date:
Subject: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access)
Next
From: Tomas Vondra
Date:
Subject: Re: pgsql: Introduce pg_shmem_allocations_numa view