We have a pretty busy linux server running postgres 8.1.4, waiting to
upgrade until 8.3 to avoid dump/restoring twice.
# cat /proc/meminfo
total: used: free: shared: buffers: cached:
Mem: 3704217600 3592069120 112148480 0 39460864 2316271616
Swap: 2516918272 270336 2516647936
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 3.00GHz
stepping : 3
cpu MHz : 2992.795
The postgresql.conf was basically the default so I decided to
increase the cache size and a couple paramaters to make more use of
that memory - here's what I did:
shared_buffers = 16384 (was 1000)
work_mem = 16384 (was 1024)
wal_buffers = 24 (was 8)
checkpoint_segments = 5 (was 3)
effective_cache_size = 10000 (was 1000)
stats_command_string = on (was off)
stats_block_level = on (was off)
stats_row_level = on (was off)
In order to do this I had to change /proc/sys/kernel/shmmax to
536870912 (don't have /etc/sysctl)
Also, the entire cluster gets vacuumed analyzed nightly.
After making these changes, the performance on the server actually
worsened. I slowly backed off on some of the paramaters but didn't
seem to help.
Wondering if those changes are silly? For a server this size I
didn't think this would be problematic.
Thank you,
Josh