From 020156f7cbbec161b2bc57970dc573f5045a1997 Mon Sep 17 00:00:00 2001 From: Melanie Plageman Date: Tue, 5 Dec 2023 07:41:06 -0500 Subject: [PATCH v2 05/10] Add guc target_freeze_duration Add target_freeze_duration, a guc specifying the minimum time in seconds a page should stay frozen. This will be used to measure and control vacuum's opportunistic page freezing behavior in future commits. --- src/backend/utils/init/globals.c | 1 + src/backend/utils/misc/guc_tables.c | 11 +++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + src/include/miscadmin.h | 1 + 4 files changed, 14 insertions(+) diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c index 60bc1217fb..89bad73720 100644 --- a/src/backend/utils/init/globals.c +++ b/src/backend/utils/init/globals.c @@ -149,6 +149,7 @@ int VacuumCostPageMiss = 2; int VacuumCostPageDirty = 20; int VacuumCostLimit = 200; double VacuumCostDelay = 0; +int target_freeze_duration = 1; int64 VacuumPageHit = 0; int64 VacuumPageMiss = 0; diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index 6474e35ec0..4cc1970bec 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -2465,6 +2465,17 @@ struct config_int ConfigureNamesInt[] = NULL, NULL, NULL }, + { + {"target_freeze_duration", PGC_USERSET, AUTOVACUUM, + gettext_noop("minimum amount of time in seconds that a page should stay frozen."), + NULL, + GUC_UNIT_S + }, + &target_freeze_duration, + 1, 0, 10000000, + NULL, NULL, NULL + }, + { {"max_files_per_process", PGC_POSTMASTER, RESOURCES_KERNEL, gettext_noop("Sets the maximum number of simultaneously open files for each server process."), diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index cf9f283cfe..1a9adcc8f1 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -664,6 +664,7 @@ #autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for # autovacuum, -1 means use # vacuum_cost_limit +#target_freeze_duration = 1 # desired time for page to stay frozen in seconds #------------------------------------------------------------------------------ diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index f0cc651435..70bad41505 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -279,6 +279,7 @@ extern PGDLLIMPORT int VacuumCostPageMiss; extern PGDLLIMPORT int VacuumCostPageDirty; extern PGDLLIMPORT int VacuumCostLimit; extern PGDLLIMPORT double VacuumCostDelay; +extern PGDLLIMPORT int target_freeze_duration; extern PGDLLIMPORT int64 VacuumPageHit; extern PGDLLIMPORT int64 VacuumPageMiss; -- 2.37.2