1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-20 00:42:27 +03:00

Rename global variable backing DSA area

The global variable backing the DSA area for Memory Context stats
reporting had a too generic name, rename to be more descriptive.
Independently reported by Peter and Laurenz.

Author: Daniel Gustafsson <daniel@yesql.se>
Reported-by: Peter Eisentraut <peter@eisentraut.org>
Reported-by: Laurenz Albe <laurenz.albe@cybertec.at>
Discussion: https://postgr.es/m/d51172bd4e7f4b07a18a0288ca1b1c28a71a5f6a.camel@cybertec.at
Discussion: https://postgr.es/m/25095db5-b595-4b85-9100-d358907c25b5@eisentraut.org
This commit is contained in:
Daniel Gustafsson 2025-04-10 22:40:27 +02:00
parent 22cb6d2895
commit 55ef7abf88
3 changed files with 28 additions and 28 deletions

View File

@ -533,21 +533,21 @@ pg_get_process_memory_contexts(PG_FUNCTION_ARGS)
*/ */
Assert(memCxtArea->memstats_dsa_handle != DSA_HANDLE_INVALID); Assert(memCxtArea->memstats_dsa_handle != DSA_HANDLE_INVALID);
/* Attach to the dsa area if we have not already done so */ /* Attach to the dsa area if we have not already done so */
if (area == NULL) if (MemoryStatsDsaArea == NULL)
{ {
MemoryContext oldcontext = CurrentMemoryContext; MemoryContext oldcontext = CurrentMemoryContext;
MemoryContextSwitchTo(TopMemoryContext); MemoryContextSwitchTo(TopMemoryContext);
area = dsa_attach(memCxtArea->memstats_dsa_handle); MemoryStatsDsaArea = dsa_attach(memCxtArea->memstats_dsa_handle);
MemoryContextSwitchTo(oldcontext); MemoryContextSwitchTo(oldcontext);
dsa_pin_mapping(area); dsa_pin_mapping(MemoryStatsDsaArea);
} }
/* /*
* Backend has finished publishing the stats, project them. * Backend has finished publishing the stats, project them.
*/ */
memcxt_info = (MemoryStatsEntry *) memcxt_info = (MemoryStatsEntry *)
dsa_get_address(area, memCxtState[procNumber].memstats_dsa_pointer); dsa_get_address(MemoryStatsDsaArea, memCxtState[procNumber].memstats_dsa_pointer);
#define PG_GET_PROCESS_MEMORY_CONTEXTS_COLS 12 #define PG_GET_PROCESS_MEMORY_CONTEXTS_COLS 12
for (int i = 0; i < memCxtState[procNumber].total_stats; i++) for (int i = 0; i < memCxtState[procNumber].total_stats; i++)
@ -566,7 +566,7 @@ pg_get_process_memory_contexts(PG_FUNCTION_ARGS)
if (DsaPointerIsValid(memcxt_info[i].name)) if (DsaPointerIsValid(memcxt_info[i].name))
{ {
name = (char *) dsa_get_address(area, memcxt_info[i].name); name = (char *) dsa_get_address(MemoryStatsDsaArea, memcxt_info[i].name);
values[0] = CStringGetTextDatum(name); values[0] = CStringGetTextDatum(name);
} }
else else
@ -574,7 +574,7 @@ pg_get_process_memory_contexts(PG_FUNCTION_ARGS)
if (DsaPointerIsValid(memcxt_info[i].ident)) if (DsaPointerIsValid(memcxt_info[i].ident))
{ {
ident = (char *) dsa_get_address(area, memcxt_info[i].ident); ident = (char *) dsa_get_address(MemoryStatsDsaArea, memcxt_info[i].ident);
values[1] = CStringGetTextDatum(ident); values[1] = CStringGetTextDatum(ident);
} }
else else
@ -586,7 +586,7 @@ pg_get_process_memory_contexts(PG_FUNCTION_ARGS)
path_datum = (Datum *) palloc(path_length * sizeof(Datum)); path_datum = (Datum *) palloc(path_length * sizeof(Datum));
if (DsaPointerIsValid(memcxt_info[i].path)) if (DsaPointerIsValid(memcxt_info[i].path))
{ {
path_int = (int *) dsa_get_address(area, memcxt_info[i].path); path_int = (int *) dsa_get_address(MemoryStatsDsaArea, memcxt_info[i].path);
for (int j = 0; j < path_length; j++) for (int j = 0; j < path_length; j++)
path_datum[j] = Int32GetDatum(path_int[j]); path_datum[j] = Int32GetDatum(path_int[j]);
path_array = construct_array_builtin(path_datum, path_length, INT4OID); path_array = construct_array_builtin(path_datum, path_length, INT4OID);

View File

@ -172,7 +172,7 @@ MemoryContext CurTransactionContext = NULL;
/* This is a transient link to the active portal's memory context: */ /* This is a transient link to the active portal's memory context: */
MemoryContext PortalContext = NULL; MemoryContext PortalContext = NULL;
dsa_area *area = NULL; dsa_area *MemoryStatsDsaArea = NULL;
static void MemoryContextDeleteOnly(MemoryContext context); static void MemoryContextDeleteOnly(MemoryContext context);
static void MemoryContextCallResetCallbacks(MemoryContext context); static void MemoryContextCallResetCallbacks(MemoryContext context);
@ -1499,19 +1499,19 @@ ProcessGetMemoryContextInterrupt(void)
MemoryContextSwitchTo(TopMemoryContext); MemoryContextSwitchTo(TopMemoryContext);
area = dsa_create(memCxtArea->lw_lock.tranche); MemoryStatsDsaArea = dsa_create(memCxtArea->lw_lock.tranche);
handle = dsa_get_handle(area); handle = dsa_get_handle(MemoryStatsDsaArea);
MemoryContextSwitchTo(oldcontext); MemoryContextSwitchTo(oldcontext);
dsa_pin_mapping(area); dsa_pin_mapping(MemoryStatsDsaArea);
/* /*
* Pin the DSA area, this is to make sure the area remains attachable * Pin the DSA area, this is to make sure the area remains attachable
* even if current backend exits. This is done so that the statistics * even if current backend exits. This is done so that the statistics
* are published even if the process exits while a client is waiting. * are published even if the process exits while a client is waiting.
*/ */
dsa_pin(area); dsa_pin(MemoryStatsDsaArea);
/* Set the handle in shared memory */ /* Set the handle in shared memory */
memCxtArea->memstats_dsa_handle = handle; memCxtArea->memstats_dsa_handle = handle;
@ -1521,14 +1521,14 @@ ProcessGetMemoryContextInterrupt(void)
* If DSA exists, created by another process publishing statistics, attach * If DSA exists, created by another process publishing statistics, attach
* to it. * to it.
*/ */
else if (area == NULL) else if (MemoryStatsDsaArea == NULL)
{ {
MemoryContext oldcontext = CurrentMemoryContext; MemoryContext oldcontext = CurrentMemoryContext;
MemoryContextSwitchTo(TopMemoryContext); MemoryContextSwitchTo(TopMemoryContext);
area = dsa_attach(memCxtArea->memstats_dsa_handle); MemoryStatsDsaArea = dsa_attach(memCxtArea->memstats_dsa_handle);
MemoryContextSwitchTo(oldcontext); MemoryContextSwitchTo(oldcontext);
dsa_pin_mapping(area); dsa_pin_mapping(MemoryStatsDsaArea);
} }
LWLockRelease(&memCxtArea->lw_lock); LWLockRelease(&memCxtArea->lw_lock);
@ -1545,7 +1545,7 @@ ProcessGetMemoryContextInterrupt(void)
* Free any previous allocations, free the name, ident and path * Free any previous allocations, free the name, ident and path
* pointers before freeing the pointer that contains them. * pointers before freeing the pointer that contains them.
*/ */
free_memorycontextstate_dsa(area, memCxtState[idx].total_stats, free_memorycontextstate_dsa(MemoryStatsDsaArea, memCxtState[idx].total_stats,
memCxtState[idx].memstats_dsa_pointer); memCxtState[idx].memstats_dsa_pointer);
} }
@ -1556,10 +1556,10 @@ ProcessGetMemoryContextInterrupt(void)
*/ */
memCxtState[idx].total_stats = stats_num; memCxtState[idx].total_stats = stats_num;
memCxtState[idx].memstats_dsa_pointer = memCxtState[idx].memstats_dsa_pointer =
dsa_allocate0(area, stats_num * sizeof(MemoryStatsEntry)); dsa_allocate0(MemoryStatsDsaArea, stats_num * sizeof(MemoryStatsEntry));
meminfo = (MemoryStatsEntry *) meminfo = (MemoryStatsEntry *)
dsa_get_address(area, memCxtState[idx].memstats_dsa_pointer); dsa_get_address(MemoryStatsDsaArea, memCxtState[idx].memstats_dsa_pointer);
if (summary) if (summary)
{ {
@ -1572,7 +1572,7 @@ ProcessGetMemoryContextInterrupt(void)
&stat, true); &stat, true);
path = lcons_int(1, path); path = lcons_int(1, path);
PublishMemoryContext(meminfo, cxt_id, TopMemoryContext, path, stat, PublishMemoryContext(meminfo, cxt_id, TopMemoryContext, path, stat,
1, area, 100); 1, MemoryStatsDsaArea, 100);
cxt_id = cxt_id + 1; cxt_id = cxt_id + 1;
/* /*
@ -1602,7 +1602,7 @@ ProcessGetMemoryContextInterrupt(void)
*/ */
memCxtState[idx].total_stats = cxt_id++; memCxtState[idx].total_stats = cxt_id++;
PublishMemoryContext(meminfo, cxt_id, c, path, PublishMemoryContext(meminfo, cxt_id, c, path,
grand_totals, num_contexts, area, 100); grand_totals, num_contexts, MemoryStatsDsaArea, 100);
} }
memCxtState[idx].total_stats = cxt_id; memCxtState[idx].total_stats = cxt_id;
@ -1632,7 +1632,7 @@ ProcessGetMemoryContextInterrupt(void)
if (context_id < (max_stats - 1) || stats_count <= max_stats) if (context_id < (max_stats - 1) || stats_count <= max_stats)
{ {
/* Copy statistics to DSA memory */ /* Copy statistics to DSA memory */
PublishMemoryContext(meminfo, context_id, cur, path, stat, 1, area, 100); PublishMemoryContext(meminfo, context_id, cur, path, stat, 1, MemoryStatsDsaArea, 100);
} }
else else
{ {
@ -1657,8 +1657,8 @@ ProcessGetMemoryContextInterrupt(void)
int namelen = strlen("Remaining Totals"); int namelen = strlen("Remaining Totals");
num_individual_stats = context_id + 1; num_individual_stats = context_id + 1;
meminfo[max_stats - 1].name = dsa_allocate(area, namelen + 1); meminfo[max_stats - 1].name = dsa_allocate(MemoryStatsDsaArea, namelen + 1);
nameptr = dsa_get_address(area, meminfo[max_stats - 1].name); nameptr = dsa_get_address(MemoryStatsDsaArea, meminfo[max_stats - 1].name);
strncpy(nameptr, "Remaining Totals", namelen); strncpy(nameptr, "Remaining Totals", namelen);
meminfo[max_stats - 1].ident = InvalidDsaPointer; meminfo[max_stats - 1].ident = InvalidDsaPointer;
meminfo[max_stats - 1].path = InvalidDsaPointer; meminfo[max_stats - 1].path = InvalidDsaPointer;
@ -1921,18 +1921,18 @@ AtProcExit_memstats_cleanup(int code, Datum arg)
} }
/* If the dsa mapping could not be found, attach to the area */ /* If the dsa mapping could not be found, attach to the area */
if (area == NULL) if (MemoryStatsDsaArea == NULL)
area = dsa_attach(memCxtArea->memstats_dsa_handle); MemoryStatsDsaArea = dsa_attach(memCxtArea->memstats_dsa_handle);
/* /*
* Free the memory context statistics, free the name, ident and path * Free the memory context statistics, free the name, ident and path
* pointers before freeing the pointer that contains these pointers and * pointers before freeing the pointer that contains these pointers and
* integer statistics. * integer statistics.
*/ */
free_memorycontextstate_dsa(area, memCxtState[idx].total_stats, free_memorycontextstate_dsa(MemoryStatsDsaArea, memCxtState[idx].total_stats,
memCxtState[idx].memstats_dsa_pointer); memCxtState[idx].memstats_dsa_pointer);
dsa_detach(area); dsa_detach(MemoryStatsDsaArea);
LWLockRelease(&memCxtState[idx].lw_lock); LWLockRelease(&memCxtState[idx].lw_lock);
} }

View File

@ -394,11 +394,11 @@ typedef struct MemoryStatsContextId
extern PGDLLIMPORT MemoryStatsBackendState *memCxtState; extern PGDLLIMPORT MemoryStatsBackendState *memCxtState;
extern PGDLLIMPORT MemoryStatsCtl *memCxtArea; extern PGDLLIMPORT MemoryStatsCtl *memCxtArea;
extern PGDLLIMPORT dsa_area *MemoryStatsDsaArea;
extern void ProcessGetMemoryContextInterrupt(void); extern void ProcessGetMemoryContextInterrupt(void);
extern const char *ContextTypeToString(NodeTag type); extern const char *ContextTypeToString(NodeTag type);
extern void HandleGetMemoryContextInterrupt(void); extern void HandleGetMemoryContextInterrupt(void);
extern Size MemoryContextReportingShmemSize(void); extern Size MemoryContextReportingShmemSize(void);
extern void MemoryContextReportingShmemInit(void); extern void MemoryContextReportingShmemInit(void);
extern void AtProcExit_memstats_cleanup(int code, Datum arg); extern void AtProcExit_memstats_cleanup(int code, Datum arg);
extern dsa_area *area;
#endif /* MEMUTILS_H */ #endif /* MEMUTILS_H */