Re: Understanding Postgres Memory Usage

From: "Ilya Kazakevich" <Ilya(dot)Kazakevich(at)JetBrains(dot)com>
To: "'Theron Luhn'" <theron(at)luhn(dot)com>, <pgsql-general(at)postgresql(dot)org>
Subject: Re: Understanding Postgres Memory Usage
Date: 2016-08-25 15:57:04
Message-ID: 04e301d1fee9$537ab200$fa701600$@JetBrains.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

$ free -h # Before the query

total used free shared buffers cached

Mem: 7.8G 5.2G 2.6G 212M 90M 4.9G

-/+ buffers/cache: 248M 7.6G

Swap: 0B 0B 0B

$ free -h # After the query

total used free shared buffers cached

Mem: 7.8G 5.3G 2.5G 212M 90M 4.9G

-/+ buffers/cache: 312M 7.5G

Swap: 0B 0B 0B

[I.K >> ] Are you talking about buffers/cache increased? AFAIK this memory is used by kernel as buffer before any block device (HDD for example).

Postgres does not use this memory directly, it simply reads data from block device, and kernel caches it. Process can’t be OOMed because of it.

I am sure you should configure your Postgres to NEVER exceed available RAM. You may use tools like (http://pgtune.leopard.in.ua/) or calculate it manually.

I do not remember exact formula, but it should be something like “work_mem*max_connections + shared_buffers” and it should be around 80% of your machine RAM (minus RAM used by other processes and kernel).

It will save you from OOM.

If you face performance bottleneck after it, you fix it using tools like “log_min_duration_statement”, “track_io_timing” and system-provided tools.

Ilya Kazakevich

JetBrains

<http://www.jetbrains.com/> http://www.jetbrains.com

The Drive to Develop

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message arnaud gaboury 2016-08-25 16:01:05 Re: pg_hba.conf : bad entry for ADDRESS
Previous Message Francisco Olarte 2016-08-25 15:50:25 Re: pg_hba.conf : bad entry for ADDRESS