Я не знаю ответа, но вы должны задать этот вопрос в списке рассылки пользователей Condor. Люди, которые поддерживают функциональность DAG в Condor, следят за этим и отвечают. См. эту страницу для информации о подписке. Это довольно низкий трафик.
Как правило, довольно сложно хранить две работы на одном хосте в Condor без предварительной привязки их к конкретному хосту, DAG или без DAG. Я на самом деле не могу придумать действительно жизнеспособного способа сделать это, чтобы позволить B начать раньше, чем C или C начать раньше B. Если вы были готовы к тому, что B всегда должен начинаться до C, вы могли бы выполнить часть работы, которую задание B в начале работы изменяет часть Requirements в ClassAd задания C так, чтобы в нем была строка "Machine ==", где указано имя машины B. Это также потребовало бы, чтобы задание C было представлено отложенным или не отправленным вообще до тех пор, пока B не будет запущено, B также придется разблокировать его как часть своей начальной работы.
Это довольно сложно ...
Так что у меня просто возникла мысль: вы можете использовать динамические функции запуска / слота Condor и свернуть DAG, чтобы достичь того, чего вы хотите. В вашей группе обеспечения доступности баз данных, где у вас в настоящее время есть два отдельных узла, B и C, вы сведете это в один узел B ', который будет запускать одновременно B и C при запуске на машине. В рамках требований к работе вы отмечаете, что на машине требуется 2 процессора. Переключите ваши startd на использование динамической конфигурации слотов, чтобы машины объявляли все свои ресурсы, а не только статически распределенные слоты. Теперь B и C работают одновременно на одной машине всегда. Существуют некоторые проблемы с голоданием динамических слотов, когда у вас есть несколько многопроцессорных заданий в очереди с множеством однопроцессорных заданий, но это, по крайней мере, более легко решаемая проблема.
Другой вариант - пометить B 'специальным атрибутом задания:
MultiCPUJob = True
И нацельтесь на слот 1 на машинах:
Requirements = Slot == 1 && ...your other requirements...
И есть политика запуска статических слотов, которая гласит: «Если задание с MultiCPUJob = True пытается запустить меня в слоте 1, выгрузите любое задание, которое находится в слоте 2 на этом компьютере, потому что я знаю, что для этого задания потребуется 2». ядра / ЦП».
Это неэффективно, но может быть сделано с любой версией Кондора после 6.8.x. Я на самом деле использую этот тип настройки в моих собственных статически разделенных фермах, поэтому, если для работы требуется отдельная машина для бенчмаркинга, это может произойти без перенастройки машин.
Если вам интересно узнать больше об этом параметре вытеснения, дайте мне знать, и я могу указать вам на дальнейшее чтение конфигурации в архивах списков пользователей condor.