I didn't propose too different solution. There is only one difference - sharing DSM for smaller data. It is similar to using usual shared memory.
Does this mean implementing some sort of allocator on top of the shared memory segment? If so, how are you going to prevent fragmentation?
yes, simple memory allocator is necessary in this case. But it should be really simple - you can allocate only fixed size blocks - 10KB, 100KB and 1MB from separate buffers. So the fragmentation is not possible.
Maybe we're talking about completely different ideas, but I don't see how fixing the block helps to fight fragmentation, in particular. Can you sketch a simple example? E.g. 400 backends share the common segment and all of them want to publish a plan of ~1kb, for example. Now what?