Мы используем Redhat 6.3 с 30 ГБ оперативной памяти для размещения нашего сервера Postgres.
Значение shmmax (по умолчанию) - 68 719 476 736.
На некоторых форумах я читал, что значение shmmax, превышающее ОЗУ, вызывает обширную подкачку, но на форумах Redhat он предупреждает об изменении параметра ядра, который уже настроен на значение, превышающее минимальные требования для среды.
В ServerFault я читал, что это, вероятно, не влияет.
Так есть ли какое-либо влияние наличия shmmax value> RAM на сервере БД, или ядро понимает это и обрабатывает это соответствующим образом?
Спасибо
Нет никаких практических последствий наличия SHMMAX
> физическая оперативная память, если только ты действительно начинаешь с помощью что RAM. Просто имейте в виду, что если вы начнете выделять больше общей памяти, чем доступно в вашей системе ОЗУ, ваша система поменяется местами (как и в любой другой раз, когда вы перераспределяете ОЗУ), что, безусловно, убивает производительность.
Обратите внимание, что в последних версиях Postgres (9.3.0 и новее) Postgres использует разделяемую память POSIX и mmap()
, что снижает потребность в общей памяти System V.
Если вы обновитесь до Postgres 9.3, настройте SHMMAX
/ SHMALL
параметров, вероятно, можно полностью избежать, если у вас нет необычной среды (например, запуска нескольких десятков кластеров Postgres на одной машине).