At Thu, 4 Feb 2016 21:43:04 +0900, Fujii Masao <[email protected]> wrote in
<cahgqgwhgbsat29_zqk3axg4a5lsa0juv579vkgwx3r_g0ko...@mail.gmail.com>
> On Wed, Feb 3, 2016 at 12:51 PM, Kyotaro HORIGUCHI
> <[email protected]> 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 <[email protected]>
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 <[email protected]>
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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers