8. Настройка PBS
В начало страницы
Большинство сайтов находят, что для подгонки PBS для их нужд необходимы только
изменения в конфигурации. Но с увеличением опыта использования PBS многие
сайты находят полезным изменять поставленный Планировщик или разрабатывать
свой собственный, соответствующий требованиям их стратегии. Подгоняемыми
Планировщиками являются написанные на Си BaSL или Tcl.
В настоящей главе предлагаются несколько путей для подгонки PBS для вашего
сайта. Хотя первый шаг состоит в обладании исходным кодом, имеется много
способов настройки кроме изменения кода.
В начало страницы
Два головных файла в подкаталоге src/include предоставляют дополнительный
конфигурационный контроль над Сервером и Mom'ом. Не следует, не подумав,
изменять какие-нибудь символы в этих файлах.
В начало страницы
Этот головной файл содержит структуры, переменные и константы, используемые в
API, libpbs.a и различные команды, в том числе и демоны. Что-то изменять здесь
приходится очень редко. Возможное исключение представляют следующие символы.
Они должны быть совместимыми со всеми пакетными системами, которые могут
взаимодействовать.
PBS_MAXHOSTNAME
Определяет максимально возможную длину имени хоста.
Она должна быть установлена по крайней мере на MAXHOSTNAME,
которая может определяться в sys/params.h.
PBS_MAXUSER
Определяет максимальную длину регистрационного имени пользователя.
PBS_MAXGRPN
Определыет максимальную длину имени группы.
PBS_MAXQUEUENAME
Определяет максимальную длину имени очереди в PBS.
PBS_USE_IFF
Если эта переменная установлена на ноль (0)
прежде чем построены библиотеки и команды,
подпрограмма API pbs_connect() не будет вызывать
программу pbs_iff генерирования защищенного кода
для аутентификации пользователя. Вместо него будет
порождаться открытый текст. Такое удостоверение легко
подделывается и пригодно только при отладке системы
PBS. Настоятельно рекомендуем не пользоваться
открытым удостоверяющим текстом.
PBS_BATCH_SERVICE_PORT
Определяет номер порта, который Сервер слушает.
PBS_MOM_SERVICE_PORT
Определяет порт, который слушает Mom,
исполнительный помощник Сервера.
PBS_SCHEDULER_SERVICE_PORT
Определяет служебный порт Планировщика.
В начало страницы
Этот головной файл содержит определения переменных, используемых Сервером и
Mom'ом. Здесь перечислены только те из них, которые можно изменять.
Определять их надо осторожно. Настоятельно рекомендуем не изменять в
server_limits.h никакие другие переменные. Если все же хотите что-то изменить,
скопируйте его предварительно в каталог include целевого дерева (постройки)
и вносите изменения перед компиляцией.
NO_SPOOL_OUTPUT
Если определено, предписывает Mom'у не использовать spool для выхода
от задания, а направлять выход в начальный каталог пользователя во время
исполнения задания. Это позволяет сайту использовать контроль за кавычками в
выходе исполняющихся пакетных заданий.
PBS_BATCH_SERVICE_NAME
Это -- служебное имя, используемое Сервером для определения того, к порту
с каким номером он должен прислушиваться. Оно установлена на pbs, в кавычках,
так как это символьная цепочка. Если вы захотите отвести для PBS служебный
порт в /etc/services, замените эту цепочку на соответствующее служебное имя.
При этом нужно изменить нужным образом PBS_SCHEDULER_SERVICE_NAME.
PBS_DEFAULT_ADMIN
Устанавливается на имя администратора по умолчанию, обычно "root".
Как правило, изменяется только для упрощения отладки.
PBS_DEFAULT_MAIL
Устанавливается на имя пользователя, от которого PBS должно послать
извещение. Значение по умолчанию есть "adm". Подавляется, если
установлен атрибут mail_from.
PBS_JOBBASE
Длина цепочки-идентификатора задания, используемого в качестве базового
имени для относящихся к заданию файлов, расположенных в каталоге spool.
Длина установлена на 11, т.е. 14 минус 3 символа на суффиксы вроде
.JB и .OU. Четырнадцать есть гарантированная длина
имени файла в POSIX. Фактическая длина имени файла зависит от файловой
системы и должна определяться во время исполнения, но PBS слишком ленива,
чтобы следить за этим. Если Сервер и Mom натыкаются на файловую систему
с более длинными именами (а большинство систем такие и есть), то вы можете
увеличить это значение, чтобы имена стали более удобочитаемыми.
PBS_MAX_HOPCOUNT
Используется для ограничения количества перебросок, производимых при
направлении из очереди в очередь. Нужно главным образом для обнаружения
циклов.
PBS_NET_MAX_CONNECTIONS
Максимальное количество открытых файловых дескрипторов и разъемов,
поддерживаемых сервером.
PBS_NET_RETRY_LIMIT
Предел количества повторных запросов к отдаленным серверам.
PBS_NET_RETRY_TIME
Время между сетевыми маршрутными повторными обращениями к отдаленным
очередям и обращениям между Сервером и Mom.
PBS_RESTAT_JOB
Чтобы избежать перегрузки каждого Mom, Сервер будет ожидать в течение
этого времени (по умолчанию 30 сек.) между запросами к нему по поводу
исполняющихся заданий. Другими словами, если пользователь спрашивает о
о статусе исполняемого задания чаще этог значения, он будет получать
старые данные.
PBS_ROOT_ALWAYS_ADMIN
Если определено (установлено на 1) то "root" будет администратором
пакетной системы, даже если не указан в менеджерском атрибуте.
PBS_SCHEDULE_CYCLE
Время по умолчанию между циклами Планировщика при отсутствии изменений в
очередях заданий. Это начальное значение, используемое Сервером, но оно
может изменяться по qmgr(1B).
В начало страницы
Лучше пропустить этот раздел и вернуться к нему, когда вы наиграетесь с PBS
и захотите копаться в нем с целью поставить заплатки.
Дейв Евитен из NASA сказал: "Это не софтвер, если его источник
недоступен." Это составляет часть философии PBS -- поставлять исходный код
как главную часть программного продукта. Иначе продукт превращается в
аппаратуру ("hard"-ware). Первый пример этой философии есть Планировщик PBS.
Реализация политики сайта оставляется за сайтом. PBS обеспечивает три инструмента для
такой реализации: BaSL-Планировщик, Tcl-Плаировщик и Cи-Планировщик.
Эта философия не останавливается на планировщике. Получив исходный код, сайт
имеет возможность модифицировать любую часть PBS по своему выбору. Конечно,
неограниченная модификация не безопасна. Не последнюю роль в этом
могут сыграть конфликты с последующими версиями разработчиков.
Некоторые функции PBS ,по-видимому, могут быть вероятными целями широких
модификаций на сайтах по многим причинам. Видя это, разработчики PBS попытались
облегчить модификации в некоторых областях включением специальных, учитывающих
особенности сайта модификационных рутин. Они указаны в IDS под заголовками
"Site Modifiable Files" в разделах о Сервере и Mom. Поставляемые версии
этих файлов по умолчанию строят частную библиотеку libsite.a, которая
добавляется (is include) на фазе компоновки Сервера и Mom. Они могут
заменяться, если это нужно для сайта. Процедура описана в IDS под заголовком
"libsite.a - Site Modifiable Library" в главе 10.
В библиотеку включены файлы:
Сервер
site_allow_u.c
Подпрограмма (routine) в этом файле,
site_allow_u(), обеспечивает
дополнительную точку, в которй
пользователю может быть отказано в
доступе к пакетной системе (серверу).
Это можно использовать вместо
или в добавок к списку Сервера Acl_User list.
site_alt_rte.c
Функция site_alt_router() позволяет
сайту добавить возможности в
в решение о маршрутизации задания.
Эта функция вызывается в очереди
если атрибут очереди alt_router есть true.
При этом условии
site_alt_router() вызывает маршрутизатор по умолчанию,
default_router().
site_check_u.c
В этом файле содержатсядве рутины.
Рутина site_check_user_map() обеспечивает
службу аутентификации того, что хозяим
задания имеет привилегию выполнять задание под
пользоввательским именем, указанным или
выбраным для исполнения на
Серверской системе.
См. в IDS про метод аутентификации по
умолчанию.
Рутина site_acl_check() обеспечивает сайт
способностью ограничивать
вход в очередь особым путем.
Например, вы можете пожелать
проверить банковский счет, чтобы
видеть, есть ли у пользователя деньги
на постановку задания в специальную очередь.
site_map_usr.c
Для сайтов без обычного пространства
для пользовательского имени/uid
эта функция, site_map_user(),
обеспечивает место для добавления
отображающей пользовательское имя функции.
Отображение происходит
в двух случаях. Во-первых, для определения
того, является ли пользователь, делающий
запрос относительно задания, его владельцем,
см. 6.1.4. "Опознание пользователя".
Во-вторых, для отображения
представившего задание пользователя
(его владельца) на исполнительный
uid (идентификатор пользователя) на локальной машине.
site_*_attr_*.h
Эти файлы предаставляют сайту
возможность добавлять локальные
атрибуты к Серверу, очередям и заданиям.
Файлы устанавливаются в
подкаталог "include" целевого дерева
во время первого make.
В поставляемой форме они содержат только комментарии.
Если сайт хочет
добавить атрибуты, их надо осторожно модифицировать.
Файлы делятся на три группы, для сервера,
очереди и задания. В каждой
группе есть файлы site_*_attr_def.h ,
которые используются для
определения имени и опорных функций
нового атрибута или атрибутов,
файлы site_*_attr_enum.h, которые
вставляют пронумерованную метку во
множество соответствующих порожденных объектов.
Для атрибутов сервера, очереди, узлов
имеется также дополнительный файл, который
определяет, будет ли команда qmgr(1)
включать новый атрибут в множество, которое
печатается по подкомандам print server, print
queue или print node.
Подробную информация о том, как
модифицировать эти файлы, можно
найти в IDS в разделе "Site Modifiable Files"
сервера в гл.5.
Вы заметите, что простое добавление
атрибутов не будет оказывает
влияния на обработку заданий.
Основная польза новых атрибутов -- в
обеспечении Планировщика новой
информацией и возможностями контроля.
Алгорифм планирования должен быть изменен
для использования новых
атрибутов. Если вы хотите,
чтобы Mom как-то изменил обращение с
заданиями, вы должны вникнуть в мутное
дело изменения его исходного
кода.
Mom
site_mom_chu.c
Если сервер питает заданиями
более одного Mom'а, то дополнительная
проверка может потребоваться
для исполнительских привилегий на
уровне Mom. Это может быть
достигнуто добавлением функции
site_mom_chkuser().
site_mom_ckp.c
Обеспечивает "пользовательские выходы"
после контрольных точек
site_mom_postchk() и перед перезапусковыми
site_mom_prerst() на
системах Cray and SGI.
site_mom_jset.c
Функция site_job_setup() позволяет
сайту предпринимать специфические
действия после создания сеанса
заданий (job session) и перед
запуском задания.