#condor #preemption
Вопрос:
Я новичок в Condor и в настоящее время играю с MiniCondor, используя изображение htcondor/mini из Docker Hub.
Я хочу провести несколько экспериментов с механизмом вытеснения. Я цитирую документацию:
При рассмотрении приоритетов пользователей переговорщик не будет отменять задание, выполняемое на данной машине, если выражение PREEMPTION_REQUIREMENTS не примет значение True, и у владельца неработающего задания будет лучший приоритет, чем у владельца выполняемого задания.
Поэтому первое, что я сделал, это зашел в файл конфигурации, установил значение PREEMPTION_REQUIREMENTS в True и запустил condor_reconfig
. Затем я создал нового пользователя под названием priouser и дал ему Реальный приоритет пользователя 1.0 при использовании condor_userprio -setprio
. Затем я изменил приоритет существующего пользователя-отправителя на 1.000.000.
Изображение MiniCondor может одновременно выполнять только 4 задания, поэтому я отправляю 4 задания с помощью submituser (просто сплю 60 секунд и выхожу), затем отправляю еще одно с помощью priouser.
Ожидаемое поведение Кондора состоит в том, чтобы вытеснить одно из заданий от отправителя и сначала запустить задание от приора. И сначала происходит вот что: первое задание от отправителя возвращается в режим ОЖИДАНИЯ, а задание от приоусера начинает выполняться. Но через 5 секунд задание от приоузера переходит в режим ОЖИДАНИЯ, а то, которое было остановлено, перезапускается… В течение 5 секунд, прежде чем их снова остановят, чтобы позволить другим работать, и так далее, пока не появятся свободные слоты для их одновременного запуска. Хотя свободных слотов нет, эти два задания продолжают убивать друг друга каждые 5 секунд.
Вот скриншот того, как это происходит:
Тем не менее, когда я сначала отправляю задание с priouser, а затем 4 задания с submituser, последнее задание от submituser вежливо ждет, когда закончится задание prio, чтобы начать запуск.
Что заставляет задание prio останавливаться через 5 секунд после отмены задания с более низким приоритетом ?