pgsql: Improve memory management code to avoid inefficient behavior when

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Improve memory management code to avoid inefficient behavior when
Date: 2006-12-27 22:30:48
Message-ID: 20061227223048.E47E29FA2FD@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
Improve memory management code to avoid inefficient behavior when a context
has a small maxBlockSize: the maximum request size that we will treat as a
"chunk" needs to be limited to fit in maxBlockSize. Otherwise we will round
up the request size to the next power of 2, wasting space, which is a bit
pointless if we aren't going to make the blocks big enough to fit additional
stuff in them. The example motivating this is local buffer management, which
makes repeated allocations of 8K (one BLCKSZ buffer) in TopMemoryContext,
which has maxBlockSize = 8K because for the most part allocations there are
small. This leads to each local buffer actually eating 16K of space, which
adds up when there are thousands of them. I intend to change localbuf.c to
aggregate its requests, which will prevent this particular misbehavior, but
it seems likely that similar scenarios could arise elsewhere, so fixing the
core problem seems wise as well.

Modified Files:
--------------
pgsql/src/backend/utils/mmgr:
aset.c (r1.69 -> r1.70)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/mmgr/aset.c.diff?r1=1.69&r2=1.70)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2006-12-27 22:31:54 pgsql: Modify local buffer management to request memory for local
Previous Message User Okbob 2006-12-27 20:41:34 plpsm - plpgpsm: for statement support (compileable)