Re: Question about lazy_space_alloc() / linux over-commit

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Andres Freund <andres(at)2ndquadrant(dot)com>, Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Question about lazy_space_alloc() / linux over-commit
Date: 2015-03-09 17:28:32
Message-ID: 20150309172832.GP3291@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Robert Haas wrote:
> On Sat, Mar 7, 2015 at 5:49 PM, Andres Freund <andres(at)2ndquadrant(dot)com> wrote:
> > On 2015-03-05 15:28:12 -0600, Jim Nasby wrote:
> >> I was thinking the simpler route of just repalloc'ing... the memcpy would
> >> suck, but much less so than the extra index pass. 64M gets us 11M tuples,
> >> which probably isn't very common.
> >
> > That has the chance of considerably increasing the peak memory usage
> > though, as you obviously need both the old and new allocation during the
> > repalloc().
> >
> > And in contrast to the unused memory at the tail of the array, which
> > will usually not be actually allocated by the OS at all, this is memory
> > that's actually read/written respectively.
>
> Yeah, I'm not sure why everybody wants to repalloc() that instead of
> making several separate allocations as needed. That would avoid
> increasing peak memory usage, and would avoid any risk of needing to
> copy the whole array. Also, you could grow in smaller chunks, like
> 64MB at a time instead of 1GB or more at a time. Doubling an
> allocation that's already 1GB or more gets big in a hurry.

Yeah, a chunk list rather than a single chunk seemed a good idea to me
too.

Also, I think the idea of starting with an allocation assuming some
small number of dead tuples per page made sense -- and by the time that
space has run out, you have a better estimate of actual density of dead
tuples, so you can do the second allocation based on that new estimate
(but perhaps clamp it at say 1 GB, just in case you just scanned a
portion of the table with an unusually high percentage of dead tuples.)

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Greg Stark 2015-03-09 17:33:23 Re: Rethinking the parameter access hooks for plpgsql's benefit
Previous Message Andres Freund 2015-03-09 17:21:43 Re: Calling for a replacement committer for GROUPING SETS