Действия сценариев DLPAR

Сценарии приложения запускаются во время операций добавления и удаления.

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

Для поиска и устранения зависимостей от DLPAR применяются следующие команды:
  • Команда ps показывает подключения bindprocessor и состояние системных вызовов plock на уровне процесса.
  • Команда bindprocessor показывает список включенных процессоров и позволяет подключать к ним нити.
  • Команда kill отправляет процессам сигналы.
  • Команда ipcs показывает сегменты закрепленной общей памяти на уровне процесса.
  • Команда lsrset показывает наборы процессоров.
  • Команда lsclass показывает классы WLM, которые могут содержать наборы процессоров.
  • Команда chclass позволяет изменить определение класса.

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

Структура высокого уровня для сценариев DLPAR

В этом разделе приведен обзор сценариев Perl, сценариев оболочки и командных сценариев. Сценарии приложения должны содержать следующие команды:
  • scriptinfo

    Указывает версию, дату и создается сценария. Может вызываться при установке сценария.

  • register

    Указывает ресурсы, которыми управляет сценарий. Если сценарий возвращает имя ресурса cpu, mem, capacity или var_weight, то он будет автоматически запущен при попытке DLPAR изменить конфигурацию процессоров, памяти, предоставленных ресурсов и переменного веса. Команда register вызывается при установке сценария в подсистеме DLPAR.

  • usage имя_ресурса

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

  • checkrelease имя_ресурса

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

  • prerelease имя_ресурса

    Перенастраивает, приостанавливает или прерывает приложение, чтобы оно разблокировало указанный ресурс.

  • postrelease имя_ресурса

    Продолжает или начинает работу приложения.

  • undoprerelease имя_ресурса

    Запускается, если при освобождении ресурса возникла ошибка.

  • checkacquire имя_ресурса

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

  • preacquire имя_ресурса

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

  • undopreacquire имя_ресурса

    Запускается при ошибке на этапе preacquire и при других сбоях.

  • postacquire имя_ресурса

    Продолжает или начинает работу приложения.

  • preaccevent имя-ресурса

    Применяется для подготовки к обновлению DLPAR.

  • postaccevent имя-ресурса

    Продолжает или начинает работу приложения.

  • undopreaccevent имя-ресурса

    Запускается при ошибке на этапе preaccevent и при других сбоях.

  • pretopolgyupdate имя-ресурса

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

  • postopolgyupdate имя-ресурса

    Продолжает или начинает работу приложения.

Установка сценариев с помощью команды drmgr

Команда drmgr поддерживает внутреннюю базу данных установленных сценариев. Информация для этой базы данных собирается при загрузке системы и обновляется при установке или удалении сценариев. Информацию поставляют команды scriptinfo, register и usage. Для установки сценариев используется команда drmgr, она копирует указанные сценарии в хранилище сценариев. По умолчанию, хранилище находится в каталоге /usr/lib/dr/scripts/all. В рабочих разделах каталог хранилища по умолчанию — /var/dr/scripts. Для хранения информации можно указать и другой каталог. Для определения системы, в которой будет применяться сценарий, укажите при установке сценария имя целевого хоста.

Расположение базового хранилища задается следующей командой:
drmgr -R базовый_каталог
Для установки сценария введите следующую команду:
drmgr -i 
имя_сценария [-f] [-w минуты] [-D 
имя_хоста]
Определены следующие флаги:
  • Флаг -i задает имя сценария.
  • При замене существующего сценария также применяется флаг -f.
  • Флаг -w указывает ожидаемое время выполнения сценария (в минутах). Этот флаг переопределяет значение, указанное создателем сценария.
  • Флаг -D позволяет зарегистрировать сценарий для конкретного хоста.
Для удаления сценария введите следующую команду:
drmgr -u имя-сценария [-D имя-хоста]
Определены следующие флаги:
  • Флаг -u указывает сценарий, который необходимо удалить.
  • Флаг -D позволяет удалить сценарий, зарегистрированный в конкретном каталоге.
Для просмотра информации об установленных сценариях введите следующую команду:
drmgr -l

Соглашение о присвоении имен сценариям

Рекомендуется присваивать сценариям имена, составленные из имени создателя и управляемой подсистемы. Системные администраторы должны присваивать созданным сценариям имена с префиксом sysadmin. Например, системный администратор, создавший сценарий для управления WLM, должен назвать его sysadmin_wlm.

Среда выполнения и входные параметры сценария

Сценарии запускаются в следующей среде:
  • UID процесса равен UID сценария.
  • GID процесса равен GID сценария.
  • В переменной среды PATH указан каталог /usr/bin:/etc:/usr/sbin.
  • При необходимости может быть задана переменная среды LANG.
  • Текущий рабочий каталог - /tmp.
  • Аргументы команды и переменные среды, описывающие событие DLPAR.

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

Пара переменных среды DR_ERROR имя=значение содержит описание ошибки.

Определить этап операции DLPAR, тип действия и тип ресурса, являющегося объектом невыполненного запроса DLPAR, можно с помощью аргументов команды сценария. Например, если указаны аргументы checkrelease mem, то этап - проверка, действие - удаление, а тип ресурса - память. Конкретный ресурс можно определить с помощью переменных среды.

При добавлении и удалении памяти используются следующие переменные среды:
Прим.: В следующем описании размер кадра равен 4 Кб.
  • DR_FREE_FRAMES=0xFFFFFFFF

    Число кадров в системе, в шестнадцатеричном формате.

  • DR_MEM_SIZE_COMPLETED=n

    Число успешно добавленных или удаленных мегабайт, в десятичном формате.

  • DR_MEM_SIZE_REQUEST=n

    Объем памяти, указанный в запросе; в десятичном формате.

  • DR_PINNABLE_FRAMES=0xFFFFFFFF

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

  • DR_TOTAL_FRAMES=0xFFFFFFFF

    Общее число кадров памяти в системе, в шестнадцатеричном формате.

При добавлении и удалении процессора используются следующие переменные среды:
  • DR_BCPUID= N

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

  • DR_LCPUID= N

    Логический ИД удаляемого или добавляемого процессора, в десятичном формате.

При работе с Создание микроразделов применяются следующие переменные среды.
DR_CPU_CAPACITY=N
Процент общих физических процессоров в разделе.
DR_VAR_WEIGHT=N
Относительный приоритет раздела при распределении циклов простоя общего пула.
DR_CPU_CAPACITY_DELTA=N
Разность между текущим процентом общих физических процессоров, предоставленных разделу, и процентом общих физических процессоров, которые будут предоставлены разделу после завершения данной операции.
DR_VAR_WEIGHT_DELTA=N
Разность между текущим процентным переменным весом раздела и процентным переменным весом, который будет назначен разделу после завершения данной операции.

Оператор может просмотреть сведения о текущем запросе DLPAR с помощью HMC с заданным уровнем подробности. Этот параметр передается сценарию с помощью переменной среды DR_DETAIL_LEVEL =N, где N - число от 0 до 5. Значение по умолчанию 0 указывает, что информация предоставлена не будет. Значение 1 зарезервировано операционной системой и используется для сообщений высокого уровня. Оставшиеся уровни (2-5) могут применяться сценариями, причем большие уровни обеспечивают большую подробность.

Сценарии передают данные, записывая в стандартный вывод следующие пары имя=значение:
Пара имя=значение Описание
DR_LOG_ERR= сообщение Отправляет сообщение с уровнем syslog, равным значению переменной среды LOG_ERR.
DR_LOG_WARNING= сообщение Отправляет сообщение с уровнем syslog, равным значению переменной среды LOG_WARNING.
DR_LOG_INFO= сообщение Отправляет сообщение с уровнем syslog, равным значению переменной среды LOG_INFO.
DR_LOG_EMERG= сообщение Отправляет сообщение с уровнем syslog, равным значению переменной среды LOG_EMERG.
DR_LOG_DEBUG= сообщение Отправляет сообщение с уровнем syslog, равным значению переменной среды LOG_DEBUG.

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

DLPAR команды сценариев

В этом разделе описаны следующие команды сценариев для DLPAR:
scriptinfo
Предоставляет информацию об установленных сценариях, такую как дата создания и ресурсы.
register
Показывает список ресурсов, которыми управляет сценарий. Затем с помощью команды drmgr можно запустить сценарии для конкретного типа ресурса.
usage
Предоставляет информацию об управлении ресурсом в удобном для чтения формате. На основании этой информации пользователь должен определить, какое влияние окажет изменение ресурса на приложения и службы. Эта команда запускается при установке сценария; предоставляемая ей информация хранится во внутренней базе данных для команды drmgr. Для ее просмотра воспользуйтесь опцией -l команды drmgr.
checkrelease
Команда drmgr позволяет оценить последствия удаления ресурсов на систему. Обычно для этого вызываются сценарии DLPAR, содержащие команду checkrelease. Каждый сценарий DLPAR может оценить особенности приложения и указать команде drmgr, использующей код возврата сценария, повлияет ли удаление ресурса на приложения. Если удаление допустимо, то будет возвращен код успешного выполнения. Если текущее состояние приложения не позволяет удалить ресурс, то сценарий вернет сообщение об ошибке. Если пользователем указана опция FORCE, применимая ко всем этапам операции DLPAR, то команда drmgr пропустит этап checkrelease и сразу перейдет к командам prerelease.
prerelease
Перед удалением ресурса сценарии DLPAR должны полностью исключить или снизить нагрузку на него. Если этого сделать не удается, то должно быть возвращено сообщение об ошибке. В любом режиме выполнения система попытается удалить ресурс и вызовет сценарий завершающего этапа, вне зависимости от действий, предпринятых или не предпринятых командой prerelease. Предпринимаемые операционной системой действия безопасны. Если ресурс нельзя безопасно удалить, то операция выполнена не будет.

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

postrelease
После освобождения ресурса для каждого установленного сценария DLPAR запускается команда postrelease. На этом этапе сценарии DLPAR выполняют все завершающие действия. Прерванные приложения должны быть перезапущены.

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

undoprerelease
Если в результате вызова команды prerelease командой drmgr из сценария DLPAR возникли ошибки, то команда drmgr попытается восстановить исходное состояние. Для этого команда drmgr вызовет в сценарии DLPAR команду undoprerelease. Команда undoprerelease запускается только в том случае, если ранее сценарий пытался освободить ресурсы для запроса DLPAR. На данном этапе сценарий должен отменить все изменения, внесенные командой prerelease. Для этого сценарий должен сохранять информацию обо всех выполняемых действиях и состоянии системы или иным образом обеспечить возможность восстановления сведений о состоянии системы и повторной настройки приложения, как если бы, фактически, событие DLPAR никогда не имело места.
checkacquire
Это первая команда сценария DLPAR, вызываемая при получении нового ресурса. Она вызывается всеми сценариями, поддерживающими добавление данного типа ресурсов. Одним из применений этапа checkacquire является проверка лицензий на процессоры администраторами лицензий. Команда checkacquire запускается всегда, вне зависимости от значения переменной среды FORCE, и вызывающая программа должна учитывать ее код возврата. Пользователь не может принудительно добавить процессор, если сценарием DLPAR или программой, поддерживающей DLPAR, не пройден этап проверки.

Таким образом, переменная среды FORCE неприменима к команде checkacquire, хотя она и используется на остальных этапах. На этапе preacquire она указывает, насколько серьезно сценарий может вмешиваться в конфигурацию приложения. Опция force может применяться сценариями для управления стратегией остановки и перезапуска приложений, аналогично освобождению ресурсов с поддержкой DLPAR.

preacquire
Если на этапе checkacquire не возникло ошибок, система переходит к этапу preacquire, на котором выполняется набор сценариев, подготавливающих добавление ресурса с помощью команды preacquire. Если пользователем не задана переменная среды FORCE и не возникло никаких ошибок, то выполняются все указанные сценарии. Если задана переменная среды FORCE, то система переходит к этапу добавления вне зависимости от кода возврата. Если задана переменная среды FORCE, то ошибки не учитываются, поскольку их можно избежать путем перенастройки приложения, что допустимо при применении переменной среды FORCE. Если возникла ошибка, а переменная FORCE не указана, то система переходит к этапу undopreacquire и отменяет все выполненные к этому моменту сценарии. На этом этапе сценарии должны отменить все внесенные изменения.
undopreacquire
Этап undopreacquire позволяет отменить все внесенные изменения. Если сценарий переходит к этапу undopreacquire, то предполагается, что он успешно выполнил команду preacquire.
postacquire
Команда postacquire вызывается после успешного добавления ресурса в систему. При этом снова вызываются все сценарии DLPAR, вызывавшиеся ранее на этапах проверки и подготовки. Эта команда позволяет встроить новый ресурс в приложение. Например, приложение может создать новые нити или увеличить буферы. Прерванные ранее приложения должны быть перезапущены.
checkmigrate
Это первая команда сценария DLPAR, вызываемая при переносе. Она вызывается всеми сценариями, поддерживающими добавление данного типа ресурсов. Команда checkmigrate запускается всегда, вне зависимости от значения переменной среды FORCE, и вызывающая программа должна учитывать ее код возврата. Пользователь не может принудительно перенести раздел, если сценарием или программой DLPAR-aware не пройден этап проверки.
premigrate
Если на этапе checkmigrate не возникло ошибок, система переходит к этапу premigrate, на котором запускается набор сценариев, подготавливающих раздел. Все указанные сценарии выполняются до переноса раздела. Система переходит к состоянию переноса независимо от кода возврата сценария. Если возникла ошибка, то система переходит к этапу undopremigrate и отменяет все выполненные к этому моменту сценарии. На этом этапе сценарии должны отменить все внесенные изменения.
undopremigrate
Этап undopremigrate позволяет отменить все внесенные изменения. Если сценарий переходит к этапу undopremigrate, то предполагается, что он успешно выполнил команду premigrate.
postmigrate
Команда postmigrate вызывается после успешного переноса раздела. При этом снова вызываются все сценарии DLPAR, вызывавшиеся ранее на этапах проверки и подготовки.
pretopologyupdate
Команда pretopologyupdate выполняется до выполнения действий, затрагивающих изменение топологии (например, добавление или удаления процессоров и памяти). Данная команда предназначена для сообщения сценариям о начале операции изменения топологии, которая не должна завершиться неудачно. Система переходит к этапу добавления вне зависимости от кода возврата.
posttopologyupdate
Команда posttopologyupdate вызывается после успешного завершения операции изменения топологии. При этом снова вызываются все сценарии DLPAR, вызывавшиеся ранее на этапах подготовки.
checkhibernate
Это первая команда сценария DLPAR, вызываемая при отключении с сохранением состояния. Она вызывается всеми сценариями, поддерживающими добавление данного типа ресурсов. Команда checkhibernate запускается всегда, вне зависимости от значения переменной среды FORCE, и вызывающая программа должна учитывать ее код возврата. Пользователь не может принудительно отключить раздел с сохранением состояния, если сценарием или программой DLPAR-aware не пройден этап проверки.
prehibernate
Если на этапе checkhibernate не возникло ошибок, система переходит к этапу prehibernate, на котором запускается набор сценариев, подготавливающих раздел. Все указанные сценарии выполняются до отключения с сохранением состояния. Система переходит к состоянию отключения с сохранением состояния независимо от кода возврата сценария. Если возникла ошибка, то система переходит к этапу undohibernate и отменяет все выполненные к этому моменту сценарии. На этом этапе сценарии должны отменить все внесенные изменения.
undohibernate
Этап undohibernate позволяет отменить все внесенные изменения. Если сценарий переходит к этапу checkhibernate, то предполагается, что он успешно выполнил команду checkhibernate.
posthibernate
Команда posthibernate вызывается после успешного отключения раздела с сохранением состояния. При этом снова вызываются все сценарии DLPAR, вызывавшиеся ранее на этапах проверки и подготовки.
preaccevent
Это первая команда сценария DLPAR, вызываемая в последовательности ускорителя шифрования DLPAR. Она вызывается всеми сценариями, поддерживающими добавление или освобождение данного типа ресурсов. В момент ее выполнения неизвестен тип следующего действие: добавление или освобождение ускорителя шифрования. Действие указывается на одном из следующих этапов.
postaccevent
Команда postaccevent вызывается после успешного добавления ресурса в систему. При этом снова вызывается каждый сценарий DLPAR, который вызывался ранее на этапе подготовки. Эта команда позволяет встроить новое состояние ресурса в приложение.
undoaccevent
Этап undoaccevent позволяет отменить все внесенные изменения. Если сценарий переходит к этапу undoaccevent, то он успешно выполнил команду preaccevent.