Я хочу иметь возможность устанавливать требования к памяти для каждого задания.
Например: для выполнения 5 заданий, для каждого из которых, я знаю, потребуется 4 ГБ памяти. У меня 16 ГБ ОЗУ на сервере Ubuntu и 16 ГБ подкачки. Я не хочу использовать своп. Могу я сделать что-нибудь вроде:
qsub -l mem_required_for_my_job=4G job1
qsub -l mem_required_for_my_job=4G job2
qsub -l mem_required_for_my_job=4G job3
qsub -l mem_required_for_my_job=4G job4
qsub -l mem_required_for_my_job=4G job5
? В какой-то момент задания потребуют 4 ГБ, но не вначале.
Как сообщить SGE, каковы мои требования? Как избежать планирования 5 x 4 ГБ, когда доступно только 16 ГБ?
Я прочитал руководство пользователя и попробовал s_vmem, h_vmem, mem_free, mem_used
. Я не хочу ни одного из них. Я не хочу, чтобы моя работа была прервана посреди обработки. Я хочу, чтобы они не планировались, пока не будет доступен максимум необходимых ресурсов.
Я могу это сделать?
Спасибо вам всем!
В нашем кластере мы используем h_vmem
для принудительного выделения памяти заданию.
Кажется, вам не хватает настройки доступного количества в качестве расходного ресурса. В qconf -mc
или в qmon
В диалоге комплексов необходимо установить ресурс как запрашиваемый и расходный.
Затем на каждом хосте с qconf -me
вам нужно установить количество доступной памяти в complex_values
.
Например, у нас есть определения хоста, которые выглядят так:
hostname node004
load_scaling NONE
complex_values h_vmem=30.9G,exclusive=1,version=3.3.0
Я думаю, что вы ищете virtual_free
«Если запрос задания для virtual_free превышает доступное количество, задание не отправляется в очередь на этом хосте». из https://web.archive.org/web/20100801220839/http://wikis.sun.com/display/GridEngine/Configuring+Complex+Resource+Attributes
Смотрите также http://markmail.org/message/2iw4esthqvs5rc2a