Как составить график сложных работ
Сначала я использовал Linux cron
планировать работу. Поскольку рабочие места и зависимости между ними растут, мне трудно поддерживать их.
Например,
0 4 * * 1-5 run-job-A
10 4 * * 1-5 run-job-B
15 4 * * 1-5 run-job-C
задание B запускается после выполнения задания A, задание C запускается после выполнения задания A и задание B. Я предполагаю, что задание A можно выполнить за 10 минут, а задание B - за 5 минут. Поэтому я позволил заданию B работать в 4:10, а заданию C - в 4:15.
Работа DAG
Как видите, я вычисляю критический путь DAG и время обработки вручную. Это очень тривиально. И по мере роста этих рабочих мест легко ошибиться.
Есть ли лучший способ запланировать эти работы? Я ищу общий, универсальный инструмент для решения этих задач.
3 ответа
Если ваши задания линейны и не выполняются случайным образом, я бы предложил вызывать все эти задания в отдельном сценарии оболочки, и вы можете продолжать добавлять эти задания в этот сценарий оболочки независимо от количества заданий. Потому что вы никогда не узнаете, сколько времени потребуется на выполнение одной работы, учитывая все системные аспекты, такие как незанятость системы, высокая загрузка системы и средняя загрузка системы. Дайте мне знать, что вы думаете.
Отличный вопрос, и вы не одиноки. В сообществе HPC это распространенная проблема, потому что задания могут иметь различное время выполнения, но между заданиями существует сильная зависимость. Я бы посмотрел на то, что эти люди делают для вдохновения. Например, планировщик OpenLava - это планировщик с открытым исходным кодом, который явно обслуживает отображение зависимостей.
Так что бы пойти не так, если бы вы только что сделали
0 4 * * 1-5 run-job-A && run-job-B && run-job-C
тогда B будет запущен только после успешного завершения A, а C - после успешного завершения B.
Просто интересуюсь.:)