我们使用带有 30G RAM 的 Redhat 6.3 来托管我们的 Postgres 服务器。
(默认)shmmax 值为 68,719,476,736
在一些论坛上,我读到,shmmax 值大于 RAM 会导致大量分页,但在 Redhat 论坛上,它警告不要更改已配置为大于环境最低要求的值的内核参数。
在 ServerFault 中我读到这可能没有影响。
那么,在 DB 服务器中 shmmax 值 > RAM 是否会造成任何影响,或者内核是否理解这一点并进行适当的处理?
谢谢
答案1
SHMMAX
拥有物理 RAM没有实际意义,除非你实际上开始使用RAM。请注意,如果您开始分配比系统可用 RAM 更多的共享内存,您的系统将进行交换(就像您过度分配 RAM 的其他任何时候一样),这肯定会影响性能。
请注意,在最新版本的 Postgres (9.3.0 及更高版本) Postgres 使用 POSIX 共享内存 & mmap()
,这减少了对 System V 共享内存的需求。
如果您升级到 Postgres 9.3,除非您有一个不寻常的环境(例如在一台机器上运行几十个 Postgres 集群),否则可能完全可以避免调整SHMMAX
/参数。SHMALL