Ограничения средств межпроцессной связи
В этом разделе рассмотрены системные ограничения для механизмов взаимодействия между процессами (IPC).
В некоторых системах UNIX системные администраторы могут изменять ограничения средств IPC (семафоров, сегментов общей памяти и очередей сообщений) с помощью файла /etc/master. Недостаток этой возможности заключается в том, что чем выше ограничения средств IPC, тем больше ресурсов выделяется ядру, а это может отрицательно сказаться на производительности системы.
В AIX применяется другой подход. В AIX верхние ограничения для IPC не настраиваются. Структуры данных IPC выделяются и удаляются по необходимости, поэтому требования к памяти зависят от текущего состояния IPC.
Разница в этих подходах зачастую вводит пользователей, работающих с базами данных, в заблуждение. Проблемы могут быть вызваны только одним ограничением - максимальным количеством сегментов общей памяти на процесс. Для 64-разрядных процессов максимальное число сегментов общей памяти равно 268435456. Для 32-разрядных процессов максимальное число сегментов общей памяти равно 11, если только не используется расширенная функция shmat.
| Семафоры | 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 |
| Очередь сообщений | 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 |
| Общая память | 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 |
Ограничения 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 уже не поддерживается. Все остальные значения остаются без изменений.