Postgresql – Checkpoint process RAM usage

postgresql

Environment:

 Centos 6.5
 PostgreSQL 9.3
 shared_buffers = 3000 MB
 checkpoint_segments = 128

Top command: top -M (shift F -> N)

enter image description here

The checkpointer process uses 1.3 GB RAM

Question:
Why does checkpointer process use a lot of RAM ?

Referenced:
this article, postgresql doc, interdb.jb 9.7, this post

Best Answer

The "VIRT" size (3.2 GB in this case) is the total amount of memory the process can see. The reason all of the postgres processes have a similar VIRT count is because they all map the 3 GB of shared memory into themselves, and in addition to that allocate whatever more they need to operate.

The "RES" size is the amount of memory touched by the individual processes. So, the checkpointer process has touched (directly read or written) about 1.5 GB of memory, most of which is almost certainly from the shared buffers pool. So, this 1.5 GB of RES is a mostly a subset of the 3 GB allocated for the shared buffers, plus a smaller amount for active per-process work.

To see which is which, use a utility such as pmap.