The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Postgres и ограниченный размер shared memory. "
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Postgres и ограниченный размер shared memory. "  
Сообщение от a_bul on 04-Июл-08, 11:46 
Возникла задача настройки PostgreSQL в VPS.
Для контейнера OpenVZ выставлено ограничение shmpages = 32768 (страницы по 4К, итого 128Мб).
В контейнере установлен linux, и у него
kernel.shmmax = 33553332 - максимальный размер сегмента shared memory в байтах.
kernel.shmall = 2097152 - общий размер shared memory в страницах
kernel.shmmni = 4096 - максимально возможное число сегментов shared memory в масштабе всей системы

Всего памяти 512Мб. Размер базы пока 50 Мегов, но она растёт.

ipcs -a показывает, что сегменты совместно используемой памяти занимает только посгрес, а семафоры также использует apache. Ещё система должна использовать shared memory, но этого нигде не видно.
## Google, man не дали ответов на вопросы:
shmall - общий размер shared memory в страницах, а страница какого размера? По идее kernel.shmall для этого VPS должен быть равен 128 Мб., только в страницах.
kernel.shmmax выставлять в 128 Мб тоже неправильно, но и постгресу хочется отдать по максимуму. Как подобрать значение?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Postgres и ограниченный размер shared memory. "  
Сообщение от a_bul on 04-Июл-08, 15:55 
>shmall - общий размер shared memory в страницах, а страница какого размера?
>По идее kernel.shmall для этого VPS должен быть равен 128 Мб.,
>только в страницах.
>kernel.shmmax выставлять в 128 Мб тоже неправильно, но и постгресу хочется отдать
>по максимуму. Как подобрать значение?

Размер страницы определяется так:
getconf PAGE_SIZE
В нашем случае это 4096.

А SHMALL (kernel.shmall) вообще получается сферическим конём в вакууме судя по этим строчкам:
linux-2.6.19/include/linux/shm.h :

/*
* SHMMAX, SHMMNI and SHMALL are upper limits are defaults which can
* be increased by sysctl
*/

#define SHMMAX 0x2000000                 /* max shared seg size (bytes) */
#define SHMMIN 1                         /* min shared seg size (bytes) */
#define SHMMNI 4096                      /* max num of segs system wide */
#define SHMALL (SHMMAX/PAGE_SIZE*(SHMMNI/16)) /* max shm system wide (pages) */
#define SHMSEG SHMMNI                    /* max shared segs per process */

Отсюда видно, что SHMALL по умолчанию равен 8G и на машинах с <8G вообще никакой роли не играет. Вот тольуо что будет, если на машине с 1G ОЗУ и 2G swap запросить 192 сегмента shared memory (т.е. 6G) ? Кто знает?

Остаётся один вопрос: Стоит ли в моей ситуации уменьшать SHMALL до 128 мегов?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру