Обеспечение одного задания на узел в StarCluster / SunGridEngine (SGE)

Когда qsubРаботая с кластером StarCluster / SGE, существует ли простой способ гарантировать, что каждый узел получает не более одной работы за раз? У меня возникают проблемы, когда несколько заданий оказываются на одном узле, что приводит к проблемам с нехваткой памяти (OOM).

Я пытался с помощью -l cpu=8 но я думаю, что это не проверяет количество используемых ядер только количество ядер на самой коробке.

Я тоже пробовал -l slots=8 но тогда я получаю:

Unable to run job: "job" denied: use parallel environments instead of requesting slots explicitly.

3 ответа

Решение

В вашем конфигурационном файле (.starcluster/config) добавьте этот раздел:

[plugin sge]
setup_class = starcluster.plugins.sge.SGEPlugin
slots_per_host = 1

Во многом зависит от того, как настроены ресурсы кластера, например, ограничения памяти и т. Д. Однако, одна вещь, которую нужно попробовать, это запросить много памяти для каждого задания:

-l h_vmem=xxG

Это будет иметь побочный эффект: другие узлы не будут выполняться на узле, так как большая часть памяти на этом узле уже запрошена другим ранее запущенным заданием.

Просто убедитесь, что запрашиваемая вами память не превышает допустимого предела для узла. Вы можете увидеть, если он обходит этот предел, проверив вывод qstat -j <jobid> за ошибки.

Я сделал это, установив число слотов на каждом из моих узлов в 1, используя:qconf -aattr queue slots "[nodeXXX=1]" all.q

Другие вопросы по тегам