Re: Get memory contexts of an arbitrary backend process

torikoshia <torikoshia@oss.nttdata.com>

From: torikoshia <torikoshia@oss.nttdata.com>
To: masao.fujii@oss.nttdata.com, Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: pgsql-hackers@postgresql.org, tgl@sss.pgh.pa.us, gkokolatos@protonmail.com, kasahara.tatsuhito@gmail.com, craig@2ndquadrant.com
Date: 2021-03-29T02:59:13Z
Lists: pgsql-hackers

Attachments

On 2021-03-26 14:08, Kyotaro Horiguchi wrote:
> At Fri, 26 Mar 2021 14:02:49 +0900, Fujii Masao
> <masao.fujii@oss.nttdata.com> wrote in
>> 
>> 
>> On 2021/03/26 13:28, Kyotaro Horiguchi wrote:
>> >> "some contexts are omitted"
>> >> "n child contexts: total_bytes = ..."
>> > Sorry I missed that is already implemented.  So my opnion is I agree
>> > with limiting with a fixed-number, and preferablly sorted in
>> > descending order of... totalspace/nblocks?
>> 
>> This may be an improvement, but makes us modify
>> MemoryContextStatsInternal()
>> very much. I'm afraid that it's too late to do that at this stage...
>> What about leaving the output order as it is at the first version?
> 
> So I said "preferably":p  (with a misspelling...)
> I'm fine with that.
> 
> regards.

Thanks for the comments!

Attached a new patch.

It adds pg_log_backend_memory_contexts(pid) which logs memory contexts
of the specified backend process.

The number of child contexts to be logged per parent is limited to 100
as with MemoryContextStats().

As written in commit 7b5ef8f2d07, which limits the verbosity of
memory context statistics dumps, it supposes that practical cases
where the dump gets long will typically be huge numbers of
siblings under the same parent context; while the additional
debugging value from seeing details about individual siblings
beyond 100 will not be large.

Thoughts?


Regards.

Commits

  1. Add function to log the memory contexts of specified backend process.

  2. Add pg_backend_memory_contexts system view.

  3. Limit the verbosity of memory context statistics dumps.