В одном из наших вычислительных кластеров у нас есть системы с уникальными аппаратными ресурсами, доступ к которым контролируется разрешениями файлов устройств. Каждый узел имеет два или четыре таких ядра и несколько ядер ЦП. Мы хотели бы иметь возможность планировать задания разных пользователей на одном узле и ограничивать доступ к правильно назначенным ресурсам. (Некоторые очереди могут быть предназначены только для ЦП без доступа.)
Какое-то время мы придерживались политики «эй, будь внимателен и играй честно», но всем трудно придерживаться правильных правил, даже имея самые лучшие намерения. Поэтому вместо этого мы просто планируем весь узел для данного пользователя за раз. Это расточительно для однопоточных, однопроцессных задач.
С помощью Torque можно запустить сценарий пролога как root до начала работы. Это может быть сделано для правильной установки разрешений устройства. Но мы бежим (урожденная Солнце) Grid Engine. Это для каждой очереди prolog
скрипты, но они запускаются от имени пользователя, которому принадлежит задание (например, Torque's prologue.user
), что здесь не поможет.
Есть ли что-то очевидное, что мне не хватает (надеюсь), или альтернативный подход к этому? Я понимаю, что у меня есть исходный код, и поэтому я могу что-нибудь, но я надеюсь, что мне просто не хватает стандартного способа.
Спасибо!
Сценарий пролога можно запустить от имени любого пользователя.
Из man queue_conf
:
пролог
Путь к исполняемому файлу сценария оболочки, который запускается перед выполнением заданий Grid Engine с той же настройкой среды, что и для заданий Grid Engine, запускаемых впоследствии. Необязательный префикс «user @» указывает пользователя, от имени которого должна быть запущена эта процедура.
Итак, установка prolog root@/path/to/prolog
он должен выполняться как root.