Организация UNIX-систем и ОС Solaris

Семафоры


Семафоры - это механизм, который принято использовать для контроля доступа нескольких процессов к одному ресурсу. Есть несколько реализаций программного интерфейса (API), связанного с семафорами:

  • вариант System V IPC (inter-process communication);
  • BSD;
  • POSIX 1003.1b.

Семафор по сути - это переменная, в зависимости от значения которой доступ к тому или иному ресурсу разрешается или блокируется до его освобождения. Семафоры широко используются в Oracle. Чтобы настроить подсистему семафоров в Solaris (обеспечить достаточное количество семафоров в ядре), может потребоваться внести изменения в файл конфигурации ядра /etc/system. Для уточнения того, какие настройки требуются именно вашему программному обеспечению под Solaris, обратитесь к руководству по этому ПО.

Для Oracle8i в Oracle8i Installation Guide Release 3 рекомендуются следующие начальные значения параметров:

  • set semsys:seminfo_semmni=100
  • set semsys:seminfo_semmsl=<10 + самое большое значение PROCESSES среди ваших БД>
  • set semsys:seminfo_semmns=<столько, сколько объяснено ниже>
  • set semsys:seminfo_semopm=100
  • set semsys:seminfo_semvmx=32767

Значение seminfo_semmns рекомендуется установить равным сумме параметров PROCESSES всех баз данных сервера, причем самый большой из них должен быть просуммирован с коэффициентом 2, плюс еще 10 на каждую базу данных.

Узнать текущие значения параметров семафоров (Solaris) можно с помощью команды:

sysdef | tail -25

Текущие наборы семафоров в системе (Solaris) покажет команда:

ipcs -sb

Иногда случается, что при неверном завершении процесса семафоры остаются блокированными. Или бывает, что повторный запуск интенсивно использующего семафоры процесса сорвется из-за нехватки семафоров. В этом случае необходимо удалить соответствующие наборы семафоров командой

ipcrm -s semsetID

semsetID здесь означает идентификатор набора семафоров.



Содержание раздела