Re: vacuumdb ERROR: out of memory

From: Magnus Hagander <magnus(at)hagander(dot)net>
To: David Kerr <dmk(at)mr-paradox(dot)net>
Cc: Guillaume Lelarge <guillaume(at)lelarge(dot)info>, John R Pierce <pierce(at)hogranch(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: vacuumdb ERROR: out of memory
Date: 2010-02-09 11:41:40
Message-ID: 9837222c1002090341ia37f1cq487fd4c7dd2e8267@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Tue, Feb 9, 2010 at 09:53, David Kerr <dmk(at)mr-paradox(dot)net> wrote:
> Guillaume Lelarge wrote:
>>
>> Le 09/02/2010 09:35, David Kerr a écrit :
>>>
>>> Guillaume Lelarge wrote:
>>>>
>>>> Le 09/02/2010 05:49, John R Pierce a écrit :
>>>>>
>>>>> David Kerr wrote:
>>>>>>>>
>>>>>>>> maintenance_work_mem = 1GB
>>>>>>>
>>>>>>> So evidently, when it tries to actually allocate 1GB, it can't do it.
>>>>>>> Ergo, that setting is too high for your machine.
>>>>>>> ...
>>>>>>
>>>>>> seems like i've got 2GB free.
>>>>>
>>>>> is this a 64bit postgres build?
>>>>>
>>>>> if not, you're probably running out of virtual address space in the 32
>>>>> bit user space, which is limited to like 2gb.
>>>>>
>>>> IIRC, the virtual address space in 32bit platforms is 4GB.

IIRC, on Linux that will be a max of 3Gb available to userspace
processes. Certainly not 4Gb - but it could be 2.

>>> it is a 32bit box.
>>>
>>>>> the other possibility, and here I'm not sure, is that
>>>>> maintenance_work_mem is coming out of shared memory, and if so, you've
>>>>> exceeeded your SHMMAX kernel limit.
>>>>>
>>>> work_mem and maintenance_work_mem are not shared memory. AFAICT, David
>>>> need to check if the VACUUM works with a lower setting for
>>>> maintenance_work_mem. For example, 512MB could work.
>>>>
>>>>
>>> Yes, vacuum -z works with 512MB. so any idea what was causing it not to
>>> work with 1GB?
>>>
>>
>> Tom already explained that. The process couldn't get the 1GB it was
>> allowed to use with this setting of maintenance_work_mem.
>>
>>
> Well, that made sense until I freed up a lot of memory on the box. I had
> tried it again with 2GB of free memory available to me to use. My ulimits
> are all unlimited. So i'm wondering if there's a kernel setting I need, or
> something similar.

You may well be running out of *address space* rather than pure
memory. PostgreSQL is failing to allocate 1Gb of *continuous* memory.
Not just 1Gb of memory anywhere. Shared memory, for example, lives at
a fixed location already. There may be >1Gb free in the address space,
just not where you need it.

In general, when you are starting to talk about things like 1Gb
maintenance_work_mem, you should've switched to 64-bit a while ago :-)

> oh, hmm, my swap is 517Megs, that probably isn't helping. Usually swap is
> 1.5/2x available memory, isn't it? (it is for most unix's and oracle, but
> i'm not sure about PG and linux)

I don't think that affects this problem.

--
Magnus Hagander
Me: http://www.hagander.net/
Work: http://www.redpill-linpro.com/

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Richard Huxton 2010-02-09 11:45:01 Re: problems maintaining boolean columns in a large table
Previous Message Shoaib Mir 2010-02-09 11:41:32 Re: string reverse fucntion?