title: Why PostgreSQL doesn't use shared buffers fully
body: <p>I had Postgres 9.3 on 94 GB memory server, 120GB database with shared_buffers=1GB. Linux show that I have 88GB memory avaliable (it is ok, chart was very stable) but shared buffers cache miss ratio was about 10%.</p>
  
  <p>So I changed shared_buffers=16GB and I thought that avaliable memory would be about 88G-15GB = 73GB. Instead avaliable memory moves in range 85GB-77GB, so shared buffers are somehow evicted without any reason. Cache miss ratio is about 5% that is still bad. Chart of available memory: 
  <a href="https://i.stack.imgur.com/sE4J1.png" rel="nofollow noreferrer">memory consumption</a></p>
  
  <p>I have no permission to install pg_buffercache extension to clarify is any buffers are empty. </p>
  
  <p>Is any ideas why Postgress doesn't use all shared memory and evict buffers?</p>
  
  <p>UPD. There is a correlation between available memory grouth and checkpoint started by checkpoint limit - all high peaks on the chart are checkpoints. It is unclear why postgress release dirty buffers after saving to disk during checkpoint</p>