我已经在网上阅读了关于提高postgres性能的所有内容,但SHMMAX和SHMALL的“正确”值仍然让我无法理解.
共识似乎是SHMMAX = total_memory / 4,SHMALL = total_memory / 2是安全起始值.
但是,SHMALL可以用页面或字节来衡量,我找不到有关Ubuntu上使用的任何信息.
Ubuntu(或更普遍的Debian)是否使用SHMALL的页面或字节?
对于我使用的所有
Linux系统,SHMALL以页为单位进行测量,SHMMAX以字节为单位进行测量.我想您可以使用ipcs命令检查您的系统,该命令总是在输出时以KB为单位转换上述参数,并将其与sysctl值进行比较:
[aseryozhin@centos ~]$ipcs -l ------ Shared Memory Limits -------- max number of segments = 4096 // SHMMNI max seg size (kbytes) = 524288 // SHMMAX max total shared memory (kbytes) = 8388608 // SHMALL min seg size (bytes) = 1 [aseryozhin@centos ~]$sysctl -e kernel.shmmax kernel.shmmax = 536870912 [aseryozhin@centos ~]$sysctl -e kernel.shmall kernel.shmall = 2097152 [aseryozhin@centos ~]$getconf PAGE_SIZE 4096
SHMMAX:524288 * 1024 = 536870912
SHMALL:8388608 * 1024/4096 = 2097152