Руководство по системному администрированию: контейнеры в Solaris - управление ресурсами и зонами

Глава 12 Пулы ресурсов (обзор)

В этой главе рассматриваются следующие функциональные возможности:

Начиная с Solaris 10 11/06, пулы ресурсов и динамические пулы ресурсов являются службами в механизме управления службами Solaris (SMF). Каждая из этих служб включается отдельно.

В этой главе рассматриваются следующие темы:

См. процедуры использования этих функциональных возможностей в Глава 13Создание и администрирование пулов ресурсов (задачи).

Новые функции и возможности пулов ресурсов и динамических пулов ресурсов

Solaris 10: Пулы ресурсов теперь обеспечивают механизм регулирования распределения ресурсов каждого пула в ответ на системные события и на изменение нагрузки приложений. Динамические пулы ресурсов позволяют упростить и сократить количество решений, которые должны приниматься администратором. Регулирование проводится автоматически, причем сохраняются целевые показатели производительности системы, установленные администратором.

Теперь командой projmod можно задать значение атрибута project.pool в файле /etc/project.

Полный список новых функций Solaris 10 и описание версий Solaris приведены в Solaris 10 What’s New.

Solaris 10 11/06: Пулы ресурсов и динамические пулы ресурсов теперь являются службами SMF.

Введение в пулы ресурсов

Пулы ресурсов позволяют разделить рабочие нагрузки и исключить взаимоисключающее потребление определенных ресурсов рабочими нагрузками. Подобное резервирование ресурсов позволяет достигнуть предсказуемой производительности в системах со смешанными рабочими нагрузками.

Пулы ресурсов обеспечивают сохраняемый механизм для настройки наборов процессоров (pset) и, дополнительно, для назначения класса планирования.

Рисунок 12–1 Архитектура пулов ресурсов

Из рисунка видно, что пул состоит из одного набора процессоров и необязательного класса планирования.

Пул можно представить себе как отдельный комплект разнообразных наборов ресурсов, доступных в системе. Создаваемые пулы могут соответствовать различным видам возможных комбинаций ресурсов:

pool1: pset_default

pool2: pset1

pool3: pset1, pool.scheduler="FSS"

Группирование разделов в пулы позволяет получить метку-манипулятор для связывания с отмеченными рабочими нагрузками. С каждой записью проекта в файле /etc/project может быть связан один пул, указываемый с помощью атрибута project.pool.

При включенных пулах базовая конфигурация формируется из пула по умолчанию и набора процессоров по умолчанию. В конфигурации можно создавать и добавлять дополнительные пулы и наборы процессоров, определяемые пользователем. ЦП может принадлежать только к одному набору процессоров. Пулы и наборы процессоров, определяемые пользователем, можно удалять. Пул по умолчанию и набор процессоров по умолчанию удалить невозможно.

Свойство pool.default пула по умолчанию имеет значение true. Свойство pset.default набора процессоров по умолчанию имеет значение true. Таким образом обеспечивается возможность определения пула и набора процессоров по умолчанию даже в случае изменения их имен.

Механизм пулов, определяемых пользователем, предназначен в основном для использования на крупных машинах с количеством ЦП более четырех. Однако эта функциональная возможность может быть реализована и в небольших системах. В таких системах можно создать пулы, совместно использующие некритические разделы ресурсов. Эти пулы разделяются только по критическим ресурсам.

Введение в динамические пулы ресурсов

Динамические пулы ресурсов обеспечивают механизм динамического регулирования распределения ресурсов каждого пула в ответ на системные события и изменение нагрузки приложений. Динамические пулы ресурсов позволяют упростить и сократить количество решений, которые должны приниматься администратором. Регулирование проводится автоматически, причем сохраняются целевые показатели производительности системы, установленные администратором. Изменения, вносимые в конфигурацию, заносятся в журнал. Эти функции в основном реализуются через контроллер ресурсов poold – системный демон, который всегда должен быть активен при работе с динамическим распределением ресурсов. Демон poold периодически исследует нагрузку на систему и определяет, требуется ли вмешательство администратора для обеспечения оптимальной производительности системы в отношении потребления ресурсов. Конфигурация poold содержится в конфигурации libpool. Для получения дополнительной информации о poold см. справочную страницу poold(1M).

Включение и выключение пулов ресурсов и динамических пулов ресурсов

Информацию по включению и выключению пулов ресурсов и динамических пулов ресурсов приведены в Включение и отключение механизма пулов.

Использование пулов ресурсов в зонах


Совет –

Solaris 10 8/07: В качестве альтернативы связыванию зоны с настроенным пулом ресурсов можно создать командой zonecfg временный пул, действующий во время работы зоны. Для получения дополнительной информации см. Solaris 10 8/07: Ресурс dedicated-cpu.


В системе с включенными зонами можно связать неглобальную зону с одним пулом ресурсов, однако пул не обязательно должен быть назначен определенной зоне. Кроме того, отдельные процессы в неглобальных зонах невозможно связать с другим пулом командой poolbind из глобальной зоны. Информацию по связыванию неглобальной зоны с пулом приведены в Настройка, проверка и сохранение параметров зоны.

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

Если используются динамические пулы ресурсов, область действия выполняющегося экземпляра poold ограничена глобальной зоной.

Средство poolstat, выполняемая в неглобальной зоне, выводит информацию только о том пуле, который связан с зоной. Команда pooladm, запущенная без аргументов в неглобальной зоне, отображает информацию только о пуле, связанном с зоной.

Для получения информации о командах работы с пулами ресурсов см. Команды, используемые с механизмом пулов ресурсов.

Рекомендации по использованию пулов

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

Пакетный вычислительный сервер

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

Сервер приложений или сервер базы данных

Ресурсы для интерактивных приложений можно разделить в соответствии с требованиями этих приложений.

Включение приложений по фазам

Формирование ожиданий пользователей.

Сначала можно развернуть систему, выполняющую лишь часть услуг, ожидаемых от нее в конечном итоге. Если при вводе машины в эксплуатацию механизмы управления ресурсами на основе резервирования не реализованы, пользователи могут столкнуться с трудностями.

Рассмотрим, например, оптимизацию использования процессоров планировщиком долевого распределения. Время отклика для компьютера, на котором выполняется только одно приложение, может быть обманчиво коротким. При нескольких загруженных приложениях добиться такого времени отклика для пользователей не удастся. Использование отдельных пулов для каждого приложения позволяет ограничить максимальное количество процессоров, доступных каждому приложению, на период до развертывания всех приложений.

Сервер со сложным разделением времени

Сегментирование сервера, поддерживающего большое количество пользователей. Разделение сервера обеспечивает механизм изоляции, позволяющий достигнуть более предсказуемого отклика для каждого пользователя.

Разделение пользователей на группы, связанные с разными пулами, и применение планировщика долевого распределения (FSS) позволяет отрегулировать распределение процессоров с учетом требований приоритетных групп пользователей. Это назначение может основываться на роли пользователя, стратегиях гибкого управления ресурсами на основе данных учета и т.д.

Рабочие нагрузки, подверженные сезонному изменению

Пулы ресурсов можно использовать для адаптации к меняющимся потребностям.

Потребности рабочих нагрузок могут испытывать предсказуемые изменения в течение длительных периодов времени, таких как месячные, квартальные или годичные циклы. Если система подвержена подобным сдвигам, можно организовать поочередную смену нескольких конфигураций ресурсов вызовом команды pooladm из задания cron. См. Архитектура пулов ресурсов.

Приложения реального времени

Пул реального времени создается с использованием планировщика RT и соответствующих ресурсов процессора.

Использование системы

Реализация заданных целевых показателей системы.

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

Архитектура пулов ресурсов

В файле конфигурации /etc/pooladm.conf описывается статическая настройка пулов. Статическая конфигурация – это представление требуемого администратором способа настройки системы в отношении функциональных возможностей пулов ресурсов. Допускается альтернативное имя файла.

Если архитектура пулов ресурсов реализуется с помощью механизма управления обслуживанием (SMF) или командой pooladm - e, то при наличии файла /etc/pooladm.conf к системе применяется содержащаяся в нем конфигурация.

Информация о расположении ресурсов в структуре пулов ресурсов хранится в ядре. Эта информация называется динамической конфигурацией, которая соответствует функциональным возможностям пулов ресурсов в определенной системе на определенный момент времени. Динамическую конфигурацию можно просмотреть при помощи команды pooladm. Следует отметить, что порядок отображения свойств для пулов и наборов ресурсов может различаться. Динамическую конфигурацию можно изменить следующими способами:

Может существовать несколько файлов статической конфигурации пулов, которые активируются в разных случаях. Переключение между несколькими конфигурациями пулов осуществляется путем вызова команды pooladm из задания cron. Для получения дополнительной информации об утилите cron см. справочную страницу cron(1M).

По умолчанию архитектура пулов ресурсов не активна. Для создания или изменения динамической конфигурации пулы ресурсов необходимо активировать. Даже если структура пулов ресурсов отключена, управление файлами статической конфигурации можно осуществлять с помощью команд poolcfg и libpool. Создать файлы статической конфигурации при неактивном механизме пулов невозможно. Для получения дополнительной информации о файле конфигурации см. Создание конфигураций пулов.

Команды, предназначенные для использования с пулами ресурсов и системным демоном poold, описаны на следующих справочных страницах:

Содержимое файла /etc/pooladm.conf

Все конфигурации пулов ресурсов, включая динамическую конфигурацию, могут содержать следующие элементы.

system

Свойства, воздействующие на общее поведение системы.

pool

Определение пула ресурсов.

pset

Определение набора процессоров.

cpu

Определение процессора.

Все эти элементы обладают свойствами, которыми можно управлять в целях изменения состояния и поведения архитектуры пулов ресурсов. Например, свойство пула pool.importance указывает относительную важность данного пула. Это свойство используется для разрешения потенциальных конфликтов из-за ресурсов. Для получения дополнительной информации см. libpool(3LIB).

Свойства пулов

Механизм пулов поддерживает именованные типизированные свойства, которыми можно снабдить пул, ресурс или компонент. Администраторы могут сохранять дополнительные свойства для различных элементов пула. При этом используется пространство имен свойств, подобное атрибутам проекта.

Например, следующий комментарий означает, что данный набор процессоров (pset) связан с базой данных Datatree.

Datatree,pset.dbname=warehouse

Для получения дополнительной информации о типах свойств см. Свойства poold.


Примечание –

Некоторые специальные свойства зарезервированы для внутреннего использования, и их невозможно установить или удалить. Для получения дополнительной информации см. справочную страницу libpool(3LIB).


Реализация пулов в системе

Пулы, определяемые пользователем, реализуются в системе одним из следующих способов.

Для получения информации по включению и отключению пулов ресурсов см. Включение и отключение механизма пулов. При наличии используемых в данный момент пулов или ресурсов, определяемых пользователем, отключить механизм пулов невозможно.

Для настройки пулов ресурсов необходимы полномочия суперпользователя или профиль управления процессами (Process Management) в списке профилей. Профиль управления процессами входит в роль системного администратора (System Administrator).

Вместе с механизмом динамических пулов ресурсов запускается контроллер ресурсов poold.

Атрибут project.pool

Атрибут project.pool добавляется к записи проекта в файле /etc/project для связывания с этой записью отдельного пула. Новые рабочие нагрузки, запускаемые в проекте, привязываются к соответствующему пулу. Для получения дополнительной информации см. Глава 2Проекты и задачи (обзор).

Например, команду projmod можно использовать для установки атрибута project.pool для проекта sales в файле /etc/project:


# projmod -a -K project.pool=mypool sales

SPARC: Операции динамической перенастройки и пулы ресурсов

Динамическая перенастройка (DR) позволяет перенастраивать аппаратные средства во время работы системы. Операция DR может приводить к увеличению, уменьшению или сохранению текущего состояния для определенного типа ресурса. Поскольку DR может воздействовать на доступные объемы ресурсов, в этих операциях должен применяться механизм управления пулами. При инициировании операции DR конфигурация проверяется на допустимость с точки зрения архитектуры пулов.

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

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

При использовании динамических пулов ресурсов следует помнить о возможности вывода раздела из-под контроля активного демона poold. Для получения дополнительной информации см. Определение дефицита ресурсов.

Создание конфигураций пулов

Описание создаваемых в системе пулов содержится в файле конфигурации. В этом файле описываются настраиваемые элементы.

Для получения дополнительной информации о настраиваемых элементах см. poolcfg(1M).

При включенных пулах структурированный файл /etc/pooladm.conf создается одним из двух способов.

Для изменения файла /etc/pooladm.conf используются команды poolcfg или libpool. Этот файл не следует редактировать непосредственно.

Непосредственное управление динамической конфигурацией

Типами процессорных ресурсов в динамической конфигурации можно управлять непосредственно с помощью команды poolcfg с параметром -d. Для передачи ресурсов используются два метода:

См. пример в Перенос ресурсов.

Следует отметить, что перенос ресурсов может вызвать выполнение действий демоном poold. Для получения дополнительной информации см. Обзор poold.

Обзор poold

Контроллер ресурсов пулов poold служит для поддержания назначенных целевых показателей производительности системы на основе заданных параметров или имеющихся статистических данных. При необходимости динамического распределения ресурсов этот системный демон всегда должен быть активным.

Контроллер ресурсов poold определяет доступные ресурсы и ведет наблюдение за рабочими нагрузками, что позволяет определить моменты, в которые заданные целевые показатели использования системы перестают быть достижимыми. В этом случае poold проверяет альтернативные конфигурации с точки зрения возможности достижения этих показателей и принимает меры к исправлению ситуации. Если возможно, ресурсы перенастраиваются для достижения поставленных целей. Если это невозможно, в системный журнал заносится информация о невозможности достижения указанных пользователем целевых показателей. После перенастройки демон продолжает наблюдение за целевыми показателями рабочих нагрузок.

poold сохраняет и может анализировать историю принятых решений. История принятых решений используется во избежание перенастроек, не приводивших в прошлом к исправлению ситуации.

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

Управление динамическими пулами ресурсов

Управление службой DRP осуществляется механизмом управления службами (SMF) под идентификатором svc:/system/pools/dynamic.

Административные действия в отношении этой службы, например включение, выключение или запрос перезапуска, можно выполнять командой svcadm. Запрос состояния службы можно выполнить с помощью команды svcs Для получения дополнительной информации см. справочные страницы svcs(1) и svcadm(1M).

Интерфейс SMF является рекомендуемым методом управления DRP, однако для обратной совместимости могут использоваться методы, перечисленные ниже.

Ограничения и целевые показатели конфигураций

При изменении конфигурации контроллер ресурсов poold действует в соответствии с предоставленными ему директивами. Они указываются в виде ряда ограничений и целевых показателей. Эти спецификации используются poold для определения относительной целесообразности вариантов настройки по сравнению с существующей конфигурацией. Затем poold изменяет распределение ресурсов текущей конфигурации и генерирует новые конфигурации-кандидаты.

Ограничения в конфигурации

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

Для получения дополнительной информации о свойствах пулов см. справочную страницу libpool(3LIB) и Свойства пулов.

Ограничения посредством свойств pset.min и pset.max

Эти два свойства ограничивают минимальное и максимальное количество процессоров, которые можно выделить в набор процессоров. Дополнительную информацию об этих свойствах приведены в Таблица 12–1.

Ресурсы из раздела ресурсов доступны для выделения другим разделам ресурсов в том же экземпляре Solaris в рамках этих ограничений. Доступ к ресурсу обеспечивается путем привязки к пулу, связанному с набором ресурсов. Привязка выполняется при регистрации или вручную администратором с полномочиями PRIV_SYS_RES_CONFIG.

Ограничения посредством свойства cpu.pinned

Свойство cpu-pinned указывает, что определенный процессор не должен покидать набор процессоров, в котором он расположен, в результате действий DPR. Это свойство libpool можно использовать для максимизации использования кэша определенным приложением, выполняющимся внутри набора процессоров.

Дополнительную информацию об этом свойстве приведены в Таблица 12–1.

Ограничения посредством свойства pool.importance

Свойство pool.importance описывает относительную важность пула в соответствии с определением, заданным администратором.

Целевые показатели конфигурации

Целевые показатели задаются аналогично ограничениям. Полный перечень целевых показателей представлен в Таблица 12–1.

Существуют две категории целевых показателей.

Показатели, зависящие от рабочей нагрузки

Целевой показатель, зависящий от рабочей нагрузки, изменяется в зависимости от характера рабочей нагрузки, выполняющейся в системе. Примером может служить целевой показатель utilization. Показатель степени использования для набора ресурсов изменяется в соответствии с характером активной в наборе рабочей нагрузки.

Показатели, не зависящие от рабочей нагрузки

Целевой показатель, не зависящий от рабочей нагрузки, не изменяется в зависимости от характера рабочей нагрузки, выполняющейся в системе. Примером может служить целевой показатель ЦП locality. Оценочное значение локальности (locality) для набора ресурсов не изменяется в зависимости от характера активной в наборе рабочей нагрузки.

Можно определить три типа целевых показателей.

Имя 

Допустимые элементы 

Знаки операций 

Значения 

wt-load

system

нет 

нет 

locality

pset

нет 

loose | tight | none

utilization

pset

< > ~

0100%

Целевые показатели хранятся в строках свойств в конфигурации libpool. Используются следующие имена свойств:

Для целевых показателей используется следующий синтаксис:

Ко всем целевым показателям можно присоединить дополнительный префикс важности. Важность используется в качестве множителя для целевого показателя и, таким образом, повышает значимость вклада этого показателя в функцию анализа. Диапазон допустимых значений – от 0 до INT64_MAX (9223372036854775807). Если не указано иное, используется значение важности по умолчанию, равное 1.

Некоторые типы элементов поддерживают несколько типов целевых показателей. Примером такого элемента может служить pset. Для подобных элементов можно задавать несколько типов целевых показателей. Можно также определить несколько показателей использования для одного элемента pset.

См. примеры использования в Определение целевых показателей конфигурации.

Целевой показатель wt-load

Целевой показатель wt-load отдает предпочтение конфигурациям, в которых распределение ресурсов сопоставляется с использованием ресурсов. В случае активности этого целевого показателя набору ресурсов, использующему больше ресурсов, выделяется больше ресурсов. Название wt-load расшифровывается как взвешенная нагрузка.

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

Целевой показатель locality

Целевой показатель locality влияет на воздействие, оказываемое локальностью, которая определяется по данным группы местоположений (lgroup), на выбранную конфигурацию. Локальность также можно определить как задержку. Группа lgroup описывает ресурсы памяти и ЦП. Группа lgroup используется в Solaris для определения расстояния между ресурсами в единицах времени. Для получения дополнительной информации о выделении группы местоположения см. раздел Locality Groups Overview в Programming Interfaces Guide.

Этому целевому показателю может соответствовать одно из трех значений:

tight

В данном случае предпочтение оказывается конфигурациям, обеспечивающим максимальную локальность ресурсов.

loose

В этом варианте предпочтение оказывается конфигурациям, обеспечивающим минимальную локальность ресурсов.

none

При выборе данного значения локальность не влияет на предпочтительность конфигурации. Это значение задается для показателя locality по умолчанию.

Как правило, для целевого показателя locality следует устанавливать значение tight. Однако в целях максимизации полосы пропускания памяти или минимизации воздействия операций DR на набор ресурсов для этого показателя можно установить значение loose или оставить значение по умолчанию none.

Целевой показатель utilization

Целевой показатель utilization отдает предпочтение конфигурациям, в которых ресурсы распределяются по разделам, не соответствующим указанным целевым показателям по степени использования.

Этот показатель задается с помощью знаков операций и значений. Для этого используются следующие знаки операций:

<

Знак операции "меньше чем" указывает, что данное значение соответствует максимальному целевому значению.

>

Знак операции "больше чем" указывает, что данное значение соответствует минимальному целевому значению.

~

Знак операции "about" означает, что данное значение представляет собой целевое значение, для которого возможны некоторые колебания.

Для набора процессоров (pset) можно задать только один показатель "utilization" со знаком операции каждого типа.

Совместное использование знаков операций < и > позволяет задать диапазон. Значения проверяются на допустимость во избежание их перекрывания.

Пример целевых показателей конфигурации

В следующем примере демону poold необходимо оценить следующие целевые показатели набора процессоров:


Пример 12–1 Пример целевых показателей poold

pset.poold.objectives "utilization > 30; utilization < 80; locality tight"


Дополнительные примеры использования приведены в Определение целевых показателей конфигурации.

Свойства poold

Существуют четыре категории свойств:

Таблица 12–1 Определенные имена свойств

Имя свойства 

Тип 

Категория 

Описание 

system.poold.log-level

string 

Конфигурация 

уровень журналирования; 

system.poold.log-location

string 

Конфигурация 

место журналирования. 

system.poold.monitor-interval

uint64 

Конфигурация 

Интервал выборки для наблюдения. 

system.poold.history-file

string 

Конфигурация 

Местоположение истории принятых решений. 

pset.max

uint64 

Ограничение 

Максимальное количество процессоров в данном наборе процессоров. 

pset.min

uint64 

Ограничение 

Минимальное количество процессоров в этом наборе процессоров. 

cpu.pinned

bool 

Ограничение 

Процессоры, прикрепленные к данному набору процессоров. 

system.poold.objectives

string 

Целевой показатель 

Форматированная строка, следующая после синтаксиса выражения целевого показателя poold

pset.poold.objectives

string 

Целевой показатель 

Форматированная строка, следующая после синтаксиса выражения poold

pool.importance

int64 

Параметр целевого показателя 

Важность, заданная пользователем. 

Настраиваемые функции poold

Настройке подлежат следующие аспекты поведения демона:

Эти параметры задаются в конфигурации пулов. Уровнем журналирования также можно управлять из командной строки вызовом демона poold.

Интервал наблюдения poold

Значение свойства system.poold.monitor-interval указывается в миллисекундах.

Информация журналирования poold

Журналирование позволяет регистрировать информацию трех категорий. Это следующие категории:

Имя свойства system.poold.log-level используется для указания параметра журналирования. Если это свойство не указано, используется уровень журналирования по умолчанию – NOTICE. Уровни параметра формируют иерархию. При уровне журналирования DEBUG демон poold регистрирует все сообщения. Уровень INFO соответствует среднему уровню информации, удобному для большинства администраторов.

Для указания уровня информации, записываемой в журнал, можно воспользоваться командой poold с параметром -l в командной строке.

Доступны следующие параметры:

Уровни параметра непосредственно соответствуют их эквивалентам syslog. Для получения дополнительной информации об использовании syslog см. Место журналирования.

Для получения дополнительной информации о настройке журналирования poold см. Настройки уровня журналирования poold.

Журналирование конфигурационной информации

Возможна генерация сообщений следующих типов:

ALERT

Проблемы при доступе к конфигурации libpool или иной непредвиденный отказ механизма libpool. Подобные проблемы вызывают завершение работы демона и требуют немедленного внимания администратора.

CRIT

Проблемы вследствие непредвиденных отказов. Подобные проблемы вызывают завершение работы демона и требуют немедленного внимания администратора.

ERR

Проблемы с указанными пользователем параметрами, управляющими работой демона, например, неразрешимые конфликты целей степени использования для набора ресурсов. Для решения подобных проблем требуется административное вмешательство. Демон poold пытается принять меры к исправлению ситуации путем игнорирования конфликтующих целевых показателей, однако некоторые ошибки способны привести к завершению работы демона.

WARNING

Предупреждения, связанные с установкой параметров конфигурации, которые, будучи технически корректными, могут не подходить для данной среды выполнения. В качестве примера можно привести маркировку всех процессорных ресурсов как прикрепленных, что приводит к невозможности перемещения ресурсов ЦП между наборами процессоров демоном poold.

DEBUG

Сообщения, содержащие подробную информацию, требуемую при отладке конфигурации. Эта информация, как правило, не используется администраторами.

Наблюдение за журналированием

Возможна генерация сообщений следующих типов:

CRIT

Проблемы из-за непредвиденных отказов наблюдения. Подобные проблемы вызывают завершение работы демона и требуют немедленного внимания администратора.

ERR

Проблемы из-за непредвиденных ошибок наблюдения. Для исправления подобных ошибок может потребоваться административное вмешательство.

NOTICE

Сообщения о достижении границ, задаваемых элементами управления ресурсами.

INFO

Сообщения о статистике использования ресурсов.

DEBUG

Сообщения, содержащие подробную информацию, требуемую при отладке наблюдения. Эта информация, как правило, не используется администраторами.

Журналирование оптимизации

Возможна генерация сообщений следующих типов:

WARNING

Сообщения о проблемах при принятии оптимальных решений. В качестве примеров можно привести наборы ресурсов, слишком узко ограниченные минимальными и максимальными значениями или числом прикрепленных компонентов.

Также могут выводиться сообщения о проблемах, возникающих при выполнении оптимального перераспределения из-за непредвиденных ограничений. В качестве примеров можно привести удаление последнего процессора из набора процессоров, содержащего связанного потребителя ресурса.

NOTICE

Сообщения о пригодных конфигурациях или о конфигурациях, которые не используются вследствие выявленных при помощи истории принятых решений противоречий.

INFO

Возможен вывод сообщений о рассматриваемых альтернативных конфигурациях.

DEBUG

Сообщения, содержащие подробную информацию, требуемую для отладки оптимизации. Эта информация, как правило, не используется администраторами.

Место журналирования

Для указания местоположения для вывода в журнал демоном poold используется свойство system.poold.log-location. Для команд poold можно указать местоположение SYSLOG (см. syslog(3C)).

Если это свойство не указано, в качестве местоположения по умолчанию для журнального вывода poold используется /var/log/pool/poold.

При вызове poold из командной строки это свойство не используется. Журнальные записи выводятся в stderr вызывающего терминала.

Управление журналированием с помощью logadm

Если активен демон poold, в файле logadm.conf содержится запись, позволяющая управлять файлом по умолчанию /var/log/pool/poold. Эта запись имеет следующий вид:

/var/log/pool/poold -N -s 512k

См. справочные страницы logadm(1M) и logadm.conf(4).

Принцип действия динамического распределения ресурсов

В этом разделе рассматривается процесс динамического выделения ресурсов демоном poold и влияющие на него факторы.

Доступные ресурсы

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

В системе с включенными зонами области действия выполняющегося экземпляра poold ограничена глобальной зоной.

Определение доступных ресурсов

Все системные ресурсы, доступные для потребления приложениями, входят в пулы ресурсов.

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

Например, на машине с четырьмя процессорами и двумя наборами процессоров может применяться следующая схема настройки:

pset 0: 0 1

pset 1: 2 3

Где 0, 1, 2 и 3 после двоеточия соответствуют идентификаторам ЦП. Следует отметить, что в эти два набора процессоров входят все четыре ЦП.

В том же компьютере не может существовать следующая конфигурация:

pset 0: 0 1

pset 1: 1 2 3

Такая настройка невозможна, поскольку ЦП 1 может одновременно входить только в один pset.

Доступ к ресурсам из разделов, отличных от разделов, к которым они принадлежат, запрещается.

Демон poold выполняет процедуру обнаружения доступных ресурсов путем опроса активной конфигурации пулов для поиска разделов. Все ресурсы внутри всех разделов суммируются для определения общего объема доступных ресурсов по каждому контролируемому типу ресурсов.

Этот объем ресурсов выступает в качестве базового показателя, используемого демоном poold. Однако на этот показатель накладываются ограничения, ограничивающие гибкость poold в отношении распределения. Для получения информации о доступных ограничениях см. Ограничения в конфигурации.

Определение дефицита ресурсов

Область действия управления poold определяется как набор доступных ресурсов, ответственность за распределение и контроль которых в первую очередь осуществляется демоном poold. Однако на конфигурацию могут влиять и другие механизмы, которым разрешено манипулирование ресурсами в этой области действия управления. Если раздел выходит из-под контроля во время работы poold, демон poold пытается восстановить управление посредством разумного манипулирования доступными ресурсами. Если poold не обнаруживает дополнительные ресурсы в своей области действия, в журнал заносится информация о дефиците ресурсов.

Определение использования ресурсов

При работе демона poold самое большое время обычно затрачивается на наблюдение за использованием ресурсов в его области действия управления. Это наблюдение проводится для обеспечения соблюдения целевых показателей, зависящих от рабочих нагрузок.

Например, в случае наборов процессоров все измерения выполняются для всех процессоров в определенном наборе. Степень использования ресурсов позволяет определить пропорцию времени, в течение которого используется ресурс, по интервалу выборки. Степень использования ресурсов выражается в процентах от 0 до 100.

Определение нарушений в элементах управления

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

Раздел, не выполняющий заданные пользователем целевые показатели, представляет собой нарушение по элементу управления. Существуют два типа таких нарушений – синхронное и асинхронное.

Асинхронные нарушения вызываются следующими событиями:

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

Определение мер по исправлению ситуации

При выявлении контроллером дефицита ресурсов для определенного потребителя сначала принимается решение о том, что повышение производительности может быть достигнуто путем увеличения объема ресурсов.

Рассматриваются и оцениваются альтернативные конфигурации, соответствующие целевым показателям, указанным в конфигурации для области действия управления.

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

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

Наблюдение за механизмом пулов и степени использования ресурсов командой poolstat

Средство poolstat используется для текущего контроля степени использования ресурсов при активированном механизме пулов. Это средство выполняет итеративное исследование всех активных пулов и выдает статистический отчет, основанный на выбранном режиме вывода. Статистические данные poolstat позволяют определить, какие разделы ресурсов имеют наибольшую нагрузку. Эту статистику можно использовать в анализе для принятия решений о перераспределении ресурсов при недостатке ресурсов в системе.

Средство poolstat предоставляет параметры, которые могут использоваться для исследования конкретных пулов и вывода статистических отчетов по конкретным наборам ресурсов.

Если в системе реализованы зоны, и poolstat используется в неглобальной зоне, отображается информация о ресурсах, связанных с пулом зоны.

Для получения дополнительной информации о poolstat см. справочную страницу poolstat(1M). Для получения информации о задачах и использовании poolstat см. Вывод статистических отчетов по ресурсам, связанным с пулами, с помощью команды poolstat.

Выходные данные poolstat

Если используется формат вывода по умолчанию, poolstat выводит строку заголовка, а затем по одной строке для каждого пула. Строка пула начинается с идентификатора и имени пула, после которых следует столбец статистических данных для набора процессоров, присоединенного к пулу. Наборы ресурсов, присоединенные к нескольким пулам, выводятся несколько раз, по одному разу на каждый пул.

Используются следующие заголовки столбцов:

id

Идентификатор пула.

pool

Имя пула.

rid

Идентификатор набора ресурсов.

rset

Имя набора ресурсов.

type

Тип набора ресурсов.

min

Минимальный размер набора ресурсов.

max

Максимальный размер набора ресурсов.

size

Текущий размер набора ресурсов.

used

Мера текущего использования набора ресурсов.

Эта характеристика использования вычисляется как процент от степени использования набора ресурсов, умноженный на размер набора ресурсов. Если набор ресурсов перенастраивался в течение последнего интервала выборки, это значение может отсутствовать. В этом случае вместо значения отображается дефис (-).

load

Абсолютное представление нагрузки набора ресурсов.

Для получения дополнительной информации об этом свойстве см. справочную страницу libpool(3LIB).

Выходные данные poolstat можно настроить путем определения следующих элементов:

Настройка интервалов операций poolstat

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

интервал

Настройка интервалов для периодических операций, выполняемых poolstat. Все интервалы указываются в секундах.

число

Число повторений статистики. По умолчанию статистика poolstat выводится один раз.

Если значения интервал и число не указаны, данные статистики выводятся один раз. Если значение interval указано, а count не указано, то статистика выводится бесконечно.

Команды, используемые с механизмом пулов ресурсов

Команды, указанные в следующей таблице, обеспечивают главный административный интерфейс для механизма пулов. Для получения информации по использованию этих команд в системе с установленными зонами см. Использование пулов ресурсов в зонах.

Ссылка на справочную страницу 

Описание 

pooladm(1M)

Включение или отключение механизма пулов. Активация определенной конфигурации или удаление текущей конфигурации с возвращением связанных ресурсов в их состояние по умолчанию. При запуске без параметров pooladm отображает текущую динамическую конфигурацию пулов.

poolbind(1M)

Активация привязки проектов, задач и процессов к пулу ресурсов вручную. 

poolcfg(1M)

Эта команда обеспечивает операции по конфигурированию для пулов и наборов. Конфигурации, создаваемые с помощью этого средства, активируются на целевом узле командой pooladm .

При выполнении с аргументом подкоманды info с параметром - c по команде poolcfg отображается информация о статической конфигурации в /etc/pooladm.conf. Если указывается также аргумент имени файла, по этой команде отображается информация о статической конфигурации, содержащейся в именованном файле. Например, по команде poolcfg - c info /tmp/newconfig отображается информация о статической конфигурации в файле /tmp/newconfig .

poold(1M)

Системный демон пулов. Демон использует системные целевые показатели и наблюдаемую статистику для обеспечения соответствия целям по производительности, заданным администратором. Если корректирующие действия при отступлении от этих показателей оказываются неуспешными, poold заносит такое состояние в журнал.

poolstat(1M)

Вывод статистических данных по ресурсам, связанным с пулом. Эта команда служит для упрощения анализа производительности и вывода информации, используемой системными администраторами при распределении и перераспределении ресурсов. Можно задать параметры для исследования конкретных пулов и вывода статистики по конкретным наборам ресурсов. 

Библиотекой libpool предоставляется API (см. справочную страницуlibpool(3LIB)). Эта библиотека может использоваться программами для управления конфигурациями пулов.