diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 4dc1277..0006090 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1128,10 +1128,7 @@ include 'filename' The use of huge TLB pages results in smaller page tables and less CPU time spent on memory management, increasing performance. For more details, see - the Debian wiki. - Remember that you will need at least shared_buffers / huge page size + - 1 huge TLB pages. So for example for a system with 6GB shared buffers - and a hugepage size of 2kb of you will need at least 3156 huge pages. + . diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml index bbb808f..f172526 100644 --- a/doc/src/sgml/runtime.sgml +++ b/doc/src/sgml/runtime.sgml @@ -1307,6 +1307,55 @@ echo -1000 > /proc/self/oom_score_adj + + + Linux huge TLB pages + + + To enable this feature in PostgreSQL you need a + kernel with CONFIG_HUGETLBFS=y and + CONFIG_HUGETLB_PAGE=y. You also have to tune the system + setting vm.nr_hugepages. To calculate the number of + necessary huge pages start PostgreSQL without + huge pages enabled and check the VmPeak value from the + proc filesystem: + +$ head -1 /path/to/data/directory/postmaster.pid +4170 +$ grep ^VmPeak /proc/4170/status +VmPeak: 6490428 kB + + 6490428 / 2048 + (PAGE_SIZE is 2MB in this case) are + roughly 3169.154 huge pages, so you will need at + least 3170 huge pages: + +$ sysctl -w vm.nr_hugepages=3170 + + Sometimes the kernel is not able to allocate the desired number of huge + pages, so it might be necessary to repeat that command or to reboot. Don't + forget to add an entry to /etc/sysctl.conf to persist + this setting through reboots. + + + + The default behavior for huge pages in + PostgreSQL is to use them when possible and + to fallback to normal pages when failing. To enforce the use of huge + pages, you can set + huge_tlb_pages + to on. Note that in this case + PostgreSQL will fail to start if not enough huge + pages are available. + + + + For a detailed description of the Linux huge + pages feature have a look + at https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt. + + +