aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/config.sgml38
-rw-r--r--src/backend/utils/misc/postgresql.conf.sample2
-rw-r--r--src/include/storage/bufmgr.h2
3 files changed, 18 insertions, 24 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 7ece94474d9..8c82b39a89d 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2574,39 +2574,33 @@ include_dir 'conf.d'
</term>
<listitem>
<para>
- Sets the number of concurrent disk I/O operations that
+ Sets the number of concurrent storage I/O operations that
<productname>PostgreSQL</productname> expects can be executed
simultaneously. Raising this value will increase the number of I/O
- operations that any individual <productname>PostgreSQL</productname> session
- attempts to initiate in parallel. The allowed range is 1 to 1000,
- or zero to disable issuance of asynchronous I/O requests. Currently,
- this setting only affects bitmap heap scans.
+ operations that any individual <productname>PostgreSQL</productname>
+ 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>.
</para>
<para>
- For magnetic drives, a good starting point for this setting is the
- number of separate
- drives comprising a RAID 0 stripe or RAID 1 mirror being used for the
- database. (For RAID 5 the parity drive should not be counted.)
- However, if the database is often busy with multiple queries issued in
- concurrent sessions, lower values may be sufficient to keep the disk
- array busy. A value higher than needed to keep the disks busy will
- only result in extra CPU overhead.
- SSDs and other memory-based storage can often process many
- concurrent requests, so the best value might be in the hundreds.
+ Higher values will have the most impact on higher latency storage
+ where queries otherwise experience noticeable I/O stalls and on
+ devices with high IOPs. Unnecessarily high values may increase I/O
+ latency for all queries on the system
</para>
<para>
- Asynchronous I/O requires that the operating system supports issuing
- read-ahead advice. If there is no operating system support then
- setting this parameter to anything but zero will result in an error.
+ On systems without prefetch advice support, attempting to configure
+ any value other than <literal>0</literal> will error out.
</para>
<para>
- The default is 1 on supported systems, otherwise 0. 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"/>).
+ 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>
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index d2bd329a587..36cb64d7ebc 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -198,7 +198,7 @@
# - I/O -
#backend_flush_after = 0 # measured in pages, 0 disables
-#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching
+#effective_io_concurrency = 16 # 1-1000; 0 disables prefetching
#maintenance_io_concurrency = 10 # 1-1000; 0 disables prefetching
#io_combine_limit = 128kB # usually 1-32 blocks (depends on OS)
diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h
index 7c1e4316dde..b204e4731c1 100644
--- a/src/include/storage/bufmgr.h
+++ b/src/include/storage/bufmgr.h
@@ -152,7 +152,7 @@ extern PGDLLIMPORT bool track_io_timing;
/* only applicable when prefetching is available */
#ifdef USE_PREFETCH
-#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 1
+#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 16
#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 10
#else
#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 0