Thread: low memory usage reported by 'top' indicates poor tuning?

low memory usage reported by 'top' indicates poor tuning?

From
Mark Stosberg
Date:
Hello,

I'm trying to make sense of the memory usage reported by 'top', compared
to what "pg_database_size" shows.   Here's one result:

select pg_size_pretty(pg_database_size('production'));
 pg_size_pretty
----------------
 6573 MB

Now, looking at memory use with "top", there is a lot memory that isn't
being used on the system:

 Mem: 470M Active, 2064M Inact

( 3 Gigs RAM, total ).

Overall performance is decent, so maybe there's no
problem. However, I wonder if we've under-allocated memory to
PostgreSQL. (This is a dedicated FreeBSD DB server).

Some memory settings include:

shared_buffers = 8192 (we have 450 connections)
max_fsm_pages = 1250000 (we kept getting HINTs to bump it, so we did)

Maybe we should be bumping up the "sort_mem" and "vacuum_mem" as well?

I do sometimes see sorting and vacuuming as showing up as things I'd
like to run faster.

This list has been a great resource for performance tuning help, and I
continue to appreciate your help. We've used PostgreSQL on every project
we've had a choice on for the last 10 years. (Has it been that long?!)
We've never regretted it once.

   Mark

Re: low memory usage reported by 'top' indicates poor tuning?

From
"Joshua D. Drake"
Date:
Mark Stosberg wrote:
> Hello,
>
> I'm trying to make sense of the memory usage reported by 'top', compared
> to what "pg_database_size" shows.   Here's one result:'


You are missing the most important parts of the equation:

1. What version of PostgreSQL.
2. What operating system -- scratch , I see freebsd
3. How big is your pg_dump in comparison to the pg_database_size()
4. What type of raid do you have?
5. What is your work_mem set to?
6. What about effective_cache_size?
7. Do you analyze? How often?

>
> select pg_size_pretty(pg_database_size('production'));
>  pg_size_pretty
> ----------------
>  6573 MB
>
> Now, looking at memory use with "top", there is a lot memory that isn't
> being used on the system:
>
>  Mem: 470M Active, 2064M Inact
>
> ( 3 Gigs RAM, total ).
>
> Overall performance is decent, so maybe there's no
> problem. However, I wonder if we've under-allocated memory to
> PostgreSQL. (This is a dedicated FreeBSD DB server).
>
> Some memory settings include:
>
> shared_buffers = 8192 (we have 450 connections)
> max_fsm_pages = 1250000 (we kept getting HINTs to bump it, so we did)
>
> Maybe we should be bumping up the "sort_mem" and "vacuum_mem" as well?
>
> I do sometimes see sorting and vacuuming as showing up as things I'd
> like to run faster.
>
> This list has been a great resource for performance tuning help, and I
> continue to appreciate your help. We've used PostgreSQL on every project
> we've had a choice on for the last 10 years. (Has it been that long?!)
> We've never regretted it once.
>
>    Mark
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>


--

      === The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive  PostgreSQL solutions since 1997
             http://www.commandprompt.com/

Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL Replication: http://www.commandprompt.com/products/


Re: low memory usage reported by 'top' indicates poor tuning?

From
Mark Stosberg
Date:
Joshua D. Drake wrote:
> Mark Stosberg wrote:
>> Hello,
>>
>> I'm trying to make sense of the memory usage reported by 'top', compared
>> to what "pg_database_size" shows.   Here's one result:'
>
>
> You are missing the most important parts of the equation:

Thanks for your patience, Joshua.  I'm new at performance tuning.

> 1. What version of PostgreSQL.

Now, 8.1. We are evaluating 8.2 currently and could potentially upgrade
soon.

> 2. What operating system -- scratch , I see freebsd

> 3. How big is your pg_dump in comparison to the pg_database_size()

Using the compressed, custom format: 360M.   It was recently 1.2G
due to logging tables that were pruned recently. These tables are
only inserted into and are not otherwise accessed by the application.

> 4. What type of raid do you have?

RAID-1.

> 5. What is your work_mem set to?

1024 (left at the default)

> 6. What about effective_cache_size?

1000 (default)

For any other settings, it's probably the defaults, too.

> 7. Do you analyze? How often?

Once, nightly. I'm currently learning and experience with autovacuuming
to see if there is a more optimal arrangement of autovacuuming + nightly
cron vacuuming.

A test on Friday was failure: Autovacuuming brought the application to a
crawl, and with 8.1, I couldn't see what table it was stuck on.  I had
autovacuum_vacuum_cost_delay set to "10".

Thanks again for your experienced help.

   Mark

>> select pg_size_pretty(pg_database_size('production'));
>>  pg_size_pretty
>> ----------------
>>  6573 MB
>>
>> Now, looking at memory use with "top", there is a lot memory that isn't
>> being used on the system:
>>
>>  Mem: 470M Active, 2064M Inact
>>
>> ( 3 Gigs RAM, total ).
>>
>> Overall performance is decent, so maybe there's no
>> problem. However, I wonder if we've under-allocated memory to
>> PostgreSQL. (This is a dedicated FreeBSD DB server).
>>
>> Some memory settings include:
>>
>> shared_buffers = 8192 (we have 450 connections)
>> max_fsm_pages = 1250000 (we kept getting HINTs to bump it, so we did)
>>
>> Maybe we should be bumping up the "sort_mem" and "vacuum_mem" as well?
>>
>> I do sometimes see sorting and vacuuming as showing up as things I'd
>> like to run faster.
>>
>> This list has been a great resource for performance tuning help, and I
>> continue to appreciate your help. We've used PostgreSQL on every project
>> we've had a choice on for the last 10 years. (Has it been that long?!)
>> We've never regretted it once.
>>
>>    Mark
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 2: Don't 'kill -9' the postmaster
>>
>
>