Update documentation to mention huge pages on other OSes

Previously, the docs implied that only Linux and Windows could use huge
pages.  That's not quite true: it's just that we only know how to
request them explicitly on those OSes.  Be more explicit about what
huge_pages really does and mention that some OSes may use huge pages
automatically.

Author: Thomas Munro and Catalin Iacob
Reviewed-By: Justin Pryzby, Peter Eisentraut
Discussion: https://postgr.es/m/CAEepm=3qzR-hfjepymohuC4XO5phxoSoipOjm6BEhnJHjNR+jg@mail.gmail.com
This commit is contained in:
Peter Eisentraut 2018-01-25 11:14:24 -05:00
parent 0b5e33f667
commit 2a5ecb56d2
1 changed files with 23 additions and 10 deletions

View File

@ -1372,14 +1372,20 @@ include_dir 'conf.d'
</term>
<listitem>
<para>
Enables/disables the use of huge memory pages. Valid values are
<literal>try</literal> (the default), <literal>on</literal>,
and <literal>off</literal>.
Controls whether huge pages are requested for the main shared memory
area. Valid values are <literal>try</literal> (the default),
<literal>on</literal>, and <literal>off</literal>. With
<varname>huge_pages</varname> set to <literal>try</literal>, the
server will try to request huge pages, but fall back to the default if
that fails. With <literal>on</literal>, failure to request huge pages
will prevent the server from starting up. With <literal>off</literal>,
huge pages will not be requested.
</para>
<para>
At present, this feature is supported only on Linux and Windows. The
setting is ignored on other systems when set to <literal>try</literal>.
At present, this setting is supported only on Linux and Windows. The
setting is ignored on other systems when set to
<literal>try</literal>.
</para>
<para>
@ -1401,11 +1407,18 @@ include_dir 'conf.d'
</para>
<para>
With <varname>huge_pages</varname> set to <literal>try</literal>,
the server will try to use huge pages, but fall back to using
normal allocation if that fails. With <literal>on</literal>, failure
to use huge pages will prevent the server from starting up. With
<literal>off</literal>, huge pages will not be used.
Note that this setting only affects the main shared memory area.
Operating systems such as Linux, FreeBSD, and Illumos can also use
huge pages (also known as <quote>super</quote> pages or
<quote>large</quote> pages) automatically for normal memory
allocation, without an explicit request from
<productname>PostgreSQL</productname>. On Linux, this is called
<quote>transparent huge pages</quote><indexterm><primary>transparent
huge pages</primary></indexterm> (THP). That feature has been known to
cause performance degradation with
<productname>PostgreSQL</productname> for some users on some Linux
versions, so its use is currently discouraged (unlike explicit use of
<varname>huge_pages</varname>).
</para>
</listitem>
</varlistentry>