При изменении конфигурации контроллер ресурсов poold действует в соответствии с предоставленными ему директивами. Они указываются в виде ряда ограничений и целевых показателей. Эти спецификации используются poold для определения относительной целесообразности вариантов настройки по сравнению с существующей конфигурацией. Затем poold изменяет распределение ресурсов текущей конфигурации и генерирует новые конфигурации-кандидаты.
Ограничения влияют на диапазон возможных конфигураций, устраняя ряд потенциальных изменений, которые можно было бы внести в конфигурацию. Могут применяться следующие ограничения, указываемые в конфигурации libpool:
минимальное и максимальное выделение ЦП;
прикрепленные компоненты, которые запрещается исключать из набора.
Для получения дополнительной информации о свойствах пулов см. справочную страницу libpool(3LIB) и Свойства пулов.
Эти два свойства ограничивают минимальное и максимальное количество процессоров, которые можно выделить в набор процессоров. Дополнительную информацию об этих свойствах приведены в Таблица 12–1.
Ресурсы из раздела ресурсов доступны для выделения другим разделам ресурсов в том же экземпляре Solaris в рамках этих ограничений. Доступ к ресурсу обеспечивается путем привязки к пулу, связанному с набором ресурсов. Привязка выполняется при регистрации или вручную администратором с полномочиями PRIV_SYS_RES_CONFIG.
Свойство cpu-pinned указывает, что определенный процессор не должен покидать набор процессоров, в котором он расположен, в результате действий DPR. Это свойство libpool можно использовать для максимизации использования кэша определенным приложением, выполняющимся внутри набора процессоров.
Дополнительную информацию об этом свойстве приведены в Таблица 12–1.
Свойство pool.importance описывает относительную важность пула в соответствии с определением, заданным администратором.
Целевые показатели задаются аналогично ограничениям. Полный перечень целевых показателей представлен в Таблица 12–1.
Существуют две категории целевых показателей.
Целевой показатель, зависящий от рабочей нагрузки, изменяется в зависимости от характера рабочей нагрузки, выполняющейся в системе. Примером может служить целевой показатель utilization. Показатель степени использования для набора ресурсов изменяется в соответствии с характером активной в наборе рабочей нагрузки.
Целевой показатель, не зависящий от рабочей нагрузки, не изменяется в зависимости от характера рабочей нагрузки, выполняющейся в системе. Примером может служить целевой показатель ЦП locality. Оценочное значение локальности (locality) для набора ресурсов не изменяется в зависимости от характера активной в наборе рабочей нагрузки.
Можно определить три типа целевых показателей.
Имя |
Допустимые элементы |
Знаки операций |
Значения |
---|---|---|---|
wt-load |
system |
нет |
нет |
locality |
pset |
нет |
loose | tight | none |
utilization |
pset |
< > ~ |
0–100% |
Целевые показатели хранятся в строках свойств в конфигурации libpool. Используются следующие имена свойств:
system.poold.objectives
pset.poold.objectives
Для целевых показателей используется следующий синтаксис:
objectives = objective [; objective]*
objective = [n:] keyword [op] [value]
Ко всем целевым показателям можно присоединить дополнительный префикс важности. Важность используется в качестве множителя для целевого показателя и, таким образом, повышает значимость вклада этого показателя в функцию анализа. Диапазон допустимых значений – от 0 до INT64_MAX (9223372036854775807). Если не указано иное, используется значение важности по умолчанию, равное 1.
Некоторые типы элементов поддерживают несколько типов целевых показателей. Примером такого элемента может служить pset. Для подобных элементов можно задавать несколько типов целевых показателей. Можно также определить несколько показателей использования для одного элемента pset.
См. примеры использования в Определение целевых показателей конфигурации.
Целевой показатель wt-load отдает предпочтение конфигурациям, в которых распределение ресурсов сопоставляется с использованием ресурсов. В случае активности этого целевого показателя набору ресурсов, использующему больше ресурсов, выделяется больше ресурсов. Название wt-load расшифровывается как взвешенная нагрузка.
Этот целевой показатель следует использовать, если ограничения, установленные с помощью минимальных и максимальных значений свойств, удовлетворяют требованиям, и для демона необходимо обеспечить свободное манипулирование ресурсами в рамках этих ограничений.
Целевой показатель locality влияет на воздействие, оказываемое локальностью, которая определяется по данным группы местоположений (lgroup), на выбранную конфигурацию. Локальность также можно определить как задержку. Группа lgroup описывает ресурсы памяти и ЦП. Группа lgroup используется в Solaris для определения расстояния между ресурсами в единицах времени. Для получения дополнительной информации о выделении группы местоположения см. раздел Locality Groups Overview в Programming Interfaces Guide.
Этому целевому показателю может соответствовать одно из трех значений:
В данном случае предпочтение оказывается конфигурациям, обеспечивающим максимальную локальность ресурсов.
В этом варианте предпочтение оказывается конфигурациям, обеспечивающим минимальную локальность ресурсов.
При выборе данного значения локальность не влияет на предпочтительность конфигурации. Это значение задается для показателя locality по умолчанию.
Как правило, для целевого показателя locality следует устанавливать значение tight. Однако в целях максимизации полосы пропускания памяти или минимизации воздействия операций DR на набор ресурсов для этого показателя можно установить значение loose или оставить значение по умолчанию none.
Целевой показатель utilization отдает предпочтение конфигурациям, в которых ресурсы распределяются по разделам, не соответствующим указанным целевым показателям по степени использования.
Этот показатель задается с помощью знаков операций и значений. Для этого используются следующие знаки операций:
Знак операции "меньше чем" указывает, что данное значение соответствует максимальному целевому значению.
Знак операции "больше чем" указывает, что данное значение соответствует минимальному целевому значению.
Знак операции "about" означает, что данное значение представляет собой целевое значение, для которого возможны некоторые колебания.
Для набора процессоров (pset) можно задать только один показатель "utilization" со знаком операции каждого типа.
Если задан знак операции ~, ввести знаки операций < и > невозможно.
Если заданы знаки операций < и >, невозможным становится указание знака операции ~. Следует отметить, что настройки знаков операций < и > не могут противоречить друг другу.
Совместное использование знаков операций < и > позволяет задать диапазон. Значения проверяются на допустимость во избежание их перекрывания.
В следующем примере демону poold необходимо оценить следующие целевые показатели набора процессоров:
Показатель utilization должен иметь значение между 30 и 80 процентами.
Показатель locality для набора процессоров должен быть максимальным.
Для этих показателей устанавливается важность по умолчанию, равная 1.
pset.poold.objectives "utilization > 30; utilization < 80; locality tight"
Дополнительные примеры использования приведены в Определение целевых показателей конфигурации.
Существуют четыре категории свойств:
Конфигурация
Ограничение
Целевой показатель
Параметр целевого показателя
Имя свойства |
Тип |
Категория |
Описание |
---|---|---|---|
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 |
Параметр целевого показателя |
Важность, заданная пользователем. |