Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение. |
Управление пулами ресурсов. Проекты. Зоны и контейнеры
Пулы ресурсов
Пул ресурсов следует отличать от пула ZFS – это совершенно разные понятия. Ресурсами в пуле могут быть процессоры и память. В Solaris 10 до Solaris 10 update 4 (он же – Solaris 10 08/07) включительно в качестве ресурсов в пул можно было включать допускались только процессоры, в Solaris Express (по крайней мере в версии SXDE 09/07 и SXDE 01/08) допустимо включать и оперативную память.
Применять пулы для управления ресурсами удобно в ряде случаев, а именно:
- для разделения системы на пользовательскую и системную часть и назначение для них ресурсов по-отдельности;
- для разделения ресурсов сервера между несколькими критически важными задачами, когда следует гарантировать некий минимальный объем ресурсов для каждой из них;
- для работы приложений реального времени;
- для выделения конкретным пользователям гарантированные ресурсы;
Для того, чтобы назначить пул ресурсов проекту, следует установить соответствующий атрибут project.pool в файле /etc/project либо выполнить команду:
# projmod -s -K project.pool=pool_name project_name
Каждый проект может быть ассоциирован только с одним пулом.
Для настройки пулов применяется статическая таблица параметров /etc/pooladm.conf. По умолчанию в Solaris функциональность пулов выключена, и этого файла нет. При включении механизма пулов этот файл допустимо создать с параметрами, установленными "по умолчанию". Если при старте операционная система обнаруживает этот файл, то она автоматически включает механизм пулов. Таблица параметров в этом файле хранится в формате XML и не предназначена для редактирования. Для изменения параметров следует применять команду poolcfg.
Вы можете использовать различные таблицы параметров для разного времени суток, выполняя скрипты, содержащие poolcfg с помощью cron(1M).
Смысл создания пула ресурсов в том, чтобы назначать один пул ресурсов конкретному проекту или нескольким проектам – это позволяет гибко перераспределять ресурсы, гарантируя желательные процессорную мощность и (там, где это применимо) объем оперативной памяти одному или нескольким процессам, связанным логически (скажем, все процессы сервера баз данных или веб-сервера).
Прежде всего, для управления ресурсами посредством формирования пулов надо разрешить системе использовать класс планирования FSS по умолчанию (fair share scheduling – долевое распределение ресурсов).
Для этого следует дать команду
dispadmin -d FSS
Теперь следует позаботиться о создании нового пула ресурсов и его настройке. Для разрешения функциональности пулов ресурсов следует использовать команду pooladm, а для создания пула и изменения его настроек – команду poolcfg.
Создадим новый пул ресурсов, состоящий из одного-единственного процессора (этот пример проверен на компьютере с двухъядерным процессором AMD, и каждое ядро система видит как отдельный процессор):
pooladm -e # разрешить пулы ресурсов в системе pooladm # показать определенные на данный момент пулы ресурсов system default string system.comment int system.version 1 boolean system.bind-default true string system.poold.objectives wt-load pool pool_default int pool.sys_id 0 boolean pool.active true boolean pool.default true int pool.importance 1 string pool.comment pset pset_default pset pset_default int pset.sys_id -1 boolean pset.default true uint pset.min 1 uint pset.max 65536 string pset.units population uint pset.load 162 uint pset.size 2 string pset.comment cpu int cpu.sys_id 1 string cpu.comment string cpu.status on-line cpu int cpu.sys_id 0 string cpu.comment string cpu.status on-line
Теперь cоздадим статическую таблицу /etc/pooladm.conf с параметрами по умолчанию и посмотрим на эти параметры:
# pooladm -s cat /etc/pooladm.conf <?xml version="1.0"?> <!DOCTYPE system PUBLIC "-//Sun Microsystems Inc//DTD Resource Management All//EN" "file:///usr/share/lib/xml/dtd/rm_pool.dtd.1"> <!-- Configuration for pools facility. Do NOT edit this file by hand - use poolcfg(1) or libpool(3POOL) instead. --> <system ref_id="dummy" name="default" comment="" version="1" bind-default="true"> <property name="system.poold.objectives" type="string">wt-load</property> <pool name="pool_default" active="true" default="true" importance="1" comment="" res="pset_-1" ref_id="pool_0"> <property name="pool.sys_id" type="int">0</property> </pool> <res_comp type="pset" sys_id="-1" name="pset_default" default="true" min="1" max="65536" units="population" comment="" ref_id="pset_-1"> <property name="pset.load" type="uint">160</property> <property name="pset.size" type="uint">2</property> <comp type="cpu" sys_id="1" comment="" ref_id="cpu_1"> <property name="cpu.status" type="string">on-line</property> </comp> <comp type="cpu" sys_id="0" comment="" ref_id="cpu_0"> <property name="cpu.status" type="string">on-line</property> </comp> </res_comp> </system>
Этот файл содержит те же самые настройки, что мы видели ранее, дав команду pooladm без параметров. Однако pooladm без параметров выводит только настройки по умолчанию, и для получения полной информации о существующих в системе пулах ресурсов следует использовать команду poolcfg -c info.
Определим новый пул test, в который входит одна процессорная группа small, состоящая из одного процессора.
Для этого вначале определим процессорную группу:
poolcfg -c 'create pset small ( uint pset.min = 1 ; uint pset.max = 2)'
теперь создадим пул:
poolcfg -c 'create pool test'
и свяжем процессорную группу с этим пулом:
poolcfg -c 'associate pool test (pset small)'
Теперь укажем, что пул test должен использовать планировщик задач по схеме долевого распределения:
poolcfg -c 'modify pool test (string pool.scheduler = "FSS")'
Что получилось?
poolcfg -c info system default string system.comment int system.version 1 boolean system.bind-default true string system.poold.objectives wt-load pool pool_default int pool.sys_id 0 boolean pool.active true boolean pool.default true int pool.importance 1 string pool.comment pset pset_default pool test boolean pool.active true boolean pool.default false string pool.scheduler FSS int pool.importance 1 string pool.comment pset small pset pset_default int pset.sys_id -1 boolean pset.default true uint pset.min 1 uint pset.max 65536 string pset.units population uint pset.load 160 uint pset.size 2 string pset.comment cpu int cpu.sys_id 1 string cpu.comment string cpu.status on-line cpu int cpu.sys_id 0 string cpu.comment string cpu.status on-line pset small int pset.sys_id -2 boolean pset.default false uint pset.min 1 uint pset.max 2 string pset.units population uint pset.load 0 uint pset.size 0 string pset.comment
Теперь назначим в пул test один процессор (таким образом, мы выделим пулу small один процессор, а второй останется в пуле pset_default ). Каждый процессор может относиться только к одному пулу ресурсов:
poolcfg -dc "transfer to pset small (cpu 1)"
Проверяем:
# poolcfg -c info system default string system.comment int system.version 1 boolean system.bind-default true string system.poold.objectives wt-load pool pool_default int pool.sys_id 0 boolean pool.active true boolean pool.default true int pool.importance 1 string pool.comment pset pset_default pool test boolean pool.active true boolean pool.default false string pool.scheduler FSS int pool.importance 1 string pool.comment pset small pset pset_default int pset.sys_id -1 boolean pset.default true uint pset.min 1 uint pset.max 65536 string pset.units population uint pset.load 160 uint pset.size 1 string pset.comment cpu int cpu.sys_id 0 string cpu.comment string cpu.status on-line pset small int pset.sys_id -2 boolean pset.default false uint pset.min 1 uint pset.max 2 string pset.units population uint pset.load 0 uint pset.size 1 string pset.comment cpu int cpu.sys_id 1 string cpu.comment string cpu.status on-line
Для записи динамически существующей в запущенной системе конфигурации пулов ресурсов в файл настроек надо выполнить команду
pooladm -s имя_файла
а для проверки корректности описания конфигурации пулов ресурсов команду
pooladm -n имя_файла
Если имя_файла не указано, подразумевается файл /etc/pooladm.conf
Для активации уже записанных в файле настроек выполняется команда
pooladm -c имя_файла