Re: Reducing the chunk header sizes on all memory context types
Robert Haas <robertmhaas@gmail.com>
On Tue, Aug 9, 2022 at 8:53 AM David Rowley <dgrowleyml@gmail.com> wrote: > I think the patch is now starting to take shape. I've added it to the > September commitfest [1]. This is extremely cool. The memory savings are really nice. And I also like this: # Additionally, this commit completely changes the rule that pointers must # be directly prefixed by the owning memory context and instead, we now # insist that they're directly prefixed by an 8-byte value where the least # significant 3-bits are set to a value to indicate which type of memory # context the pointer belongs to. Using those 3 bits as an index to a new # array which stores the methods for each memory context type, we're now # able to pass the pointer given to functions such as pfree and repalloc to # the function specific to that context implementation to allow them to # devise their own methods of finding the memory context which owns the # given allocated chunk of memory. That seems like a good system. This part of the commit message might need to be clarified: # We also add a restriction that block sizes for all 3 of the memory # allocators cannot be 1GB or larger. We would be unable to store the # number of bytes that the block is offset from the chunk stored beyond this #1GB boundary on any block that was larger than 1GB. Earlier in the commit message, you say that allocations of 1GB or more are stored in dedicated blocks. But here you say that blocks can't be more than 1GB. Those statements seem to contradict each other. I guess you mean block sizes for blocks that contain chunks, or something like that? -- Robert Haas EDB: http://www.enterprisedb.com
Commits
-
Harden memory context allocators against bogus chunk pointers.
- 0e87dfe46443 16.0 landed
-
Improve our ability to detect bogus pointers passed to pfree et al.
- 80ef92675823 16.0 landed
-
Remove MemoryContextContains().
- 9543eff5e015 16.0 landed
-
Remove uses of MemoryContextContains in nodeAgg.c and nodeWindowAgg.c.
- 42b746d4c982 16.0 landed
-
Temporarily make MemoryContextContains return false
- b76fb6c2a99e 16.0 landed
-
Make MemoryContextContains work correctly again
- 5265e91fd10d 16.0 landed
-
Make more effort to put a sentinel at the end of allocated memory
- 0e480385ec59 16.0 landed
-
Fix some possibly latent bugs in slab.c
- 258b0411b243 10.23 landed
- 1b1154396798 11.18 landed
- f249f1026f71 12.13 landed
- 210bece161b0 13.9 landed
- 6ec896109254 14.6 landed
- c4e861b7bba3 15.0 landed
-
Various cleanups of the new memory context header code
- 05f908423695 16.0 landed
-
Revert "Add missing padding from MemoryChunk struct"
- 5495796ad12a 16.0 landed
-
Use MAXALIGN() in calculations using sizeof(SlabBlock)
- d5ee4db0eaf6 16.0 landed
-
Add missing padding from MemoryChunk struct
- df0f4feef8de 16.0 landed
-
Improve performance of and reduce overheads of memory management
- c6e0fe1f2a08 16.0 landed