Skip to content

Commit 2a5ecb5

Browse files
committed
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
1 parent 0b5e33f commit 2a5ecb5

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

doc/src/sgml/config.sgml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,14 +1372,20 @@ include_dir 'conf.d'
13721372
</term>
13731373
<listitem>
13741374
<para>
1375-
Enables/disables the use of huge memory pages. Valid values are
1376-
<literal>try</literal> (the default), <literal>on</literal>,
1377-
and <literal>off</literal>.
1375+
Controls whether huge pages are requested for the main shared memory
1376+
area. Valid values are <literal>try</literal> (the default),
1377+
<literal>on</literal>, and <literal>off</literal>. With
1378+
<varname>huge_pages</varname> set to <literal>try</literal>, the
1379+
server will try to request huge pages, but fall back to the default if
1380+
that fails. With <literal>on</literal>, failure to request huge pages
1381+
will prevent the server from starting up. With <literal>off</literal>,
1382+
huge pages will not be requested.
13781383
</para>
13791384

13801385
<para>
1381-
At present, this feature is supported only on Linux and Windows. The
1382-
setting is ignored on other systems when set to <literal>try</literal>.
1386+
At present, this setting is supported only on Linux and Windows. The
1387+
setting is ignored on other systems when set to
1388+
<literal>try</literal>.
13831389
</para>
13841390

13851391
<para>
@@ -1401,11 +1407,18 @@ include_dir 'conf.d'
14011407
</para>
14021408

14031409
<para>
1404-
With <varname>huge_pages</varname> set to <literal>try</literal>,
1405-
the server will try to use huge pages, but fall back to using
1406-
normal allocation if that fails. With <literal>on</literal>, failure
1407-
to use huge pages will prevent the server from starting up. With
1408-
<literal>off</literal>, huge pages will not be used.
1410+
Note that this setting only affects the main shared memory area.
1411+
Operating systems such as Linux, FreeBSD, and Illumos can also use
1412+
huge pages (also known as <quote>super</quote> pages or
1413+
<quote>large</quote> pages) automatically for normal memory
1414+
allocation, without an explicit request from
1415+
<productname>PostgreSQL</productname>. On Linux, this is called
1416+
<quote>transparent huge pages</quote><indexterm><primary>transparent
1417+
huge pages</primary></indexterm> (THP). That feature has been known to
1418+
cause performance degradation with
1419+
<productname>PostgreSQL</productname> for some users on some Linux
1420+
versions, so its use is currently discouraged (unlike explicit use of
1421+
<varname>huge_pages</varname>).
14091422
</para>
14101423
</listitem>
14111424
</varlistentry>

0 commit comments

Comments
 (0)