Гетерогенное кластерное решение для НИОКР

Гетерогенное кластерное решение для НИОКР

Я работаю в исследовательской лаборатории с несколькими физическими машинами с разными спецификациями. Машины имеют разные процессоры (некоторые Intel, некоторые AMD), разные размеры оперативной памяти, некоторые имеют дискретные графические процессоры, а некоторые нет.

Наше текущее решение основано на SSSD и Kerberos, так что пользователи могут входить в свои учетные записи с любого терминала и иметь доступ к своим файлам. Проблема в том, что таким образом пользователи «привязаны» к одной машине во время работы, что приводит к неоптимальному распределению ресурсов.

Поэтому мы ищем альтернативное решение для нашего кластера. Наша главная цель — по-настоящему объединить все машины, т. е. с точки зрения пользователя кластер состоит из одной машины. Однако, как мы выяснили, такое решение, как Slurm, не идеально, поскольку мы не хотим полагаться на планировщик заданий. Решение, которое мы представляем, выглядит примерно так: когда пользователь входит в систему, он может указать необходимые ему характеристики (ОЗУ, количество ЦП, дискретный ГП и т. д.), затем создается виртуализированная среда с желаемыми характеристиками (например, образ Docker или виртуальная машина). Затем пользователь может использовать эту среду как обычный «компьютер». Тем не менее, ресурсы для этой виртуальной среды должны быть взяты из кластера, а не из одной машины. Также должна быть возможность совместного использования больших наборов данных, к которым может получить доступ каждая «виртуальная среда». Кластер также должен иметь систему аутентификации и разрешений.

Мы искали инструменты кластеризации, которые могут достичь нашей цели, но не уверены, какой из них выбрать. Мы рассматривали Mesos, OS/DB, Docker Swarm, Kubernetes и oVirt, но не знаем, достижимо ли то, что мы хотим, с помощью этих инструментов, и если да, то какой из них лучше выбрать. Мы считаем, что контейнеры могут быть хорошим вариантом для производства, но, вероятно, не лучшим выбором для НИОКР.Можете ли вы нам помочь и дать несколько основных указаний относительно того, что делать и с чего начать?

С наилучшими пожеланиями, pinxau1000

решение1

Согласен с @NikitaKipriyanov, что нельзя объединить ресурсы из нескольких систем в один образ, хотя в прошлом были коммерческие продукты, которые делали это, и они полагались на infiniband для снижения задержки (на мой взгляд, это не очень хорошо работало). Slurm можно использовать как планировщик, но его также можно использовать для интерактивных задач, и тогда он может быть больше похож на менеджер ресурсов.

Каждое задание может указывать количество ядер процессора, количество и тип графических процессоров, объем памяти и т. д. Затем планировщик выберет подходящую и неиспользуемую систему и выдаст вам приглашение оболочки. При необходимости доступна переадресация X11.

Также контейнеры могут быть весьма полезны в среде НИОКР. Вы не должны выбрасывать их, потому что вы не видите в них полезности, но они не являются решением этой проблемы.

решение2

Это невозможно.

  1. Разные ЦП означают, что инструкции могут отличаться. Это кошмар, если вы хотите перенести код между ЦП.
  2. Задержка памяти составляет наносекунды, задержка сети — десятки микросекунд.

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

Связанный контент