At Thu, 4 Feb 2016 21:43:04 +0900, Fujii Masao <masao.fu...@gmail.com> wrote in <cahgqgwhgbsat29_zqk3axg4a5lsa0juv579vkgwx3r_g0ko...@mail.gmail.com> > On Wed, Feb 3, 2016 at 12:51 PM, Kyotaro HORIGUCHI > <horiguchi.kyot...@lab.ntt.co.jp> wrote: > > Hello, I found that the formulas to calculate SEMMNI and SEMMNS > > are incorrect in 9.2 and later. > > > > http://www.postgresql.org/docs/9.5/static/kernel-resources.html > > > > But actually the number of semaphores PostgreSQL needs is > > calculated as following in 9.4 and later. ... > > So, the formula for SEMMNI should be > > > > ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) > > / 16) > > > > and SEMMNS should have the same fix. > > > > > > In 9.3 and 9.2, the documentation says the same thing but ... > > ceil((max_connections + autovacuum_max_workers + 5) / 16) > > > > In 9.1, NUM_AUXILIARY_PROCS is 3 so the documentations is correct. > > Good catch!
Thanks. > ISTM that you also need to change the descriptions about SEMMNI and SEMMNS > under the Table 17-1. Oops! Thank you for pointing it out. The original description doesn't mention the magic-number ('5' in the above formulas, which previously was '4') so I haven't added anything about it. Process of which the number is limited by max_worker_processes is called 'background process' (not 'backend worker') in the documentation so I used the name to mention it in the additional description. The difference in the body text for 9.2, 9.3 is only a literal '4' to '5' in the formula. regards, -- Kyotaro Horiguchi NTT Open Source Software Center
>From 6ed2f296cc5899f75a2e817f470e5da07bcb0d2c Mon Sep 17 00:00:00 2001 From: Kyotaro Horiguchi <horiguchi.kyot...@lab.ntt.co.jp> Date: Wed, 3 Feb 2016 11:35:43 +0900 Subject: [PATCH] Fix the formula to calculate SEMMNI and SEMMNS in documentation --- doc/src/sgml/runtime.sgml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index 0db3807..2bc0a91 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 + 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 + 5) / 16) * 17</literal> plus room for other applications</> </row> <row> @@ -712,7 +712,7 @@ psql: could not connect to server: No such file or directory 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 + 5) / 16)</>. Lowering the number of allowed connections is a temporary workaround for failures, which are usually confusingly worded <quote>No space -- 1.8.3.1
>From c196c82665e4081a6f90938ac86bb63e4e60e45c Mon Sep 17 00:00:00 2001 From: Kyotaro Horiguchi <horiguchi.kyot...@lab.ntt.co.jp> Date: Wed, 3 Feb 2016 11:07:12 +0900 Subject: [PATCH] Fix the formula to calculate SEMMNI and SEMMNS in documentation --- 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 cda05f5..dd42dd0 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</> and <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 -- 1.8.3.1
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers