From: | "yanliang lei" <msdnchina(at)163(dot)com> |
---|---|
To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Ron <ronljohnsonjr(at)gmail(dot)com>, pgsql-admin(at)lists(dot)postgresql(dot)org, pgsql-docs(at)lists(dot)postgresql(dot)org |
Subject: | Re:Re:Re: PostgreSQL14.2 can not start because of huge_page_size is equal to 1048576 |
Date: | 2022-05-13 14:07:24 |
Message-ID: | 12aa613d.678c.180bdbede27.Coremail.msdnchina@163.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
on RHEL8.5 PostgreSQL 14.2 can enable non-default Hugepage size
the detail result is :
in the RHEL 8.X, PostgreSQL can use non-default hugepagesize, and in the RHEL 7.X, PostgreSQL can not use non-default hugepagesize!
so ,please modify pg documents(https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-HUGE-PAGES),
the following is the detail.
[pg142(at)rhel85 data]$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.5 (Ootpa)
[pg142(at)rhel85 data]$ uname -r
4.18.0-348.el8.x86_64
[pg142(at)rhel85 data]$
[pg142(at)rhel85 ~]$ grep ^Huge /proc/meminfo
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB ----->>> OS default hugepagesize is 1GB
Hugetlb: 0 kB
[pg142(at)rhel85 ~]$
[pg142(at)rhel85 ~]$ head -1 $PGDATA/postmaster.pid
1679
[pg142(at)rhel85 ~]$ pmap 1679| awk '/rw-s/ && /zero/ {print $2}'
828480K
[pg142(at)rhel85 ~]$
(828480K+256*1024)/2048=533 ----->>>PostgreSQL uses 533 hugepages which size is 2MB
in the /boot/grub2/grubenv file ,add: hugepagesz=2M hugepages=533
[root(at)rhel85 ~]# grub2-editenv - list | grep kernelopts
kernelopts=root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet default_hugepagesz=1G
[root(at)rhel85 ~]#
grub2-editenv - set "kernelopts=root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet default_hugepagesz=1G hugepagesz=2M hugepages=533"
grub2-editenv - list | grep kernelopts
systemctl reboot
after OS reboot, we can see :
root(at)rhel85 ~]# hugeadm --pool-list
Size Minimum Current Maximum Default
2097152 533 533 533
1073741824 0 0 0 *
[root(at)rhel85 ~]#
[root(at)rhel85 ~]# cat /proc/meminfo |grep -i huge
AnonHugePages: 16384 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB
Hugetlb: 1091584 kB
[root(at)rhel85 ~]#
then modify parameter huge_page_size=2048 in the postgreSQL 14.2 postgresql.conf
[pg142(at)rhel85 data]$ grep huge_page_size postgresql.conf
huge_page_size = 2048# zero for system default
[pg142(at)rhel85 data]$
[pg142(at)rhel85 data]$ pg_ctl start
waiting for server to start....2022-05-13 21:26:24.051 CST [1694] LOG: starting PostgreSQL 14.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-3), 64-bit
2022-05-13 21:26:24.051 CST [1694] LOG: listening on IPv6 address "::1", port 5432
2022-05-13 21:26:24.051 CST [1694] LOG: listening on IPv4 address "127.0.0.1", port 5432
2022-05-13 21:26:24.053 CST [1694] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2022-05-13 21:26:24.058 CST [1695] LOG: database system was shut down at 2022-05-13 21:22:22 CST
2022-05-13 21:26:24.063 CST [1694] LOG: database system is ready to accept connections
done
server started
[pg142(at)rhel85 data]$ pg_ctl status
pg_ctl: server is running (PID: 1694)
/home/pg142/soft/bin/postgres
[pg142(at)rhel85 data]$
[pg142(at)rhel85 data]$ psql -d postgres
psql (14.2)
Type "help" for help.
postgres=# show huge_page_size;
huge_page_size
----------------
2MB
(1 row)
postgres=# show huge_pages;
huge_pages
------------
try
(1 row)
postgres=#
At 2022-05-10 00:58:31, "yanliang lei" <msdnchina(at)163(dot)com> wrote:
Thanks a lot for your reply!
Oh,I see!
I will test this case in the rhel8.5( RHEL 8.5 is the latest version of RHEL so far)
I will post my test result through this email。
At 2022-05-10 00:27:14, "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>"yanliang lei" <msdnchina(at)163(dot)com> writes:
>> The DETAIL message says " huge_page_size must be 0", but you did not set huge_page_size to 0.
>> ---huge_page_size is the pg14 new parameter£¬The default value of this parameter is zero (0). When set to 0, the default huge page size on the system will be used.
>> in the pg 14 documents---¡®Non-default settings are currently supported only on Linux.¡¯ so £¬ I want to try to find a method to let PostgreSQL 14 to use non-default hugepagesize£¬
>
>The code that's throwing the error says
>
> /* Recent enough Linux only, for now. See GetHugePageSize(). */
>
>I don't know what "recent enough" is in this context, but evidently
>RHEL7 isn't it (no surprise considering that's a trailing-edge distro
>at this point).
>
>I don't find it surprising that the authors of this feature didn't
>try to document exactly which Linux versions it can be used on.
>Keeping such documentation accurate would be a nightmare.
>
> regards, tom lane
>
From | Date | Subject | |
---|---|---|---|
Next Message | A G | 2022-05-13 17:52:50 | Re: Losing records in PostgreSQL 9.6 |
Previous Message | Scott Ribe | 2022-05-11 23:50:33 | Re: help me understand logs |