我们正在运行PGSQL 9.2
,以下是硬件规格
OS: CentOS7 64bit
CPU: 24
Memory: 32GB
Disk: SSD
我想计算 shmmax/shmall 值,那么有什么好方法吗?我在 Google 上搜索,有人说是总内存的 50%。但是在我的机器上只有 PGSQL 在运行,那么为什么不是总内存的 80%?
我可以配置kernel.shmmax
28GB 吗?并保留 4G 用于 Linux 操作系统。
你有什么建议?
答案1
shmmax
并且shmall
不是分配,它们是内核中的控制旋钮,允许您控制最大共享内存段大小和共享内存页面的数量。
引自sysctl 文档:
shmall:
This parameter sets the total amount of shared memory pages that
can be used system wide. Hence, SHMALL should always be at least
ceil(shmmax/PAGE_SIZE).
If you are not sure what the default PAGE_SIZE is on your Linux
system, you can run the following command:
# getconf PAGE_SIZE
==============================================================
shmmax:
This value can be used to query and set the run time limit
on the maximum shared memory segment size that can be created.
Shared memory segments up to 1Gb are now supported in the
kernel. This value defaults to SHMMAX
我建议您采纳有关这些 sysctl 变量设置的建议,因为它们对于进一步调整 PostgreSQL 至关重要,并且这些建议通常足以完成所需的任务。=)
一旦设置了这些 sysctl,将其设置shared_buffers
为 RAM 的 25%,并将effective_cache_size
其设置为 75%,postgresql.conf
将使您能够有效地使用服务器上的 RAM。
我还建议关注 PostgreSQL Wiki 条目调整你的 PostgreSQL 服务器或者获取 Greg Smith 的 PostgreSQL 9.0 High Performance 书籍以获得有关正确调整和维护服务器的更多信息。=)