Мы хотели бы иметь вычислительный кластер на основе SGE с очередью, которая дает доступ ко всем узлам для вычислительного персонала, и вторую очередь кластера, которая дает доступ, скажем, к половине узлов для случайного (но интенсивного) использования другим персоналом. .
Мы хотим ограничить ресурсы второй очереди, чтобы вычислительный персонал мог продолжать выполнять некоторую работу, даже если время от времени (но интенсивно) используется некомпетентными сотрудниками. штат сотрудников.
Есть ли способ настроить две (или более) очереди SGE для одного набора узлов, чтобы одна очередь могла содержать все узлы, а вторая очередь содержала подмножество тех же узлов, и обе очереди работали одновременно?
Какие конкретные параметры конфигурации SGE я бы исследовал, чтобы настроить что-то подобное?
Конечно, это вполне возможно. Очереди SGE не зависят друг от друга, поэтому вы можете назначить любые узлы каждой очереди, позволяя им перекрываться, как вы хотите.
Чтобы создать очередь, введите qconf -aq
: откроется ваш редактор по умолчанию (обычно vim). Введите имя очереди как qname
, добавьте хосты, которые вы хотите назначить, в hostlist
, и для slots
, добавьте разделенный запятыми список записей формата [hostname=numslots]
. Обычно количество слотов - это количество ядер в хосте, но вы можете подписаться с недостаточной или избыточной подпиской, если хотите. Если вы хотите, чтобы очереди перекрывались, просто добавьте одни и те же хосты в несколько очередей.
Обратите внимание, однако, что по умолчанию перекрывающиеся очереди не знают об использовании друг друга. Они оба с радостью назначат задания одному и тому же узлу и ожидают, что они будут выполняться.
Наиболее распространенный способ предотвратить это - сделать узлы монопольными для заданий, чтобы одновременно выполнялось только одно задание. (Это значение по умолчанию в других планировщиках, таких как PBS.) SGE делает это немного сложнее и включает создание виртуального «ресурса», который можно использовать только один раз для каждого узла. Для этого введите qconf -mc
справляться расходные ресурсы. Откроется редактор со списком расходных ресурсов: добавьте новый под названием «эксклюзивные», например:
#name shortcut type relop requestable consumable default urgency
#-----------------------------------------------------------------------------------------
exclusive excl BOOL EXCL YES YES 1 1000
Для получения дополнительной информации см. вики по движку сетки.
Вы также можете настроить то, что называется подчиненные очереди. При этом вы устанавливаете одну очередь так, чтобы она автоматически перекрывала другую, когда назначается определенное количество слотов на узел. Чтобы настроить это, запустите qconf -mq queue1
а в поле "подчиненный" укажите queue2=N
. Затем всякий раз, когда количество слотов, используемых на узле в очереди queue1, превышает N, задание в очереди 2 будет приостановлено до завершения задания очереди 1.