Thread: : bg_writer overloaded ?

: bg_writer overloaded ?

From
Venkat Balaji
Date:
Hello Everyone,

I could see the following in the production server (result of the "top" M command) -

 PID    USER     PR  NI  VIRT    RES   SHR   S  %CPU   %MEM       TIME+     COMMAND
25265 postgres  15   0  3329m   2.5g   1.9g   S     0.0          4.0      542:47.83   postgres: writer process

The "writer process" refers to bg_writer ? and we have shared_buffers set to 1920 MB (around 1.9 GB).

In an other similar situation, we have "postgres writer process" using up 7 - 8 GB memory constantly. 

pg_tune is suggesting to increase the shared_buffers to 8 GB.

If the shared_buffer is not enough, Postgres uses OS cache ?

We have a 64 GB RAM.

We have decided the following -

1. We have 20 databases running in one cluster and all are more or less highly active databases.
2. We will be splitting across the databases across multiple clusters to have multiple writer processes working across databases.

Please help us if you have any other solutions around this.

Thanks
VB

Re: : bg_writer overloaded ?

From
Scott Marlowe
Date:
On Wed, Nov 9, 2011 at 2:25 AM, Venkat Balaji <venkat.balaji@verse.in> wrote:
> Hello Everyone,
> I could see the following in the production server (result of the "top" M
> command) -
>  PID    USER     PR  NI  VIRT    RES   SHR   S  %CPU   %MEM       TIME+
> COMMAND
> 25265 postgres  15   0  3329m   2.5g   1.9g   S     0.0          4.0
>  542:47.83   postgres: writer process
> The "writer process" refers to bg_writer ? and we have shared_buffers set to
> 1920 MB (around 1.9 GB).

So it is using 2.5G of mem of which 1.9G is shared memory (i.e. shared
buffers) so the actual amount of RAM it's using is ~600Megs.

I see no problem.

> In an other similar situation, we have "postgres writer process" using up 7
> - 8 GB memory constantly.

I doubt it.  Sounds more like you're misreading the output of top.

> pg_tune is suggesting to increase the shared_buffers to 8 GB.

Reasonable.

> If the shared_buffer is not enough, Postgres uses OS cache ?

Not really how things work.  The OS uses all spare memory as cache.
PostgreSQL uses shared_buffers as a cache.  The OS is much more
efficient about caching in dozens of gigabytes than pgsql is.

> We have a 64 GB RAM.
> We have decided the following -
> 1. We have 20 databases running in one cluster and all are more or less
> highly active databases.
> 2. We will be splitting across the databases across multiple clusters to
> have multiple writer processes working across databases.
> Please help us if you have any other solutions around this.

You have shown us no actual problem.

Re: : bg_writer overloaded ?

From
Venkat Balaji
Date:
On Wed, Nov 9, 2011 at 8:16 PM, Scott Marlowe <scott.marlowe@gmail.com> wrote:
On Wed, Nov 9, 2011 at 2:25 AM, Venkat Balaji <venkat.balaji@verse.in> wrote:
> Hello Everyone,
> I could see the following in the production server (result of the "top" M
> command) -
>  PID    USER     PR  NI  VIRT    RES   SHR   S  %CPU   %MEM       TIME+
> COMMAND
> 25265 postgres  15   0  3329m   2.5g   1.9g   S     0.0          4.0
>  542:47.83   postgres: writer process
> The "writer process" refers to bg_writer ? and we have shared_buffers set to
> 1920 MB (around 1.9 GB).

So it is using 2.5G of mem of which 1.9G is shared memory (i.e. shared
buffers) so the actual amount of RAM it's using is ~600Megs.

I see no problem.

Is this not the indication that the shared_buffers is undersized ?
 

> In an other similar situation, we have "postgres writer process" using up 7
> - 8 GB memory constantly.

I doubt it.  Sounds more like you're misreading the output of top.

Below is the output directly taken from our production box. As per you, the writer process is taking up 1.9g from 
shared_buffers and the remaining (around 5.6 GB) from RAM.

Mem:  65980808k total, 65620700k used,   360108k free,   210792k buffers
Swap:  1052248k total,   321144k used,   731104k free, 51721468k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
10306 postgres  15   0 15.7g 7.5g 1.9g S  1.9 12.0   1037:05 postgres: writer process

Is this not a problem ?
 
> pg_tune is suggesting to increase the shared_buffers to 8 GB.

Reasonable.

> If the shared_buffer is not enough, Postgres uses OS cache ?

Not really how things work.  The OS uses all spare memory as cache.
PostgreSQL uses shared_buffers as a cache.  The OS is much more
efficient about caching in dozens of gigabytes than pgsql is.

What if the shared_buffers is not enough to cache the data being read from the database ?

Thanks for your help !

Regards,
VB