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