Robert Haas wrote:
> On Mon, Aug 9, 2010 at 2:33 PM, Bruce Momjian <bruce@momjian.us> wrote:
> >> > Let me be more concrete. ?Suppose you are using threads, and you want to
> >> > increase your shared memory from 20MB to 30MB. ?How do you do that? ?If
> >> > you want it contiguous, you have to use realloc, which might move the
> >> > pointer. ?If you allocate another 10MB chunk, you then have shared
> >> > memory fragments, which is the same as adding another shared memory
> >> > segment.
> >>
> >> You probably wouldn't do either of those things. ?You'd just allocate
> >> small chunks here and there for whatever you need them for.
> >
> > Well, then we do that with shared memory then --- my point is that it is
> > the same problem with threads or processes.
>
> Well, I think your point is wrong, then. :-)
>
> It's not the same at all. If you have a bunch of threads in one
> address space, "shared" memory is really just process-local. You can
> grow the total amount of allocated space just by calling malloc().
> With our architecture, you can't.
You effectively have to add infrastructure to add/remove shared memory
segments to match memory requests. It is another step, but it is the
same behavior.
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ It's impossible for everything to be true. +