From fc34b0d9de27ab5ac2887da00b3892bdabd89e45 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Mon, 16 Mar 2020 12:31:34 +1300 Subject: Introduce a maintenance_io_concurrency setting. Introduce a GUC and a tablespace option to control I/O prefetching, much like effective_io_concurrency, but for work that is done on behalf of many client sessions. Use the new setting in heapam.c instead of the hard-coded formula effective_io_concurrency + 10 introduced by commit 558a9165e08. Go with a default value of 10 for now, because it's a round number pretty close to the value used for that existing case. Discussion: https://postgr.es/m/CA%2BhUKGJUw08dPs_3EUcdO6M90GnjofPYrWp4YSLaBkgYwS-AqA%40mail.gmail.com --- src/backend/utils/cache/spccache.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/backend/utils/cache/spccache.c') diff --git a/src/backend/utils/cache/spccache.c b/src/backend/utils/cache/spccache.c index c4a0f719fb5..e0c3c1b1c11 100644 --- a/src/backend/utils/cache/spccache.c +++ b/src/backend/utils/cache/spccache.c @@ -221,3 +221,17 @@ get_tablespace_io_concurrency(Oid spcid) else return spc->opts->effective_io_concurrency; } + +/* + * get_tablespace_maintenance_io_concurrency + */ +int +get_tablespace_maintenance_io_concurrency(Oid spcid) +{ + TableSpaceCacheEntry *spc = get_tablespace(spcid); + + if (!spc->opts || spc->opts->maintenance_io_concurrency < 0) + return maintenance_io_concurrency; + else + return spc->opts->maintenance_io_concurrency; +} -- cgit v1.2.3