Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1076 / 303 | Оценка: 4.30 / 3.78 | Длительность: 18:28:00
Лекция 6:

Управление пулами ресурсов. Проекты. Зоны и контейнеры

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >

Пулы ресурсов

Пул ресурсов следует отличать от пула 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 имя_файла
< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.