При использовании 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 заработало нормально.
Отсюда вывод: ограничение размера стека оперативной памяти на рабочей станции, где обычно применяются мультимедийные приложения, в качестве способа экономии оперативной памяти не может использоваться.
