mirror of
https://github.com/postgres/postgres.git
synced 2026-06-09 00:32:10 -04:00
Fix shmem allocation of fixed-sized custom stats kind
StatsShmemSize(), that computes the shmem size needed for pgstats,
includes the amount of shared memory wanted by all the custom stats
kinds registered. However, the shared memory allocation was done by
ShmemAlloc() in StatsShmemInit(), meaning that the space reserved was
not used, wasting some memory.
These extra allocations would show up under "<anonymous>" in
pg_shmem_allocations, as the allocations done by ShmemAlloc() are not
tracked by ShmemIndexEnt.
Issue introduced by 7949d95945.
Author: Heikki Linnakangas <hlinnaka@iki.fi>
Discussion: https://postgr.es/m/04b04387-92f5-476c-90b0-4064e71c5f37@iki.fi
Backpatch-through: 18
This commit is contained in:
parent
5c54c3ed1b
commit
17132f55c5
1 changed files with 4 additions and 3 deletions
|
|
@ -150,8 +150,7 @@ StatsShmemSize(void)
|
|||
continue;
|
||||
|
||||
Assert(kind_info->shared_size != 0);
|
||||
|
||||
sz += MAXALIGN(kind_info->shared_size);
|
||||
sz = add_size(sz, MAXALIGN(kind_info->shared_size));
|
||||
}
|
||||
|
||||
return sz;
|
||||
|
|
@ -189,6 +188,7 @@ StatsShmemInit(void *arg)
|
|||
* efficiency win.
|
||||
*/
|
||||
ctl->raw_dsa_area = p;
|
||||
p += pgstat_dsa_init_size();
|
||||
dsa = dsa_create_in_place(ctl->raw_dsa_area,
|
||||
pgstat_dsa_init_size(),
|
||||
LWTRANCHE_PGSTATS_DSA, NULL);
|
||||
|
|
@ -242,7 +242,8 @@ StatsShmemInit(void *arg)
|
|||
int idx = kind - PGSTAT_KIND_CUSTOM_MIN;
|
||||
|
||||
Assert(kind_info->shared_size != 0);
|
||||
ctl->custom_data[idx] = ShmemAlloc(kind_info->shared_size);
|
||||
ctl->custom_data[idx] = p;
|
||||
p += MAXALIGN(kind_info->shared_size);
|
||||
ptr = ctl->custom_data[idx];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue