Re: Get memory contexts of an arbitrary backend process
torikoshia <torikoshia@oss.nttdata.com>
From: torikoshia <torikoshia@oss.nttdata.com>
To: Fujii Masao <masao.fujii@oss.nttdata.com>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>,
pgsql-hackers@postgresql.org, tgl@sss.pgh.pa.us, gkokolatos@protonmail.com,
kasahara.tatsuhito@gmail.com, craig@2ndquadrant.com
Date: 2021-03-31T06:02:02Z
Lists: pgsql-hackers
Attachments
- v8-0001-add-memorycontext-elog-print.patch (text/x-diff) patch v8-0001
On 2021-03-31 04:36, Fujii Masao wrote: > On 2021/03/30 22:06, torikoshia wrote: >> Modified the patch according to the suggestions. > > Thanks for updating the patch! > > I applied the cosmetic changes to the patch and added the example of > the function call into the document. Attached is the updated version > of the patch. Could you check this version? > Thanks a lot! +The memory contexts will be logged in the log file. For example: When 'log_destination = stderr' and 'logging_collector = off', it does not log in the file but in the stderr. Description like below would be a bit more accurate but I'm wondering it's repeating the same words. + The memory contexts will be logged based on the log configuration set. For example: How do you think? +<programlisting> +postgres=# SELECT pg_log_backend_memory_contexts(pg_backend_pid()); + pg_log_backend_memory_contexts +-------------------------------- + t +(1 row) + +The memory contexts will be logged in the log file. For example: +LOG: logging memory contexts of PID 10377 +STATEMENT: SELECT pg_log_backend_memory_contexts(pg_backend_pid()); +LOG: level: 0; TopMemoryContext: 80800 total in 6 blocks; 14432 free (5 chunks); 66368 used +LOG: level: 1; pgstat TabStatusArray lookup hash table: 8192 total in 1 blocks; 1408 free (0 chunks); 6784 used The line "The memory contexts will be logged in the log file. For example:" is neither nor SQL command and its outputs, it might be better to differentiate it. What about the following like attached patch? +<programlisting> +postgres=# SELECT pg_log_backend_memory_contexts(pg_backend_pid()); + pg_log_backend_memory_contexts +-------------------------------- + t +(1 row) +</programlisting> +The memory contexts will be logged in the log file. For example: +<screen> +LOG: logging memory contexts of PID 10377 +STATEMENT: SELECT pg_log_backend_memory_contexts(pg_backend_pid()); +LOG: level: 0; TopMemoryContext: 80800 total in 6 blocks; 14432 free (5 chunks); 66368 used +LOG: level: 1; pgstat TabStatusArray lookup hash table: 8192 total in 1 blocks; 1408 free (0 chunks); 6784 used ...(snip)... +LOG: level: 1; ErrorContext: 8192 total in 1 blocks; 7928 free (3 chunks); 264 used +LOG: Grand total: 1651920 bytes in 201 blocks; 622360 free (88 chunks); 1029560 used +</screen> Regards.
Commits
-
Add function to log the memory contexts of specified backend process.
- 43620e328617 14.0 landed
-
Add pg_backend_memory_contexts system view.
- 3e98c0bafb28 14.0 cited
-
Limit the verbosity of memory context statistics dumps.
- 7b5ef8f2d070 9.6.0 cited