On Tuesday, April 26, 2011 02:22:34 AM Tom Lane wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
> > On Mon, Apr 25, 2011 at 5:45 PM, Andres Freund <andres@anarazel.de> wrote:
> >> [ lots of awesome test results ]
> >
> > Very interesting work. I think it's interesting that there is so much
> > allocation happening inside MessageContext; I barely knew that
> > existed, let alone that it was a hotspot for memory allocation.
>
> The reason it shows as a hotspot is that parsing and planning happen in
> that context for the simple-Query code path. You'd get different
> answers if you were using extended-query protocol, or running prepared
> statements, or doing the bulk of your work in plpgsql, etc etc.
>
> It would be interesting if Andres could dig down another level or so in
> the call stack to see where the list creations etc are called from, but
> I'll bet quite a bit that what we're looking at is mostly parse/plan
> activity. (The high showing of bitmapset activity is a dead tipoff for
> planner, in particular, since that datatype is hardly used at all
> elsewhere.)
Currently thats just output via
#define MemoryContextAlloc(context, size) \TraceMemoryContextAlloc(context, size, __FILE__, __FUNCTION__, __LINE__, \
__builtin_constant_p(size))
which in turn then calls the ordinary MemoryContextAlloc (yes, ugly I know).
But I guess it shouldn't be a problem to get more information...
Andres