Introduce GUC shared_memory_size
This runtime-computed GUC shows the size of the server's main shared memory area, taking into account the amount of shared memory allocated by extensions as this is calculated after processing shared_preload_libraries. Author: Nathan Bossart Discussion: https://postgr.es/m/F2772387-CE0F-46BF-B5F1-CC55516EB885@amazon.com
This commit is contained in:
parent
fd0625c7a9
commit
bd1788051b
@ -10275,6 +10275,20 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="guc-shared-memory-size" xreflabel="shared_memory_size">
|
||||
<term><varname>shared_memory_size</varname> (<type>integer</type>)
|
||||
<indexterm>
|
||||
<primary><varname>shared_memory_size</varname> configuration parameter</primary>
|
||||
</indexterm>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports the size of the main shared memory area, rounded up to the
|
||||
nearest megabyte.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="guc-ssl-library" xreflabel="ssl_library">
|
||||
<term><varname>ssl_library</varname> (<type>string</type>)
|
||||
<indexterm>
|
||||
|
@ -1026,6 +1026,13 @@ PostmasterMain(int argc, char *argv[])
|
||||
*/
|
||||
InitializeMaxBackends();
|
||||
|
||||
/*
|
||||
* Now that loadable modules have had their chance to request additional
|
||||
* shared memory, determine the value of any runtime-computed GUCs that
|
||||
* depend on the amount of shared memory required.
|
||||
*/
|
||||
InitializeShmemGUCs();
|
||||
|
||||
/*
|
||||
* Set up shared memory and semaphores.
|
||||
*/
|
||||
|
@ -313,3 +313,25 @@ CreateSharedMemoryAndSemaphores(void)
|
||||
if (shmem_startup_hook)
|
||||
shmem_startup_hook();
|
||||
}
|
||||
|
||||
/*
|
||||
* InitializeShmemGUCs
|
||||
*
|
||||
* This function initializes runtime-computed GUCs related to the amount of
|
||||
* shared memory required for the current configuration.
|
||||
*/
|
||||
void
|
||||
InitializeShmemGUCs(void)
|
||||
{
|
||||
char buf[64];
|
||||
Size size_b;
|
||||
Size size_mb;
|
||||
|
||||
/*
|
||||
* Calculate the shared memory size and round up to the nearest megabyte.
|
||||
*/
|
||||
size_b = CalculateShmemSize(NULL);
|
||||
size_mb = add_size(size_b, (1024 * 1024) - 1) / (1024 * 1024);
|
||||
sprintf(buf, "%lu", size_mb);
|
||||
SetConfigOption("shared_memory_size", buf, PGC_INTERNAL, PGC_S_OVERRIDE);
|
||||
}
|
||||
|
@ -664,6 +664,7 @@ static int max_index_keys;
|
||||
static int max_identifier_length;
|
||||
static int block_size;
|
||||
static int segment_size;
|
||||
static int shared_memory_size_mb;
|
||||
static int wal_block_size;
|
||||
static bool data_checksums;
|
||||
static bool integer_datetimes;
|
||||
@ -2337,6 +2338,17 @@ static struct config_int ConfigureNamesInt[] =
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
|
||||
{
|
||||
{"shared_memory_size", PGC_INTERNAL, RESOURCES_MEM,
|
||||
gettext_noop("Shows the size of the server's main shared memory area (rounded up to the nearest MB)."),
|
||||
NULL,
|
||||
GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_UNIT_MB
|
||||
},
|
||||
&shared_memory_size_mb,
|
||||
0, 0, INT_MAX,
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
|
||||
{
|
||||
{"temp_buffers", PGC_USERSET, RESOURCES_MEM,
|
||||
gettext_noop("Sets the maximum number of temporary buffers used by each session."),
|
||||
|
@ -79,5 +79,6 @@ extern PGDLLIMPORT shmem_startup_hook_type shmem_startup_hook;
|
||||
|
||||
extern Size CalculateShmemSize(int *num_semaphores);
|
||||
extern void CreateSharedMemoryAndSemaphores(void);
|
||||
extern void InitializeShmemGUCs(void);
|
||||
|
||||
#endif /* IPC_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user