Определить, какой сервер является лучшим выбором для задачи с высоким уровнем потребления ресурсов.

Если вы можете настроить свой сценарий таким образом

#!/bin/bash

. config

. /path/to/sub-script

Любые переменные, инициализированные в config , должны стать доступными для основного сценария, а любые скрипты, исходящие от него.

Объяснение

Похоже, ваш сценарий запускал новый неинтерактивный процесс оболочки, переменные оболочки, инициализированные в родительском сценарии, были бы недоступны, но экспортированные переменные среды должны быть доступны новому дочернему процессу.

4
28.05.2016, 11:45
1 ответ

Вам следует искать распределенный планировщик задач / заданий, систему управления кластером или управление облаком. Многие из них уже существуют; Кас указал на несколько в своих комментариях, и Google покажет еще много.

Я подозреваю, что вы все будете намного счастливее, когда развернете его, и вам больше не придется беспокоиться о том, чтобы все время наступать друг другу на пятки. Кроме того, вы должны исправить свои серверы так, чтобы ошибки просто приводили к сбою задачи, а не к остановке машины.

Если вы настаиваете на создании своего собственного (что, признаюсь, я сделал - хотя это было 15 лет назад), задачи в целом потребляют несколько разных типов ресурсов, и вы, вероятно, захотите подумать, какие из них берут на себя ваши задачи:

  • память (RAM) [у вас идет очень медленно или происходит сбой, я думаю, это большая проблема для вашей задачи make ]
  • пропускная способность дискового ввода-вывода
  • дискового ввода-вывода операций в секунду (ищет)
  • дисковое пространство
  • время ЦП
  • время графического процессора
  • пропускная способность сети

Вы можете проверить использование памяти через бесплатно , дисковый ввод-вывод через iostat , пространство с свободным , использование ЦП через cat / proc / loadavg (в Linux) или время безотказной работы , вверх , ps и т. Д.

Но, конечно, с проверкой текущих чисел есть проблемы - возможно, ваша задача make сначала выполняет несколько простых действий, занимая несколько минут, а затем запускается. огромный процесс, который требует гигабайт оперативной памяти. Это могло произойти:

  1. Алиса запускает сценарий, чтобы запустить задачу «make».
  2. Скрипт проверяет serverA, видит, что у него много свободной оперативной памяти, низкая загрузка ЦП, запускает задачу на serverA.
  3. Вскоре Боб запускает сценарий, чтобы запустить другую задачу, требующую большого объема оперативной памяти.
  4. Задача Алисы еще не дошла до ресурсоемкой фазы. Поэтому, когда сценарий проверяет serverA, у него все еще есть тонны свободной оперативной памяти. Также запускает задачу Боба на сервере A.
  5. Задача Боба съедает большую часть свободной оперативной памяти на serverA
  6. Задача Алисы, наконец, переходит к части, интенсивно использующей оперативную память, но теперь доступной оперативной памяти нет. Ой-ой! ServerA лупит насмерть.

Да, вышеизложенное основано на опыте написания одного (хотя для того, для чего я использовал свой, это было процессорное время).

0
27.01.2020, 21:03

Теги

Похожие вопросы