The documentation of effective_io_concurrency says Asynchronous I/O depends on an effective <function>posix_fadvise</> function, which some operating systems lack. If the function is not present then setting this parameter to anything but zero will result in an error.
This is not correct, because on unsupported systems, it is an error to set this parameter to anything, including zero, because it is set to PGC_INTERNAL. I think this is a mistake. For example, we allow setting ssl to false even if SSL support is not compiled in. I propose the attached patch to correct this.
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 9494439..0229f54 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1892,6 +1892,10 @@ <title>Asynchronous Behavior</title> in an error. On some operating systems (e.g., Solaris), the function is present but does not actually do anything. </para> + + <para> + The default is 1 on supported systems, otherwise 0. + </para> </listitem> </varlistentry> diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index d208314..d438128 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -2269,11 +2269,7 @@ static struct config_int ConfigureNamesInt[] = { {"effective_io_concurrency", -#ifdef USE_PREFETCH PGC_USERSET, -#else - PGC_INTERNAL, -#endif RESOURCES_ASYNCHRONOUS, gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."), gettext_noop("For RAID arrays, this should be approximately the number of drive spindles in the array.") diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index c8ff2cb..e6c9e48 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -1288,6 +1288,12 @@ setup_config(void) conflines = replace_token(conflines, "#dynamic_shared_memory_type = posix", repltok); +#if !USE_PREFETCH + conflines = replace_token(conflines, + "#effective_io_concurrency = 1", + "#effective_io_concurrency = 0"); +#endif + snprintf(path, sizeof(path), "%s/postgresql.conf", pg_data); writefile(path, conflines);
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers