Ограничения средств межпроцессной связи

В этом разделе рассмотрены системные ограничения для механизмов взаимодействия между процессами (IPC).

В некоторых системах UNIX системные администраторы могут изменять ограничения средств IPC (семафоров, сегментов общей памяти и очередей сообщений) с помощью файла /etc/master. Недостаток этой возможности заключается в том, что чем выше ограничения средств IPC, тем больше ресурсов выделяется ядру, а это может отрицательно сказаться на производительности системы.

В AIX применяется другой подход. В AIX верхние ограничения для IPC не настраиваются. Структуры данных IPC выделяются и удаляются по необходимости, поэтому требования к памяти зависят от текущего состояния IPC.

Разница в этих подходах зачастую вводит пользователей, работающих с базами данных, в заблуждение. Проблемы могут быть вызваны только одним ограничением - максимальным количеством сегментов общей памяти на процесс. Для 64-разрядных процессов максимальное число сегментов общей памяти равно 268435456. Для 32-разрядных процессов максимальное число сегментов общей памяти равно 11, если только не используется расширенная функция shmat.

Ограничения на семафоры для IPC приведены в следующих таблицах.
Семафоры 4.3.0 4.3.1 4.3.2 5.1 5.2 5.3 7.1
Макс. число ИД семафоров в 32-разрядном ядре 4096 4096 131072 131072 131072 131072 нет
Макс. число ИД семафоров в 64-разрядном ядре 4096 4096 131072 131072 131072 1048576 1048576
Макс. число семафоров на ИД 65535 65535 65535 65535 65535 65535 65535
Макс. число операций на вызов semop 1024 1024 1024 1024 1024 1024 1024
Макс. число записей отката на процесс 1024 1024 1024 1024 1024 1024 1024
Размер структуры отката в байтах 8208 8208 8208 8208 8208 8208 8208
Макс. значение семафора 32767 32767 32767 32767 32767 32767 32767
Макс. значение коррекции на выходе 16384 16384 16384 16384 16384 16384 16384
Ограничения на очереди сообщений для IPC приведены в следующих таблицах.
Очередь сообщений 4.3.0 4.3.1 4.3.2 5.1 5.2 5.3 7.1
Макс. размер сообщения 4 МБ 4 МБ 4 МБ 4 МБ 4 МБ 4 МБ 4 МБ
Макс. число байт в очереди 4 МБ 4 МБ 4 МБ 4 МБ 4 МБ 4 МБ 4 МБ
Максимальное число ИД очередей сообщений в 32-разрядном ядре 4096 4096 131072 131072 131072 131072 131072
Максимальное число ИД очередей сообщений в 64-разрядном ядре 4096 4096 131072 131072 131072 1048576 1048576
Макс. число очередей сообщений на ИД 524288 524288 524288 524288 524288 524288 524288
Ограничения на общую память для IPC приведены в следующих таблицах.
Общая память 4.3.0 4.3.1 4.3.2 5.1 5.2 5.3 7.1
Макс. размер сегмента (32-разрядные процессы) 256 МБ 2 ГБ 2 ГБ 2 ГБ 2 ГБ 2 ГБ 2 ГБ
Макс. размер сегмента (64- разрядные процессы) в 32- разрядном ядре 256 МБ 2 ГБ 2 ГБ 64 ГБ 1 ТБ 1 ТБ нет
Макс. размер сегмента (64- разрядные процессы) в 64- разрядном ядре 256 МБ 2 ГБ 2 ГБ 64 ГБ 1 ТБ 32 ТБ 32 ТБ
Мин. размер сегмента 1 1 1 1 1 1 1
Макс. число ИД общей памяти (32-разрядное ядро) 4096 4096 131072 131072 131072 131072 131072
Макс. число ИД общей памяти (64-разрядное ядро) 4096 4096 131072 131072 131072 1048576 1048576
Макс. число сегментов на процесс (32-разрядные процессы) 11 11 11 11 11 11 11
Макс. число сегментов на процесс (64-разрядные процессы) 268435456 268435456 268435456 268435456 268435456 268435456 268435456
Прим.: Если для 32-разрядных используется расширенная функция shmat, то максимальное число сегментов в процессе ограничено только размером адресного пространства

Ограничения IPC в AIX4.3

  • Ограничения для семафоров и очередей сообщений показаны в таблице.
  • Максимальный размер сегмента общей памяти равен 256GB.
  • Для общей памяти без расширенной функции shmat:
    • Максимальное число сегментов в процессе равно 11.
  • Для общей памяти с расширенной функцией shmat:
    • При подключении сегмента общей памяти его размер округляется до значения, кратного 4096 байт.
    • Процесс может подключать сегменты общей памяти до тех пор, пока они помещаются в адресном пространстве. Максимальный размер адресного пространства равен 11 сегментам, то есть 11, помноженному на 256 МБ.
  • Расширенная функция shmat применяется в случае, если переменной среды EXTSHM присвоено значение ON при запуске процесса.
  • При использовании модели большого или очень большого адресного пространства объем доступного адресного пространства для общих сегментов сокращается.

Ограничения IPC в AIX 4.3.1

  • Максимальный размер сегмента общей памяти увеличен с 256 МБ до 2 ГБ. При подключении сегмента общей памяти размером больше 256 МБ, его размер округляется до значения, кратного 256 МБ, даже если применяется расширенная функция shmat.

Ограничения IPC в AIX 4.3.2

  • Максимальное число очередей сообщений, ИД семафоров и сегментов общей памяти равно 131072.
  • Максимальное число сообщений в очереди равно 524288.

Ограничения IPC в AIX 5.1

  • Максимальный размер сегмента общей памяти для 64-разрядных процессов равен 64 ГБ. 32-разрядные процессы не могут подключать сегменты общей памяти, большие 2 ГБ.

Ограничения IPC в AIX 5.2

  • Максимальный размер сегмента общей памяти для 64-разрядных процессов равен 1 ТБ. 32-разрядные процессы не могут подключать сегменты общей памяти, большие 2 ГБ.
  • С помощью shmat 32-разрядные приложения могут получить более 11 сегментов общей памяти при работе с моделью очень большого адресного пространства без расширения shmat. Дополнительная информация о модели очень большого адресного пространства.
  • Приложения могут узнать ограничения для IPC с помощью системного вызова vmgetinfo.

Ограничения IPC в AIX 5.3

  • Максимальный размер сегмента общей памяти для 64-разрядных процессов равен 32 ТБ. 32-разрядные процессы не могут подключать сегменты общей памяти, большие 2 ГБ.
  • С помощью shmat 32-разрядные приложения могут получить более 11 сегментов общей памяти при работе с моделью очень большого адресного пространства без расширения shmat. Дополнительная информация о модели очень большого адресного пространства.
  • Приложения могут узнать ограничения для IPC с помощью системного вызова vmgetinfo.

Ограничения IPC в AIX 6.1

32-разрядное ядро в AIX 6.1 уже не поддерживается. Все остальные значения остаются без изменений.