Re: 9.5: Better memory accounting, towards memory-bounded HashAgg

From: Andres Freund <andres(at)2ndquadrant(dot)com>
To: Jeff Davis <pgsql(at)j-davis(dot)com>
Cc: Simon Riggs <simon(at)2ndQuadrant(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Robert Haas <robertmhaas(at)gmail(dot)com>, Tomas Vondra <tv(at)fuzzy(dot)cz>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: 9.5: Better memory accounting, towards memory-bounded HashAgg
Date: 2014-11-17 17:04:55
Message-ID: 20141117170455.GK27042@awork2.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2014-11-16 23:31:51 -0800, Jeff Davis wrote:
> *** a/src/include/nodes/memnodes.h
> --- b/src/include/nodes/memnodes.h
> ***************
> *** 60,65 **** typedef struct MemoryContextData
> --- 60,66 ----
> MemoryContext nextchild; /* next child of same parent */
> char *name; /* context name (just for debugging) */
> bool isReset; /* T = no space alloced since last reset */
> + uint64 mem_allocated; /* track memory allocated for this context */
> #ifdef USE_ASSERT_CHECKING
> bool allowInCritSection; /* allow palloc in critical section */
> #endif

That's quite possibly one culprit for the slowdown. Right now one
AllocSetContext struct fits precisely into three cachelines. After your
change it doesn't anymore.

Consider not counting memory in bytes but blocks and adding it directly
after the NodeTag. That'd leave the size the same as right now.

Greetings,

Andres Freund

--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2014-11-17 17:06:26 Re: INSERT ... ON CONFLICT {UPDATE | IGNORE}
Previous Message Tomas Vondra 2014-11-17 16:50:22 Re: 9.5: Better memory accounting, towards memory-bounded HashAgg