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/
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? |