Действия сценариев DLPAR
Сценарии приложения запускаются во время операций добавления и удаления.
При удалении ресурсов сценарии помогают устранить проблемы с приложениями, мешающими удалить ресурс. К числу таких проблем относятся нити, связанные с процессорами, и нехватка закрепленной памяти в системе. Для определения подобных ситуаций существует набор команд, позволяющих составлять сценарии.
- Команда ps показывает подключения bindprocessor и состояние системных вызовов plock на уровне процесса.
- Команда bindprocessor показывает список включенных процессоров и позволяет подключать к ним нити.
- Команда kill отправляет процессам сигналы.
- Команда ipcs показывает сегменты закрепленной общей памяти на уровне процесса.
- Команда lsrset показывает наборы процессоров.
- Команда lsclass показывает классы WLM, которые могут содержать наборы процессоров.
- Команда chclass позволяет изменить определение класса.
Сценарии также применяются для масштабирования приложений и повышения производительности. При удалении ресурса рекомендуется сократить число нитей и размер буферов приложений. При добавлении ресурсов эти параметры можно увеличить. Данные параметры можно изменять динамически, вызывая команды с помощью сценариев. Сценарии позволяют запустить требуемые команды во время операций DLPAR.
Структура высокого уровня для сценариев DLPAR
- 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, то этап -
проверка, действие - удаление, а тип ресурса - память.
Конкретный ресурс можно определить с помощью переменных среды.
-
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 команды сценариев
- 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.