SHMMAX є параметр ядра, який використовується для визначення максимального розміру окремого сегмента спільної пам’яті, який може виділити процес Linux. До версії 9.2 PostgreSQL використовує System V (SysV), для якої потрібне налаштування SHMMAX. Після 9.2 PostgreSQL перейшов на спільну пам’ять POSIX. Тож тепер для цього потрібно менше байтів спільної пам’яті System V. 29 серпня 2018 р

shmmax : Максимальний розмір окремого сегмента спільної пам’яті, виражений у байтах. Значення має бути достатньо великим, щоб відповідати розміру загального сегмента спільної пам’яті для елемента. shmall : загальний розмір спільних сегментів пам'яті в системі, виражений у сторінках.

kernel.shmmax. Визначає максимальний розмір у байтах одного сегмента спільної пам’яті, який процес Linux може виділити у своєму віртуальному адресному просторі. kernel.shmmni. Визначає максимальну кількість сегментів спільної пам'яті, яку може обробляти сервер бази даних.

Стандартне значення параметра ядра shmmax у RedHat Linux зазвичай занизьке (32 Мб, 33554432 байт). Як наслідок цього, екземпляр Informix, якому потрібно виділити один спільний сегмент пам’яті розміром 320 Мб, фактично використовуватиме 10 сегментів Linux розміром 32 Мб.

Виконайте наступні дії:

  1. Увійдіть у систему Linux і відкрийте командне вікно.
  2. Виконайте таку команду: sysctl -w kernel.shmmax=268435456.
  3. Відкрийте файл /etc/sysctl.conf за допомогою редактора та додайте такий рядок:

Параметр SHMMAX є захисним параметром, який встановлює верхню межу того, який обсяг спільної пам’яті може запросити процес. Максимальне підтримуване значення SHMMAX у 32-розрядній системі становить 4 ГБ – 1 байт. SHMALL — це ділення SHMMAX/PAGE_SIZE, наприклад:. 1073741824/4096=262144.