diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 0db3807..5990905 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 + number of background 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 + number of background processes + 5) / 16) * 17</literal> plus room for other applications</>
        </row>
 
        <row>
@@ -699,20 +699,23 @@ 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 processes requesting shared memory access, 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 number of background
+    processes requesting shared memory access, 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 +
+    number of background processes + 5) / 16)</>.
     Lowering the number
     of allowed connections is a temporary workaround for failures,
     which are usually confusingly worded <quote>No space
