Re: shared_buffers/effective_cache_size on 96GB server

From: "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: Strahinja Kustudić *EXTERN* <strahinjak(at)nordeus(dot)com>, <pgsql-performance(at)postgresql(dot)org>
Subject: Re: shared_buffers/effective_cache_size on 96GB server
Date: 2012-10-10 07:39:47
Message-ID: D960CB61B694CF459DCFB4B0128514C20886AC8C@exadv11.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Strahinja Kustudic wrote:
>> I have a Postgresql 9.1 dedicated server with 16 cores, 96GB RAM and RAID10 15K SCSI drives
>> which is runing Centos 6.2 x64. This server is mainly used for inserting/updating large amounts of
>> data via copy/insert/update commands, and seldom for running select queries.
>>
>> Here are the relevant configuration parameters I changed:
>>
>> shared_buffers = 10GB
>> effective_cache_size = 90GB
>> work_mem = 32MB
>> maintenance_work_mem = 512MB
>> checkpoint_segments = 64
>> checkpoint_completion_target = 0.8
>>
>> My biggest concern are shared_buffers and effective_cache_size, should I increase shared_buffers
>> and decrease effective_cache_size? I read that values above 10GB for shared_buffers give lower
>> performance, than smaller amounts?
>>
>> free is currently reporting (during the loading of data):
>>
>> $ free -m
>> total used free shared buffers cached
>> Mem: 96730 96418 311 0 71 93120
>> -/+ buffers/cache: 3227 93502
>> Swap: 21000 51 20949
>>
>> So it did a little swapping, but only minor, still I should probably decrease shared_buffers so
>> there is no swapping at all.

> Hm, I just notices that shared_buffers + effective_cache_size = 100 > 96GB, which can't be right.
> effective_cache_size should probably be 80GB.

I think you misunderstood effective_cache_size.
It does not influence memory usage, but query planning.
It gives the planner an idea of how much memory there is for caching
data, including the filesystem cache.

So a good value for effective_cache_size would be
total memory minus what the OS and others need minus what private
memory the PostgreSQL backends need.
The latter can be estimated as work_mem times max_connections.

To avoid swapping, consider setting vm.swappiness to 0 in
/etc/sysctl.conf.

10GB of shared_buffers is quite a lot.
If you can run realistic performance tests, start with a lower value
and increase until you cannot see a notable improvement.

Yours,
Laurenz Albe

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Julien Cigar 2012-10-10 08:11:30 Re: shared_buffers/effective_cache_size on 96GB server
Previous Message Tomas Vondra 2012-10-10 07:32:54 Re: shared_buffers/effective_cache_size on 96GB server