在Redhat 6.3中,shmmax的值很高

我们使用Redhat 6.3和30G RAM来托pipe我们的Postgres服务器。

(默认)shmmax值为68,719,476,736

在一些论坛上我读到,shmmax值大于RAM会导致大量分页,但是在Redhat论坛中,它警告不要将已configuration的内核参数更改为大于环境最低要求的值。

在ServerFault中,我读过这可能没有影响。

那么在数据库服务器上有没有shmmax值> RAM的影响,或者内核能够理解这一点并适当地处理它?

谢谢

除非您真的开始使用 RAM, 否则 SHMMAX >物理RAM没有实际意义。 要知道,如果你开始分配更多的共享内存,那么你的系统将会交换内存(就像其他任何时候你过度分配内存一样),这肯定是一个性能杀手。

请注意,在Postgres( 9.3.0和更高版本 )的最新版本中,Postgres使用POSIX共享内存& mmap() ,这减less了对System V共享内存的需求。
如果升级到Postgres 9.3调整, SHMMAX / SHMALL参数可能完全避免,除非你有一个不寻常的环境(例如在一台机器上运行几十个Postgres群集)。