postgres.git / summary / log / commit / refs

commit    177ff78ddb11de94d653e4b3a93c16358b32af2d
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Tue Feb 16 05:49:47 2016 +0000

    Correct the formulas for System V IPC parameters SEMMNI and SEMMNS in docs.
    
    In runtime.sgml, the old formulas for calculating the reasonable
    values of SEMMNI and SEMMNS were incorrect. They have forgotten to
    count the number of semaphores which both the checkpointer process
    (introduced in 9.2) and the background worker processes (introduced
    in 9.3) need.
    
    This commit fixes those formulas so that they count the number of
    semaphores which the checkpointer process and the background worker
    processes need.
    
    Report and patch by Kyotaro Horiguchi. Only the patch for 9.3 was
    modified by me. Back-patch to 9.2 where the checkpointer process was
    added and the number of needed semaphores was increased.
    
    Author: Kyotaro Horiguchi
    Reviewed-by: Fujii Masao
    Backpatch: 9.2
    Discussion: http://www.postgresql.org/message-id/20160203.125119.66820697.horiguchi.kyotaro@lab.ntt.co.jp


doc/src/sgml/runtime.sgml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 6d5b1082d2d..fba67a37c79 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -645,13 +645,13 @@ psql: could not connect to server: No such file or directory <row> <entry><varname>SEMMNI</></> <entry>Maximum number of semaphore identifiers (i.e., sets)</> - <entry>at least <literal>ceil((max_connections + autovacuum_max_workers + 4) / 16)</literal></> + <entry>at least <literal>ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16)</literal></> </row> <row> <entry><varname>SEMMNS</></> <entry>Maximum number of semaphores system-wide</> - <entry><literal>ceil((max_connections + autovacuum_max_workers + 4) / 16) * 17</literal> plus room for other applications</> + <entry><literal>ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16) * 17</literal> plus room for other applications</> </row> <row> @@ -699,20 +699,22 @@ psql: could not connect to server: No such file or directory <para> <productname>PostgreSQL</> uses one semaphore per allowed connection - (<xref linkend="guc-max-connections">) and allowed autovacuum worker - process (<xref linkend="guc-autovacuum-max-workers">), in sets of 16. + (<xref linkend="guc-max-connections">), allowed autovacuum worker process + (<xref linkend="guc-autovacuum-max-workers">) and allowed background + process (<xref linkend="guc-max-worker-processes">), in sets of 16. Each such set will also contain a 17th semaphore which contains a <quote>magic number</quote>, to detect collision with semaphore sets used by other applications. The maximum number of semaphores in the system is set by <varname>SEMMNS</>, which consequently must be at least as high as <varname>max_connections</> plus - <varname>autovacuum_max_workers</>, plus one extra for each 16 + <varname>autovacuum_max_workers</> plus <varname>max_worker_processes</>, + plus one extra for each 16 allowed connections plus workers (see the formula in <xref linkend="sysvipc-parameters">). The parameter <varname>SEMMNI</> determines the limit on the number of semaphore sets that can exist on the system at one time. Hence this parameter must be at - least <literal>ceil((max_connections + autovacuum_max_workers + 4) / 16)</>. + least <literal>ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16)</>. Lowering the number of allowed connections is a temporary workaround for failures, which are usually confusingly worded <quote>No space [parent: 73ca21c7ac2a]