Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Informix Новый топик    Ответить
 invalid segment size  [new]
Leonid Vorontsov
Member

Откуда: Рига
Сообщений: 321
Здравствуйте!
Есть вот такая ОС:
SunOS centurion 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Fire-V890
И вот такой сервер:
IBM Informix Dynamic Server Version 7.31.FD9 Software Serial Number ACP#J267193
А вопрос такой, есть ли какие-то ограничения на размер сегмента памяти? Дело в том, что при 1 млн буферов сервер стартует нормально, а при 2 млн - нет.
oninit -v:
Allocating and attaching to shared memory...FAILED
oninit: Fatal error in shared memory creation
online.log:
21:15:57 shmget: [EINVAL][22]: key 52564802: invalid segment size
21:15:59 mt_shm_init: can't create resident segment
Всего памяти - 16 Гб, и хочется отхватить её побольше, побольше! Что я не так делаю?
8 май 07, 16:32    [4115499]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
onstat-
Member

Откуда:
Сообщений: 6941
Leonid Vorontsov
Здравствуйте!
Есть вот такая ОС:
SunOS centurion 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Fire-V890
И вот такой сервер:
IBM Informix Dynamic Server Version 7.31.FD9 Software Serial Number ACP#J267193
А вопрос такой, есть ли какие-то ограничения на размер сегмента памяти? Дело в том, что при 1 млн буферов сервер стартует нормально, а при 2 млн - нет.
oninit -v:
Allocating and attaching to shared memory...FAILED
oninit: Fatal error in shared memory creation
online.log:
21:15:57 shmget: [EINVAL][22]: key 52564802: invalid segment size
21:15:59 mt_shm_init: can't create resident segment
Всего памяти - 16 Гб, и хочется отхватить её побольше, побольше! Что я не так делаю?


В /etc/system
set shmsys:shminfo_shmmax= обьем памяти в байтах

Загляните в machine notes там должно быть написано.


ps Всех с наступающим праздником.
8 май 07, 21:01    [4116515]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
Leonid Vorontsov
Member

Откуда: Рига
Сообщений: 321
> set shmsys:shminfo_shmmax= обьем памяти в байтах
Ага, спасибо. Выставил в ядре всё, как написано. Сервер поднялся. Но как-то странно... Я ставил параметры:

BUFFERS 4000000
SHMVIRTSIZE 2048000

Соответсвенно, ожидал, что будет примерно 8 Гб резидентной порции и 2 Гб - виртуальной, а выглядит всё это вот так:

IBM Informix Dynamic Server Version 7.31.FD9 -- On-Line -- Up 00:11:36 -- 11075584 Kbytes

Segment Summary:
id key addr size ovhd class blkused blkfree
0 1381386241 10a000000 4278190080 93816 R* 522239 1
1 1381386242 209000000 4278190080 65944 V* 522240 0
2 1381386243 308000000 687865856 11160 V* 83968 0
3 1381386244 331000000 2097152000 32664 V* 4376 251624
Total: - - 11341398016 - - 1132823 251625

(* segment locked in memory)

Здесь нет ничего криминального? И вообще, при таких объёмах доступной памяти, какие значения были бы оптимальными? У кого какой опыт по этому поводу?
9 май 07, 14:25    [4117785]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
Leonid Vorontsov
Всего памяти - 16 Гб, и хочется отхватить её побольше, побольше! Что я не так делаю?

Далеко не всегда огромный буферный пул будет полезен. Как минимум, перестанет работать "легкое сканирование" для некоторых таблиц, увеличится длительность КТ, а для DSS (OLAP) запросов большой пул даже будет вреден. В то же время, если вся БД поместиться в кэш, то, наверное, это тоже будет неплохо, так что надо проверять и тестировать производительность системы в целом. Память можно выделать на PDQ, что здорово помогает на больших объемах сортировок и тяжелых операциях...
11 май 07, 20:16    [4128364]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
bk0010
Member

Откуда:
Сообщений: 5000
А прикидочно, как лучше распределить память для случаев, допустим, объема ОЗУ 2 Гб и 16Гб для произвольной базы? Сколько под Shared, сколько под Buffers, еще там под чего-нибуть типа PDQ, хотя-бы в %?
12 май 07, 20:46    [4129755]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
Насчет большого объема буферов - тут надо искать некий компромисс. Если данные обновляются приложениями очень активно то вырастет длительность чекпоинтов. Если время отклика критично для приложений, то можно выставить агрессивные параметры для LRU (низкие пороги сброса буферов на диски), это уменьшит длительность чекпоинтов, но тогда возрастет нагрузка на процессоры.
14 май 07, 09:10    [4132177]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
Andron
Member

Откуда: Cherepovets
Сообщений: 1816
Leonid Vorontsov
> set shmsys:shminfo_shmmax= обьем памяти в байтах
Ага, спасибо. Выставил в ядре всё, как написано. Сервер поднялся. Но как-то странно...


В этом случае имеет место т.н. Buffer Overflow to the Virtual Portion или перемещение части буферов в виртуальные сегменты разделяемой памяти. Ничего криминального в этом нет.
14 май 07, 09:50    [4132343]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
bk0010
А прикидочно, как лучше распределить память для случаев, допустим, объема ОЗУ 2 Гб и 16Гб для произвольной базы? Сколько под Shared, сколько под Buffers, еще там под чего-нибуть типа PDQ, хотя-бы в %?

Для ПРОИЗВОЛЬНОЙ базы этого сделать нельзя. Нужно учитывать комплекс обстоятельств, некоторые из которых уже упоминались в данном топике.
16 май 07, 12:12    [4143403]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
bk0010
Member

Откуда:
Сообщений: 5000
vasilis
Для ПРОИЗВОЛЬНОЙ базы этого сделать нельзя.

А если продукт только разворачивается, статистики еще никакой нет, размер базы пока мал, неужели оставите все параметры в состоянии "по-умолчанию" или подкрутите под средние значения, чтобы хотя-бы утилизировать физические возможности сервера?
18 май 07, 12:01    [4154396]     Ответить | Цитировать Сообщить модератору
 Re: invalid segment size  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
bk0010
vasilis
Для ПРОИЗВОЛЬНОЙ базы этого сделать нельзя.

А если продукт только разворачивается, статистики еще никакой нет, размер базы пока мал, неужели оставите все параметры в состоянии "по-умолчанию" или подкрутите под средние значения, чтобы хотя-бы утилизировать физические возможности сервера?

Только не оставлять "по умолчанию". Я вообще не понимаю, зачем такие минимальные и слабо работающие параметры надо задавать при инсталляции... Что интересно, много раз видел работающие сервера именно с такими параметрами (2000 буферов и т.п.) и люди сильно удивлялись, "мол, какой неприхотливый Информикс к ресурсам, берет всего 8М и больше не просит" :))
Хорошо, давай попробую дать абстрактные рекомендации или те, которые дает производитель.
Обычно рекомендуется использовать под буф.пул 20-25% ОП, хотя эта рекомендация очень условна и зависит от:
- потребности ОС для своих нужд (зависит от ее настроек)
- других приложений
- некоего запаса, чтобы даже при одноразовом запуске какого приложения ничто не начало свопиться
- упускаю природу работы с БД (OLTP, OLAP, DSS)
- от размера виртуального сегмента, который вы собираетесь выделить клиентским запросам, а он зависит от прожорливости этих самых запросов и их количества. Обычно я расчитываю на 2-5Мб на одного клиента исходя из наших задач + 20-50М резерва и "на сортировки"
- количества блокировок

Затем тьюнинг по результатам мониторинга.
18 май 07, 18:58    [4158071]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить