diff options
-rw-r--r-- | doc/src/sgml/config.sgml | 38 | ||||
-rw-r--r-- | src/backend/utils/misc/postgresql.conf.sample | 2 | ||||
-rw-r--r-- | src/include/storage/bufmgr.h | 2 |
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 |