类型: | enum |
默认: | try |
上下文: | postmaster |
重新开始: | true |
值: | [off, on, try] |
以来: | 9.4 |
控制是否为主共享内存区域请求巨型页。有效值是try
(默认)、on
以及off
。如果huge_pages
被设置为try
,则服务器将尝试请求巨型页,但是如果失败会退回到默认的方式。如果为on
,请求巨型页失败将使得服务器无法启动。如果为off
,则不会请求巨型页。
当前,只有Linux和Windows上支持这个设置。在其他系统上这个参数被设置为try
时,它会被忽略。
巨型页面的使用会导致更小的页面表以及花费在内存管理上的 CPU 时间更少,从而提高性能。更多有关Linux上使用巨型页面的细节请见linux-huge-pages。
巨型页在Windows上被称为大页面。要使用大页面,需要为运行PostgreSQL的Windows用户账号分配Lock Pages in Memory的用户权限。可以使用Windows的组策略工具(gpedit.msc)来分配用户权限Lock Pages in Memory。为了在命令窗口以单进程(而不是Windows服务)的方式启动数据库服务器,命令窗口必须以管理员身份运行或者禁用用户访问控制(UAC)。当UAC被启用时,普通的命令窗口会在启动时收回用户权限Lock Pages in Memory。
注意这种设置仅影响主共享内存区域。Linux、FreeBSD以及Illumos之类的操作系统也能为普通内存分配自动使用巨型页(也被称为超级页或者大页面),而不需要来自PostgreSQL的显式请求。在Linux上,这被称为transparent huge pagestransparent huge pages(THP,透明巨型页)。已知这种特性对某些Linux版本上的某些用户会导致PostgreSQL的性能退化,因此当前并不鼓励使用它(与huge_pages
的显式使用不同)。