У меня установлен Sun Grid Engine (версия 6.2u5) на сервере Ubuntu 10.10 с 8 ядрами. Чтобы иметь возможность зарезервировать несколько слотов, у меня есть параллельная среда (PE), настроенная следующим образом:
pe_name serial
slots 999
user_lists NONE
xuser_lists NONE
start_proc_args /bin/true
stop_proc_args /bin/true
allocation_rule $pe_slots
control_slaves FALSE
job_is_first_task TRUE
urgency_slots min
accounting_summary FALSE
Это связано с all.q на рассматриваемом сервере (назовем сервер A). Однако, когда я отправляю задание, которое использует 4 потока, например, qsub -q all.q@A -pe serial 4 mycmd.sh, это никогда не будет запланировано, и я получаю следующие рассуждения от qstat:
не может работать в PE "последовательном", потому что он предлагает только 0 слотов
Почему SGE говорит, что "последовательный" предлагает только 0 слотов, поскольку на указанном мной сервере (сервер A) доступно 8 слотов?
Рассматриваемая очередь настроена таким образом (изменены имена серверов):
qname all.q
hostlist @allhosts
seq_no 0
load_thresholds np_load_avg=1.75
suspend_thresholds NONE
nsuspend 1
suspend_interval 00:05:00
priority 0
min_cpu_interval 00:05:00
processors UNDEFINED
qtype BATCH INTERACTIVE
ckpt_list NONE
pe_list make orte serial
rerun FALSE
slots 1,[D=32],[C=8], \
[B=30],[A=8]
tmpdir /tmp
shell /bin/sh
prolog NONE
epilog NONE
shell_start_mode posix_compliant
starter_method NONE
suspend_method NONE
resume_method NONE
terminate_method NONE
notify 00:00:60
owner_list NONE
user_lists NONE
xuser_lists NONE
subordinate_list NONE
complex_values NONE
projects NONE
xprojects NONE
calendar NONE
initial_state default
s_rt INFINITY
h_rt 08:00:00
s_cpu INFINITY
h_cpu INFINITY
s_fsize INFINITY
h_fsize INFINITY
s_data INFINITY
h_data INFINITY
s_stack INFINITY
h_stack INFINITY
s_core INFINITY
h_core INFINITY
s_rss INFINITY
h_rss INFINITY
s_vmem INFINITY
h_vmem INFINITY,[A=30g], \
[B=5g]
Правило распределения $pe_slots
требует, чтобы вы отправляли задания того же размера, что и количество ядер на любой из ваших машин. Либо измените правило распределения на $fill_up
или попробуйте отправить задание, для которого требуется 8, 30 или 32 ядра.
Я не знаю ответа, но вы можете получить гораздо больше информации о том, почему движок сетки не планирует задание, запустив qalter -w p
и qalter -w v
. Единственное предостережение: по крайней мере, в некоторых версиях qalter -w v
не игнорирует эксклюзивные ресурсы, как следует.