1

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

  • Maybe, because of using top command, it will not return exactly RAM usage. But, if this process really keeps 1.3 GB RAM, I'm curious about what information it keeps inside. – Luan Huynh Sep 14 '16 at 4:17
  • Well, it's just a guess without trying to figure it out from the source code: checkpoints are about writing certain contents of RAM to disk. The number you see might relate to the amount of changes you accumulated. – dezso Sep 14 '16 at 8:08
  • Using pmap, I realized that there are a lot of things related to "checkpointer". May be, the amount of RAM above accumulated by them. – Luan Huynh Sep 15 '16 at 3:26
4

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.