если есть лучший стек, чтобы спросить об этом, пожалуйста, дайте мне знать.
У меня есть симуляция, на выполнение которой уходит 3-4 дня . Я хочу запустить многие из них с различными параметрами, определенными в текстовых файлах, на удаленных машинах с Linux через ssh (скорее всего). Я уже делал это с помощью комбинации bash, python, ssh и screen. Мои сценарии отправляют (или транслируют множество наборов) входных файлов в каталог на удаленных машинах и запускают симуляцию на отдельном экране. У меня есть сценарий, который проверяет, завершена ли симуляция, и когда это происходит, у меня есть другой сценарий, который удаленно обрабатывает результаты, а затем собирает их.
В настоящее время у меня есть несколько проблем. Некоторые из удаленных машин являются лабораторными компьютерами, а это означает, что хотя они и не должны быть выключены, они неизбежно выключаются время от времени. Симуляция записывает выходные данные каждые 10 временных шагов , так что больших потерь в работе нет, но симуляцию необходимо перезапускать после повторного включения компьютера. Иногда симуляция дает сбой, необходимо удалить последний записанный временной шаг и перезапустить симуляцию вручную. В связи с этим я могу запросить удаленные машины с помощью скрипта, чтобы убедиться, что симуляция успешно завершена, но я не знаю, как проверить, запущена ли симуляция или ожидает перезапуска без использования ssh и top.
Я хотел бы сделать этот процесс более сложным и упорядоченным. Сама модель была разработана кем-то другим (это модель OpenFoam CFD, если это имеет значение), и я унаследовал ее, чтобы использовать ее для работы по метамоделированию и оптимизации, и это не входит в мою компетенцию, чтобы действительно углубляться в моделирую многое сам.
В идеале я хотел бы создать панель инструментов или CLI , которую я мог бы использовать для надежного, удаленного и легкого управления этими симуляциями. Я хотел бы использовать Python, если это возможно, потому что мне было бы удобнее с ним, и я также вполне доволен bash , хотя моя работа в bash намного более хакерская.
Я ищу шаблоны проектирования или инструменты , которые позволили бы мне запрашивать пул компьютеров, которые у меня есть, программным способом , проверять состояние моих симуляций программным способом, а затем программировать поведение на основе этих статусов.
Например: когда компьютер выключается во время одной из моих симуляций, я обычно не осознаю этого, пока не посмотрю результаты, в противном случае процесс занимает довольно много времени, так что много потерянного вычислительного времени. Есть ли инструмент bash или ткань или paramiko позволяют мне получать уведомления, когда машина выключена? Глупо ли настраивать задачу на машине, которая, как я знаю, не будет отключена, которая будет постоянно опрашивать каждую из моих машин, чтобы проверить, включены ли они?
Если это не представляется возможным, стоит ли переходить в облако? Во-первых, я беспокоюсь, что это будет стоить мне (я не думаю, что у меня есть на это бюджет) и что будет много хлопот, чтобы настроить правильную среду, но я ошибаюсь? Это не то, с чем я знаком.
TL:DR Я хочу иметь возможность программно запрашивать состояние и перезапускать симуляции на удаленных машинах через ssh.
Предлагаю посмотреть на это. Я сам не использовал его, но в следующий раз, когда мне нужно будет делать такие вещи, как это:
RQ (Redis Queue) — это простая библиотека Python для постановки заданий в очередь и их обработки в фоновом режиме с рабочими процессами. Он поддерживается Redis и имеет низкий барьер для входа. Его можно легко интегрировать в ваш веб-стек.
Один намек: вы говорите, что моделирование занимает 3-4 дня. Я бы попробовал порезать на мелкие кусочки. Есть ли способ сделать параллельную обработку? Это имеет много преимуществ:
Я не эксперт в этом, но я подозреваю, что грид-вычисления — это технический термин для ваших нужд.
Одним из первых таких инструментов был Xgrid от Apple, основанный на Zilla от Next, Inc. Сейчас снят с производства.
HTCondor кажется решением, которое может сработать для вас. Это долгосрочный проект с открытым исходным кодом в университете. Он работает на Linux и других ОС.
Oracle Grid Engine — еще один такой проект. Разветвлен на различные связанные проекты.
В Википедии есть этот список проектов грид-вычислений .
МагунРа
Огадей
ps
может быть полезной утилитой командной строки. Эта ссылка выглядит весьма полезной для дальнейшего развития: anyexample.com/linux_bsd/bash/…Отменить
Огадей
Огадей
Отменить
Стив Барнс
Огадей