Re: Enhancing Memory Context Statistics Reporting
Rahila Syed <rahilasyed90@gmail.com>
From: Rahila Syed <rahilasyed90@gmail.com>
To: Andres Freund <andres@anarazel.de>, Daniel Gustafsson <daniel@yesql.se>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2025-04-08T05:40:34Z
Lists: pgsql-hackers
Attachments
- v28-0001-Add-function-to-get-memory-context-stats-for-process.patch (application/octet-stream) patch v28-0001
Hi Daniel, Andres, > > > >> +} MemoryContextState; > > > > > > IMO that's too generic a name for something in a header. > > > > > >> +} MemoryContextId; > > > > > > This too. Particularly because MemoryContextData->ident exist but is > > > something different. > > > > Renamed both to use MemoryContextReporting* namespace, which leaves > > MemoryContextReportingBackendState at an unwieldly long name. I'm > running out > > of ideas on how to improve and it does make purpose quite explicit at > least. > > How about > > MemoryContextReportingBackendState -> MemoryStatsBackendState > MemoryContextReportingId -> MemoryStatsContextId > MemoryContextReportingSharedState -> MemoryStatsCtl > MemoryContextReportingStatsEntry -> MemoryStatsEntry > > > Fixed accordingly. > > >> + /* context id starts with 1 */ > > >> + entry->context_id = ++(*stats_count); > > > > > > Given that we don't actually do anything here relating to starting > with 1, I > > > find that comment confusing. > > > > Reworded, not sure if it's much better tbh. > > I'd probably just remove the comment. > > Reworded to mention that we pre-increment stats_count to make sure id starts with 1. > > > > Hm. First I thought we'd leak memory if this second (and subsequent) > > > dsa_allocate failed. Then I thought we'd be ok, because the memory > would be > > > memory because it'd be reachable from > memCtxState[idx].memstats_dsa_pointer. > > > > > > But I think it wouldn't *quite* work, because > memCtxState[idx].total_stats is > > > only set *after* we would have failed. > > > > Keeping a running total in .total_stats should make the leak window > smaller. > > Why not just initialize .total_stats *before* calling any fallible code? > Afaict it's zero-allocated, so the free function should have no problem > dealing with the entries that haven't yet been populated/ > > Fixed accordingly. PFA a v28 which passes all local and github CI tests. Thank you, Rahila Syed
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Cross-check lists of built-in LWLock tranches.
- 2047ad068139 19 (unreleased) cited
-
Convert strncpy to strlcpy
- 45e7e8ca9e93 18.0 landed
-
Typo and doc fixups for memory context reporting
- f8c115a6cb65 18.0 landed
-
Add missing string terminator
- d2a1ed1727a8 18.0 landed
-
Rename argument in pg_get_process_memory_contexts().
- c57971034e69 18.0 landed
-
Add function to get memory context stats for processes
- 042a66291b04 18.0 landed