Обсуждение: A question about memory usage

Поиск
Список
Период
Сортировка

A question about memory usage

От
Arnau Rebassa i Villalonga
Дата:
Hi all,

   I have a server with 4GB of RAM and I wanted to know how much memory
is being used by a PostgreSQL. To do so I have executed the following:

   ps -A -o rss,vsz,command|grep postgres | awk '{rss += $1; vsz += $2 }
END { print "Real: ",rss/1024"MB Virtual: ",vsz/1024"MB" }'

And the result is:
   Real:  157.59MB Virtual:  6359.04MB

So I understand that amount of virtual memory must be swapped to disk as
it's bigger that my physical memory. To check this I have executed the
free command and I get the following results:

         total         used       free     shared    buffers     cached
Mem:   4153180     3988536     164644          0     161400    3117900
-/+ buffers/cache:  709236    3443944
Swap:      6215672      64    6215608

   So my question is, what I'm doing wrong? because the swap it's almost
empty

Thank you very much
--
Arnau


Re: A question about memory usage

От
Tom Lane
Дата:
Arnau Rebassa i Villalonga <arnau.rebassa@androme.es> writes:
>    I have a server with 4GB of RAM and I wanted to know how much memory
> is being used by a PostgreSQL. To do so I have executed the following:

>    ps -A -o rss,vsz,command|grep postgres | awk '{rss += $1; vsz += $2 }
> END { print "Real: ",rss/1024"MB Virtual: ",vsz/1024"MB" }'

Depending on the details of your ps command, this is likely counting
Postgres' shared memory area over again for each backend.  It's
definitely counting the executable-program image over again for each
backend, even though on any modern system those pages will be shared.
So it's no surprise that you get a number a lot larger than the actual
RAM footprint.

I don't know of any good portable way to get the number you want :-(.
If your ps can distinguish shared and unshared pages, adding up all the
unshared pages and counting one instance of the shared pages will be
reasonably close.

            regards, tom lane