Yura Sokolov <y.soko...@postgrespro.ru> writes: > В Вт, 24/05/2022 в 17:39 -0700, Andres Freund пишет: >> A variation on your patch would be to only store the offset to the block >> header - that should always fit into 32bit (huge allocations being their own >> block, which is why this wouldn't work for storing an offset to the >> context).
> I'm +1 for this. Given David's results in the preceding message, I don't think I am. A scheme like this would add more arithmetic and at least one more indirection to GetMemoryChunkContext(), and we already know that adding even a test-and-branch there has measurable cost. (I wonder if using unlikely() on the test would help? But it's not unlikely in a generation-context-heavy use case.) There would also be a good deal of complication and ensuing slowdown created by the need for oversize chunks to be a completely different kind of animal with a different header. I'm also not very happy about this: > And with this change every memory context kind can have same header: IMO that's a bug not a feature. It puts significant constraints on how context types can be designed. regards, tom lane