LINUX.ORG.RU
ФорумAdmin

HPC и виртуализация?

 , ,


1

2

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

Необходимо заполнить пробел между локальным PC и вычислительным кластером. При использовании кластера есть некоторые административные и технические ограничения, которые усложняют работу.

Принято решение купить производительную рабочую станцию, которую я буду администрировать.

Мне хотелось бы сделать все стильно, модно и молодежно, с отдельными виртуальными машинами (KVM) на каждую задачу. Каждый процент производительности выжимать не нужно, удобство рабочих процессов стоит здесь на первом месте. Но сильная просадка производительности из-за виртуализации, противоречила бы здравому смыслу.

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

Можно ли организовать виртуальные машины без существенного снижения производительности (CPU, GPU, I/O)?

★★★★★

Ты хочешь использовать инструмент который был создан для решения обратной задачи, максимальной утилизации железа виртуалками, которые не жрут CPU 100% времени, что бы это самое железо не простаивало))

То что ты хочешь это же классический пример для OpenMP, каждая задача жрёт 100% ресурсов N времени, т.е. когда надо тебе, запускаешь свою задачу и наслаждаешся, когда другим, они стопают твою и запускают свою

sparks ★★★★
()
Ответ на: комментарий от sparks

Да, возможно, я думаю не в ту сторону. Потому и пришел за советом. От виртуализации мне хотелось получить удобство администрирования.

aquadon ★★★★★
() автор топика

Корректная виртуализация обычно не просаживает производительность, но радикально увеличивает КПД ЦПУ.

Я лично использовал бы XEN вместо KVM, хотя с другой стороны KVM даёт больший КПД использования CPU. И возможно большее удобство.

cvv ★★★★★
()
Ответ на: комментарий от cvv

Корректная виртуализация обычно не просаживает производительность, но радикально увеличивает КПД ЦПУ.

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

aquadon ★★★★★
() автор топика
Ответ на: комментарий от aquadon

Скажем твоё железо одновременно должно соответствовать решаемым задачам и быть оптимизированным под виртуализацию.

Например если твой южный мост не умеет виртуализацию то не стоит виртуализировать приложения активно использующие ввод-вывод. Если твое приложение активно использует видеокарту, например обсчитывает нейронную сеть, то твоя видео карта тоже должна уметь виртуализацию.

cvv ★★★★★
()
Ответ на: комментарий от aquadon

От виртуализации мне хотелось получить удобство администрирования.

Может сделать изоляцию всех ядер, кроме одного или двух, а потом с помощью taskset запускать на изолированных задачи?
Причём не обязательно задачу на всех изолированных ядрах, можно и на части, но важно чтобы разные задачи на одном физическом ядре не пересекались и каждая задача сидела на своём ядре занимая его полностью без соседей.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)

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

Во первых: нужна потоковая или пакетная обработка?

Если потоковая

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

Мне хотелось бы сделать все стильно, модно и молодежно, с отдельными виртуальными машинами (KVM) на каждую задачу.

Сейчас «стильно, модно и молодежно» - это контейнеры в Docker.

Для HPC есть даже спец проект: Singularity

Если пакетная

Суммарно много задач, каждая из которых работает часы или дни.

Особо не вижу смысла в своём узле вне кластера. Но.

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

Всё верно он ответил. На HPC-кластере совершенно не нужна виртуализация. Как правило вычислительный узел базируется на минимальной установке ОС, с выпиливанием всех лишних служб и библиотек. Тем самым максимально отдаётся процессорное время пользовательским программам. Даже сотые доли процента процессорного времени на ядро, могут уменьшить на несколько процентов суммарное время работы активно синхронизирующегося MPI-приложения на нескольких узлах.

От сюда вывод. Все библиотеки и программы работающие на вычислительном кластере к ОС не имеют отношения, хранятся и выполняются в пользовательском окружении. Никого не смущает на кластере с Centos 6.x использовать последние версии компиляторов.

Отсюда и мода к environment modules на кластерах.

Ищё одно сильное место нормального кластера: Кластерная ФС. Таже Люстра спокойно обходит локальный SSD. А про объём и говорить нечего.

Хорошим подспорием при работе на кластерах является EasyBuild

Так что:

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

Скорее смахивает на неумение работы на нём.

AlexVR ★★★★★
()
Последнее исправление: AlexVR (всего исправлений: 1)
Ответ на: комментарий от aquadon

От виртуализации мне хотелось получить удобство администрирования.

Не получишь. Поверь. В этом случае потрать 1-2 дня на Ansible.

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Спасибо за развернутый ответ! Я вижу, что неправильно изложил задачу.

Не стоит задачи собрать ещё один кластер, на котором будут считаться задачи неделями. Стоит задача собрать рабочую станцию немного мощнее обычного PC, на которой будут интерактивно работать четыре человека через тонкие клиенты в виде ноутбуков. Вычисления, которая я буду на ней запускать, занимают минуты. Нечто вроде отладочных запусков и тестов при написании кода.

На кластере в режиме «все свое ношу с собой в пользовательском окружении и компилирую из исходников» я действительно работаю впервые. Но и помимо этого есть и другие ограничения по способам подключения - интерактивный ssh доступ не предоставляется, только batch-job или графическая сессия (которой невозможно нормально пользоваться при подключении из вне).

Видимо, на счёт буквы H в HPC я погорячился.

Ожидаемый уровень железа: 64 GB RAM, 16-24 core CPU, 2 быстрых SSD. Видеокарты по необходимости (мне они не нужны, но один из коллег использует).

Увы, кроме меня никто не будет ничего компилировать из исходников и т.д. Попросят установить Ubuntu/Windows (причем каждый свое) и т.д.

Именно по этой причине я и хотел виртуалки.

aquadon ★★★★★
() автор топика
Последнее исправление: aquadon (всего исправлений: 1)
Ответ на: комментарий от aquadon

Попросят установить Ubuntu/Windows (причем каждый свое) и т.д.

Тут без виртуализации вообще никак ИМХО. А если нужен доступ к железу - то тут только KVM/VMWare(последнее в контексте видеокарт сильно вряд ли - если у вас конечно не завалялось бюджета на nvidia grid).

Pinkbyte ★★★★★
()

Мне хотелось бы сделать все стильно, модно и молодежно

Необходимо заполнить пробел между локальным PC и вычислительным кластером

https://cdn.shopify.com/s/files/1/1214/6676/products/IMG_6354_Product_1024x1024@2x.jpg?v=1567881055 ну так собери сам.

ukr_unix_user ★★★★
()
Последнее исправление: ukr_unix_user (всего исправлений: 1)

Тебе надо, чтобы хост не засорялся от твоих задач? Попробуй контейнеры. По контейнеру на задачу.

И, да, ты не сказал, на cpu дробите или на gpu?

aol ★★★★★
()
Ответ на: комментарий от aol

Я делаю на CPU, другой человек запросил GPU. Но я с ним ещё не обсуждал подробно его потребности.

aquadon ★★★★★
() автор топика
Ответ на: комментарий от aquadon

64 GB RAM

Мало. Бери больше, от 256ГБ.

Говорю по опыту, но тут надо смотреть какие задачи собираетесь решать.

Пример. Для расчёта потребовалось не меньше 10ГБ на ядро. На кластере можно задействовать 6 ядер из 20 на узле, но взять побольше узлов. На отдельно стоящей это уже не эффективно.

В группе из нескольких человек это может быть регулярно.

Попросят установить Ubuntu/Windows (причем каждый свое)

В крайнем случае. Или памяти ещё больше надо.

Лучше ориентироваться на конфигурацию близкую к кластерной. Остальное решат контейнеры или EasyBuild.

Определите список ПО которое хотите использовать. Далее распределите его по следующим категориям (в порядке приоритета):

  1. То что можно запустить нативно:
    • вручную скомпилировать и описать в modules;
    • задействовать виртуальные окружения: аля pyenv для Python, stack для Haskell и т.п.
    • системы автоматизации сборки: EasyBuild и т.п.
  2. Контейнеры
  3. Vagrant
  4. ВМ управляемые вручную.

Желательно не опускаясь ниже 2, 3 - крайний случай, 4 - думайте как от этого избавиться.

Рассмотрите инструменты коллективной работы, такие как JupyterHub.

Не используйте root-доступ. Вообще ни как и ни за что. Особенно сам. Уже два админа через root - это кусок слипшейся лапши.

Все административные действия только через Ansible или т.п.

Видеокарты по необходимости

GPU - самый дешёвый способ ускорить большое число вычислений. Так или иначе всё вертится вокруг массовых матричных вычислений.

AlexVR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.