Что бы зона не смогла подвесить весь сервер, нужно её ограничивать по ресурсам. Обычно ограничивают использование оперативной памяти и процессорной мощности. Разберём как правильно ограничить использование памяти для зоны
Тестовый стенд: Solaris 11, zonename – zone0
За работу ограничения памяти отвечает демон rcapd. По умолчанию он отключен. Включить его можно так:
#rcapadm -E
или так:
#svcadm enable rcap
где rcapadm – утилита для администрирования демона rcapd.
Существуют 2 вида ограничений – на лету и постоянное. Разберём каждое из них
На лету
Выделим нашей зоне (zone0) 45 Мб памяти:
#rcapadm -z zone0 -m 45m
Запустим утилиту статистики:
$ rcapstat -z 1 id zone nproc vm rss cap at avgat pg avgpg 7 zone0 29 46M 28M 72M 49M 0K 28M 0K 7 zone0 - 46M 28M 45M 0K 0K 0K 0K 7 zone0 - 46M 28M 45M 0K 0K 0K 0K 7 zone0 - 46M 28M 45M 0K 0K 0K 0K
Как видим, значение потребляемой памяти изначально было 72 мб, а стало 45. Демон rcapd перечитывает изменения каждые 15 секунд (но это значение можно изменить). Этот метод хорош, когда требуется изменить значения налету. Но ограничение не сохраняется после перезагрузки.
На постоянной основе.
Для этого перейдём в конфигурирование зоны и добавим ограничение:
#zonecfg -z zone0
zonecfg:zone0> add capped-memory
zonecfg:zone0:capped-memory>set physical=45M
сохраняемся, перегружаем зону и видим, что ограничения применяются даже после перезагрузки.
Напомню, что посмотреть размер потребляемой памяти зоны можно посмотреть командой
$prstat -Z
а ограничение – командой
$rcapstat -z 1