Автор Тема: Функция shmget возвращает ошибку "No space left on device"  (Прочитано 81 раз)

Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 463
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Проверяем ограничение на количество сегментов разделяемой памяти

prctl -n project.max-shm-ids -i process $$
process: 1566: bash
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
project.max-shm-ids
        privileged        128       -   deny                                 -
        system          16,8M     max   deny         
                        -

В моем случае как раз такое превышение - ошибка возникла при добавлении 129-го сегмента. 131 - 3 = 128. 3 - вспомогательные строки
$ ipcs -m|wc -l
     131

Через prstat -J определяем, что текущий проект называется group.staff

Увеличиваем данный лимит этого проекта
sudo projmod -K project.max-shm-ids="(priv,1024,deny)" group.staff
После перелогина изменение будет применено


Аналогично - по семафорам
$ prctl -n project.max-sem-ids -i process $$
process: 1560: bash
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
project.max-sem-ids
        privileged        128       -   deny                                 -
        system          16,8M     max   deny                                 -
$ ipcs -s|wc -l
     131

Чтобы предыдущая настройка проекта не затерлась, добавляем параметр -a
sudo projmod -a -K project.max-sem-ids="(priv,1024,deny)" group.staff
Проверка настроек проекта: cat /etc/project