Re: Enhancing Memory Context Statistics Reporting
Rahila Syed <rahilasyed90@gmail.com>
From: Rahila Syed <rahilasyed90@gmail.com>
To: Daniel Gustafsson <daniel@yesql.se>
Cc: PostgreSQL Hackers <pgsql-hackers@postgresql.org>,
torikoshia <torikoshia@oss.nttdata.com>, Robert Haas <robertmhaas@gmail.com>, Chao Li <li.evan.chao@gmail.com>
Date: 2026-03-05T22:31:09Z
Lists: pgsql-hackers
Attachments
- v54-0002-Test-module-to-test-memory-context-reporting-wit.patch (application/octet-stream) patch v54-0002
- v54-0001-Add-function-to-report-memory-context-statistics.patch (application/octet-stream) patch v54-0001
Hi All, The email below provides a summary of the changes implemented since the previous update on December 18th. 1. I tested and verified that when ProcessGetMemoryContextInterrupt() returns with error from processes that don't start a transaction, it doesn't affect system integrity. In auxiliary processes like ioworker, archiver, and wal_receiver, the ERROR causes the process to exit, which ensures proper resource and lock release. In other cases, cleanup and release are managed by error recovery logic, allowing processes to continue running smoothly. 2. I verified that the only resources acquired in ProcessGetMemoryContextInterrupt are DSMs, which remain attached until the process exits. During proc_exit, the release/detach of DSM runs via dsm_backend_shutdown(). 3.The error reporting level in the interrupt handler has been adjusted from ERROR to NOTICE to prevent unnecessary errors from being raised in interrupted transactions due to minor issues. 4. Aborted transaction check has been added to allow returning without processing the interrupt if it is called from an aborted transaction. 5. DSHash key type has been changed from string to integer, now using procNumber directly. This eliminates string formatting overhead. 6. Timeout messaging has been changed from silently returning empty row to issuing a NOTICE and returning an empty row. 7. Documentation has been to GetNamedDSA() and GetNamedDSHash(), warning that errors thrown from these functions can propagate to any transaction calling the CFI function 8. Subtracted elapsed time ((MEMORY_STATS_MAX_TIMEOUT * 1000) - elapsed_time) from timeout passed to ConditionVariableTimedSleep so the total wait doesn't exceed the intended timeout in case of spurious wakeups. 9. Fixed a race condition bug by ensuring ConditionVariableSignal is called before dshash_release_lock Additionally, I included couple of assertions, renamed variables and functions to enhance clarity and consistency with the existing style, and made improvements to the documentation and tests. Please find attached updated and rebased patches. Thank you, Rahila Syed On Tue, Feb 24, 2026 at 5:27 PM Rahila Syed <rahilasyed90@gmail.com> wrote: > Hi Daniel, > > Thank you for the review. All the changes suggested in the v52comments.diff > are incorporated in the attached patches. > > +#Server should have thrown error >> +$node->psql( >> + 'postgres', >> + qq(select pg_get_process_memory_contexts($pid, true);), >> + stderr => \$psql_err); >> >> This test doesn't validate that the server actually errored does it? >> (There is >> no proposed fix in the attached.) >> >> > This has been fixed by adding a check for the error returned by the above > command. > While at it, I also added another crash test to the file, This is similar > to the existing > test for a client backend crash, but in this scenario, it crashes the > server process > instead. > > 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