Я собираюсь установить Linux-сервер (вероятно, CentOS) в отделе информатики. Сервер будет использоваться в качестве вычислительного сервера людьми, занимающимися исследованиями в области вычислений на GPU, биоинформатики или искусственного интеллекта.
Гипотетически я мог бы просто дать оболочку каждому пользователю и позволить им запускать свои задания, и, вероятно, именно этим я и займусь вначале.
Однако я сталкиваюсь с потенциальной проблемой: иногда машина будет использоваться как вычислительное средство с целью просто получить результаты вычислений, а иногда она будет использоваться как сравнительный анализ платформа, чтобы измерить эффективность новых методов / алгоритмов / чего угодно.
Это означает, что пока сервер используется для задачи второго типа, другие пользователи не должны иметь возможности запускать другие тяжелые задачи, влияя на результаты тестирования.
Поэтому я хотел бы настроить и, возможно, автоматизировать такую систему:
cgroup
, ограниченный только одним или двумя доступными ЦП и ограниченным лимитом использования памяти.cgroup
который имеет доступ ко всем остальным процессорам и не имеет ограничений на использование памятиЕсть ли программный пакет, который помогает автоматизировать такую архитектуру? Все, что я нахожу в Интернете, говорит об оркестровке контейнеров, но разница в том, что я хочу ограничить ресурсы, используемые другие пока моя работа выполняется, поэтому размещение работы в контейнере не помогает.
Я также посмотрел на что-то вроде dockersh
, чтобы реализовать обратное: все напрямую входят в систему внутри контейнера, поэтому я могу легко выделять ресурсы каждому по запросу. Но, dockersh
кажется неподдерживаемым, и я не нашел ничего другого, реализующего ту же концепцию.
Linux с systemd можно установить cgroups управление ресурсами на единицы. Вы можете установить большой коэффициент для machine.slice, например CPUShares=100000
. Затем запускайте важные задания как контейнеры в этом срезе.
Квота, вводимая только при выполнении заданий, может быть более сложной. Квоты статичны и могут нуждаться в корректировке. Возможно, такой сценарий (спасибо Вики Криса)
systemctl --runtime set-property user-1001.slice CPUQuota=200%
Если вам нужны дополнительные функции, такие как управление пакетными заданиями, вам нужно будет найти или написать систему, которая это сделает.