"Chris Hoover" <revoohc@gmail.com> writes:
> This is on a 32bit dual HT Xeon system using the official rpms.
Um. I suspect you can't usefully set maintenance_work_mem as high as
1Gb in a 32-bit environment. Last I heard, the max address space
available to userland in 32-bit Linux is 3Gb (the kernel takes the other
Gb). Out of that you've got to subtract Postgres' shared memory, the
program code itself, and whatever other random internal overhead a
backend has got. I don't think you mentioned what shared memory
settings you were using, but if you've been equally expansive on
shared_buffers and so on it could easily be approaching 2Gb in shared
memory.
Try knocking maintenance_work_mem back to 512M or 256M and see if things
get better.
regards, tom lane