P S B Переносимая система пакетной обработки данных

перевод Балуева А.Н. (мат-мех факультет СПбГУ)

Оглавление

  • 8. Настройка PBS

    8. Настройка PBS

    В начало страницы

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

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

    8.1. Дополнительные параметры построения

    В начало страницы

    Два головных файла в подкаталоге src/include предоставляют дополнительный конфигурационный контроль над Сервером и Mom'ом. Не следует, не подумав, изменять какие-нибудь символы в этих файлах.

    8.1.1. pbs_ifl.h

    В начало страницы

    Этот головной файл содержит структуры, переменные и константы, используемые в 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
    Определяет служебный порт Планировщика.

    8.1.2. server_limits.h

    В начало страницы

    Этот головной файл содержит определения переменных, используемых Сервером и 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).

    8.2. Изменяемые на сайте исходные файлы

    В начало страницы

    Лучше пропустить этот раздел и вернуться к нему, когда вы наиграетесь с 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) и перед
              запуском задания.
    
    

<<< Оглавление Страницы: 8  9 >>>