diff options
author | Robert Haas <rhaas@postgresql.org> | 2016-07-07 11:18:51 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2016-07-07 11:35:08 -0400 |
commit | d1f822e58597cac5000bf69b893cc236c5ef5fcb (patch) | |
tree | 4ea70f271626b6477142fde87a59e4969d35851d | |
parent | 62c8421e87b33b2e94f8a7842e1dd9aa1a286ffc (diff) | |
download | postgresql-d1f822e58597cac5000bf69b893cc236c5ef5fcb.tar.gz postgresql-d1f822e58597cac5000bf69b893cc236c5ef5fcb.zip |
Clarify resource utilization of parallel query.
temp_file_limit is a per-process limit, not a per-session limit across
all cooperating parallel processes; change wording accordingly, per a
suggestion from Tom Lane.
Also, document under max_parallel_workers_per_gather the fact that each
process involved in a parallel query may use as many resources as a
separate session. Caveat emptor.
Per a complaint from Peter Geoghegan.
-rw-r--r-- | doc/src/sgml/config.sgml | 20 | ||||
-rw-r--r-- | src/backend/utils/misc/guc.c | 2 | ||||
-rw-r--r-- | src/backend/utils/misc/postgresql.conf.sample | 2 |
3 files changed, 20 insertions, 4 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 061697b54cb..4e8c982dd59 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1603,7 +1603,7 @@ include_dir 'conf.d' </term> <listitem> <para> - Specifies the maximum amount of disk space that a session can use + Specifies the maximum amount of disk space that a process can use for temporary files, such as sort and hash temporary files, or the storage file for a held cursor. A transaction attempting to exceed this limit will be canceled. @@ -1613,7 +1613,7 @@ include_dir 'conf.d' </para> <para> This setting constrains the total space used at any instant by all - temporary files used by a given <productname>PostgreSQL</> session. + temporary files used by a given <productname>PostgreSQL</> process. It should be noted that disk space used for explicit temporary tables, as opposed to temporary files used behind-the-scenes in query execution, does <emphasis>not</emphasis> count against this limit. @@ -2011,6 +2011,22 @@ include_dir 'conf.d' be inefficient. The default value is 2. Setting this value to 0 disables parallel query execution. </para> + + <para> + Note that parallel queries may consume very substantially more + resources than non-parallel queries, because each worker process is + a completely separate process which has roughly the same impact on the + system as an additional user session. This should be taken into + account when choosing a value for this setting, as well as when + configuring other settings that control resource utilization, such + as <xref linkend="guc-work-mem">. Resource limits such as + <varname>work_mem</> are applied individually to each worker, + which means the total utilization may be much higher across all + processes than it would normally be for any single process. + For example, a parallel query using 4 workers may use up to 5 times + as much CPU time, memory, I/O bandwidth, and so forth as a query which + uses no workers at all. + </para> </listitem> </varlistentry> diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 60148b871b3..6ac5184b374 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -1947,7 +1947,7 @@ static struct config_int ConfigureNamesInt[] = { {"temp_file_limit", PGC_SUSET, RESOURCES_DISK, - gettext_noop("Limits the total size of all temporary files used by each session."), + gettext_noop("Limits the total size of all temporary files used by each process."), gettext_noop("-1 means no limit."), GUC_UNIT_KB }, diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index a0abc2c2e00..5faf22a37a5 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -138,7 +138,7 @@ # - Disk - -#temp_file_limit = -1 # limits per-session temp file space +#temp_file_limit = -1 # limits per-process temp file space # in kB, or -1 for no limit # - Kernel Resource Usage - |