Ограничение размера стека

03 August 2009 #vps #memory

При использовании VPS-серверов очень эффективным средством экономии памяти становиться ограничение размера стека. Я решил проверить, можно ли подобное средство использовать на рабочей станции?

В Archlinux все ограничения задаются с помощью параметров ядра, которые задаются в файле /etc/security/limits.conf

Содержимое моего файла:

*               -       rtprio          0
*               -       nice            0
@audio          -       rtprio          65
@audio          -       nice           -10
@audio          -       memlock         40000
juev            -       nproc           7168
*               -       stack           8192

Я добавил последнюю строку, которая присутствует в листинге, и которая отвечает за размер выделяемой памяти под стек. В данном случае размер стека стандартный и равен 8 мегабайтам.

Начал я со значения, которое является минимальным из работающего на сервере, то есть 256 килобайт. При этом у меня начались проблемы с некоторыми программами, например XTerm не загружал свою конфигурацию и работал в окружении заданном по умолчанию. Долго останавливаться на данном значении не стал и пошел дальше.

Установил один мегабайт. То есть значение равно 1024… Тут очень долго у меня не возникало никаких проблем. Все работало исключительно хорошо. Проработал в данном режиме несколько дней, пока не попытался запустить lame для кодирования аудиофайлов…

Попытался – просто потому, что запустить lame мне так и не удалось… Постоянное выпадение программы с сегфолт… Сначала даже не понял, что произошло, пока не попытался вернуть значение стека на 8 мегабайт. Как только установил, lame заработало нормально.

Отсюда вывод: ограничение размера стека оперативной памяти на рабочей станции, где обычно применяются мультимедийные приложения, в качестве способа экономии оперативной памяти не может использоваться.