Re: Changing shared_buffers without restart
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Dmitry Dolgov <9erthalion6@gmail.com>
Cc: pgsql-hackers@postgresql.org
Date: 2024-11-27T15:20:27Z
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 →
-
Remove PG_MMAP_FLAGS from mem.h
- c100340729b6 19 (unreleased) landed
-
Improve runtime and output of tests for replication slots checkpointing.
- 4464fddf7b50 18.0 cited
-
Revert support for improved tracking of nested queries
- f85f6ab051b7 18.0 cited
-
Use exported symbols list on macOS for loadable modules as well
- 3feff3916ee1 18.0 cited
-
Add support for basic NUMA awareness
- 65c298f61fc7 18.0 cited
-
Avoid unnecessary copying of a string in pg_restore.c
- 5e1915439085 18.0 cited
-
aio: Infrastructure for io_method=worker
- 55b454d0e140 18.0 cited
-
Improve InitShmemAccess() prototype
- 2a7b2d97171d 18.0 landed
On Tue, Nov 26, 2024 at 2:18 PM Dmitry Dolgov <9erthalion6@gmail.com> wrote: > I haven't had a chance to experiment with that on Windows, but I'm > hoping that in the worst case fallback to a single mapping via proposed > infrastructure (and the consequent limitations) would be acceptable. Yeah, if you can still fall back to a single mapping, I think that's OK. It would be nicer if it could work on every platform in the same way, but half a loaf is better than none. > > code, but I'm not sure exactly which points are safe. If we have no > > code anywhere that assumes the address of an unpinned buffer can't > > change before we pin it, then I guess the check for pins is the only > > thing we need, but I don't know that to be the case. > > Probably I'm missing something here. What scenario do you have in mind, > when the address of a buffer is changing? I was assuming that if you expand the mapping for shared_buffers, you can't count on the new mapping being at the same address as the old mapping. If you can, that makes things simpler, but what if the OS has mapped something else just afterward, in the address space that you're hoping to use when you expand the mapping? > > It looks to me like the patch doesn't expand the buffer mapping table, > > which seems essential. But maybe I missed that. > > Do you mean the "Shared Buffer Lookup Table"? It does expand it, but > under somewhat unfitting name STRATEGY_SHMEM_SLOT. But now that I look > at the code, I see a few issues around that -- so I would have to > improve it anyway, thanks for pointing that out. Yeah, we -- or at least I -- usually call that the buffer mapping table. There are identifiers like BufMappingPartitionLock, for example. I'm slightly surprised that the ShmemInitHash() call uses something else as the identifier, but I guess that's how it is. -- Robert Haas EDB: http://www.enterprisedb.com