We are trying to throw a lot of memory at PostgreSQL to try to boost
performance. In an attempt to put our entire database into memory, I want to
allocate 2 to 3 GB out of 4 GB on a dual processor server running Red Hat
Linux 7.3 and PostgreSQL 7.2.1. We only expect 4 or 5 concurrent backends.
When I try to allocate 2 GB or more, I get the following error when I try to
start PostgreSQL (after setting kernel.shmall and kernel.shmmax
appropriately):
IpcMemoryCreate: shmat(id=163840) failed: Cannot allocate memory
I can safely allocate a little under 2 GB. Is this a Linux upper bound on
how much memory can be allocated to a single program? Is there another
kernel parameter besides kernel.shmall and kernel.shmmax that can be set to
allow more memory to be allocated?