index f55f38cb85bd94dd43f089834e655e649f41d312..0d02e21a1ab1101d6ac6933a638e17c305bdd4d1 100644 (file)
session attempts to initiate in parallel. The allowed range is
<literal>1</literal> to <literal>1000</literal>, or
<literal>0</literal> to disable issuance of asynchronous I/O requests.
- The default is <literal>16</literal> on supported systems, otherwise
- <literal>0</literal>.
+ The default is <literal>16</literal>.
</para>
<para>
</para>
<para>
- On systems without prefetch advice support, attempting to configure
- any value other than <literal>0</literal> will error out.
+ On systems with prefetch advice support,
+ <varname>effective_io_concurrency</varname> also controls the
+ prefetch distance.
</para>
<para>
for maintenance work that is done on behalf of many client sessions.
</para>
<para>
- The default is <literal>16</literal> on supported systems, otherwise
- <literal>0</literal>. This value can be overridden for tables in a
- particular tablespace by setting the tablespace parameter of the same
- name (see <xref linkend="sql-altertablespace"/>).
+ The default is <literal>16</literal>. This value can be overridden
+ for tables in a particular tablespace by setting the tablespace
+ parameter of the same name (see <xref
+ linkend="sql-altertablespace"/>).
</para>
</listitem>
</varlistentry>
index 6ec863400d17b391fb7a20e334dad252dd0c1803..d0e08089ddb96b567f59a5b95e5c3fb3cba23e99 100644 (file)
@@ -88,7 +88,7 @@ ALTER TABLESPACE <replaceable>name</replaceable> RESET ( <replaceable class="par
and <varname>maintenance_io_concurrency</varname>.
Setting these values for a particular tablespace will override the
planner's usual estimate of the cost of reading pages from tables in
- that tablespace, and the executor's prefetching behavior, as established
+ that tablespace, and how many concurrent I/Os are issued, as established
by the configuration parameters of the
same name (see <xref linkend="guc-seq-page-cost"/>,
<xref linkend="guc-random-page-cost"/>,
index 9d5ab025261da02250137071a0f27c03d1b5f42e..b77e774c53f9268b365b1fb52b1db0636c5452f9 100644 (file)
@@ -110,7 +110,7 @@ CREATE TABLESPACE <replaceable class="parameter">tablespace_name</replaceable>
and <varname>maintenance_io_concurrency</varname>.
Setting these values for a particular tablespace will override the
planner's usual estimate of the cost of reading pages from tables in
- that tablespace, and the executor's prefetching behavior, as established
+ that tablespace, and how many concurrent I/Os are issued, as established
by the configuration parameters of the
same name (see <xref linkend="guc-seq-page-cost"/>,
<xref linkend="guc-random-page-cost"/>,
index 645b5c00467d11ffb42f32fd404e22a89760a467..46c1dce222d1003bdfcddcdb655f739bbcf4473b 100644 (file)
RELOPT_KIND_TABLESPACE,
ShareUpdateExclusiveLock
},
-#ifdef USE_PREFETCH
-1, 0, MAX_IO_CONCURRENCY
-#else
- 0, 0, 0
-#endif
},
{
{
RELOPT_KIND_TABLESPACE,
ShareUpdateExclusiveLock
},
-#ifdef USE_PREFETCH
-1, 0, MAX_IO_CONCURRENCY
-#else
- 0, 0, 0
-#endif
},
{
{
index 84f044a19599cf7e372b9550bf7dd8e4e7e2f616..a9f2a3a30624580626b3518dd7c655e88358008d 100644 (file)
@@ -1145,7 +1145,6 @@ check_cluster_name(char **newval, void **extra, GucSource source)
void
assign_maintenance_io_concurrency(int newval, void *extra)
{
-#ifdef USE_PREFETCH
/*
* Reconfigure recovery prefetching, because a setting it depends on
* changed.
@@ -1153,7 +1152,6 @@ assign_maintenance_io_concurrency(int newval, void *extra)
maintenance_io_concurrency = newval;
if (AmStartupProcess())
XLogPrefetchReconfigure();
-#endif
}
/*
@@ -1249,34 +1247,6 @@ check_default_with_oids(bool *newval, void **extra, GucSource source)
return true;
}
-bool
-check_effective_io_concurrency(int *newval, void **extra, GucSource source)
-{
-#ifndef USE_PREFETCH
- if (*newval != 0)
- {
- GUC_check_errdetail("\"%s\" must be set to 0 on platforms that lack support for issuing read-ahead advice.",
- "effective_io_concurrency");
- return false;
- }
-#endif /* USE_PREFETCH */
- return true;
-}
-
-bool
-check_maintenance_io_concurrency(int *newval, void **extra, GucSource source)
-{
-#ifndef USE_PREFETCH
- if (*newval != 0)
- {
- GUC_check_errdetail("\"%s\" must be set to 0 on platforms that lack support for issuing read-ahead advice.",
- "maintenance_io_concurrency");
- return false;
- }
-#endif /* USE_PREFETCH */
- return true;
-}
-
bool
check_ssl(bool *newval, void **extra, GucSource source)
{
index 76c7c6bb4b17141189da730e9eb7828799c4de27..4eaeca89f2c7aea3b3cdb58bd34b17ee77a9272e 100644 (file)
&effective_io_concurrency,
DEFAULT_EFFECTIVE_IO_CONCURRENCY,
0, MAX_IO_CONCURRENCY,
- check_effective_io_concurrency, NULL, NULL
+ NULL, NULL, NULL
},
{
&maintenance_io_concurrency,
DEFAULT_MAINTENANCE_IO_CONCURRENCY,
0, MAX_IO_CONCURRENCY,
- check_maintenance_io_concurrency, assign_maintenance_io_concurrency,
+ NULL, assign_maintenance_io_concurrency,
NULL
},
index 7c12434efa2f15a3f2b9d21fbe524dc900c3cba0..ff56a1f0732c56977cb020224be5556929a41687 100644 (file)
# - I/O -
#backend_flush_after = 0 # measured in pages, 0 disables
-#effective_io_concurrency = 16 # 1-1000; 0 disables prefetching
-#maintenance_io_concurrency = 16 # 1-1000; 0 disables prefetching
+#effective_io_concurrency = 16 # 1-1000; 0 disables issuing multiple simultaneous IO requests
+#maintenance_io_concurrency = 16 # 1-1000; same as effective_io_concurrency
#io_max_combine_limit = 128kB # usually 1-128 blocks (depends on OS)
# (change requires restart)
#io_combine_limit = 128kB # usually 1-128 blocks (depends on OS)
index 22b7d31b16549decc3d747a8a43cc26089c43865..c17fda2bc81d0b53c88fabb3980f28c6706d2e58 100644 (file)
repltok, true);
#endif
-#ifndef USE_PREFETCH
- conflines = replace_guc_value(conflines, "effective_io_concurrency",
- "0", true);
-#endif
-
#ifdef WIN32
conflines = replace_guc_value(conflines, "update_process_title",
"off", true);
index 867ae9facb5172a94b40e229017734ec200c465c..f2192ceb2719b0cec4de09029dcdb0cb32bd247d 100644 (file)
@@ -158,14 +158,8 @@ extern PGDLLIMPORT int bgwriter_lru_maxpages;
extern PGDLLIMPORT double bgwriter_lru_multiplier;
extern PGDLLIMPORT bool track_io_timing;
-/* only applicable when prefetching is available */
-#ifdef USE_PREFETCH
#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 16
#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 16
-#else
-#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 0
-#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 0
-#endif
extern PGDLLIMPORT int effective_io_concurrency;
extern PGDLLIMPORT int maintenance_io_concurrency;
index 0f1e74f96c9b57cb04e276594669b8c25411baab..799fa7ace6847ba33c4e8dd41c6aaf87a3d5ad55 100644 (file)
@@ -61,8 +61,6 @@ extern bool check_default_text_search_config(char **newval, void **extra, GucSou
extern void assign_default_text_search_config(const char *newval, void *extra);
extern bool check_default_with_oids(bool *newval, void **extra,
GucSource source);
-extern bool check_effective_io_concurrency(int *newval, void **extra,
- GucSource source);
extern bool check_huge_page_size(int *newval, void **extra, GucSource source);
extern void assign_io_method(int newval, void *extra);
extern bool check_io_max_concurrency(int *newval, void **extra, GucSource source);
@@ -83,8 +81,6 @@ extern bool check_log_stats(bool *newval, void **extra, GucSource source);
extern bool check_log_timezone(char **newval, void **extra, GucSource source);
extern void assign_log_timezone(const char *newval, void *extra);
extern const char *show_log_timezone(void);
-extern bool check_maintenance_io_concurrency(int *newval, void **extra,
- GucSource source);
extern void assign_maintenance_io_concurrency(int newval, void *extra);
extern void assign_io_max_combine_limit(int newval, void *extra);
extern void assign_io_combine_limit(int newval, void *extra);