Однажды в DEPO Computers поступил запрос рассчитать решение для 10 дизайнеров-проектировщиков, работающих в 3ds Max. Подобрать требовалось не только рабочие станции, но и рендер-сервер для визуализации полученных результатов. С графическими станциями проблем не возникло, но вот рендер-сервер никак не хотел вписываться в бюджет. Объем работ по рендерингу предполагался не большой, но скорость выполнения расчета требовалась высокая. Я порекомендовал заказчику использовать распределенные вычисления на всех рабочих станциях средствами сетевого рендеринга, но заказчика не устроил этот вариант. Он сообщил, что при запуске расчета, все сетевые машины загружаются на 100%, и возможность локальной работы практически исключается. При этом доступные средства, позволяющие отрегулировать нагрузку на сетевые машины участвующие в расчете, довольно сложны и не всегда могут решить поставленную задачу.

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

Основой решения стала изоляция ресурсов предназначенных для локальной работы и ресурсов выделяемых для сетевых расчетов. Эта задача решилась переносом вычислительных ресурсов в виртуальную среду и объединением в вычислительный кластер. Виртуальная среда была построена на базе гипервизора Parallels Workstation 6.

Пример реализации

На все графические станции устанавливается операционная система и гипервизор Parallels Workstation. С помощью гипервизора создается виртуальная машина, на которую устанавливается операционная система – в нашем случае это Windows 7, но возможна установка различных операционных систем. В нашей конфигурации хост-машина имеет 12 вычислительных потоков, для виртуальной машины выделяется 10 из 12. Оставшиеся 2 потока обеспечат стабильную работу хост-машины.



Также в распоряжение виртуального вычислительного сервера выделяется физический сетевой адаптер для обеспечения высокоскоростного доступа в локальную сеть. Виртуальная машина получает необходимый для работы объем оперативной памяти и дискового пространства.



На хост-машины устанавливается специализированное программное обеспечение, позволяющее производить сетевые расчеты. На виртуальные машины устанавливаются программные модули (решатели), которые позволят идентифицировать машину в сети в качестве звена вычислительного кластера.
В нашем случае используется программа Autodesk 3Ds MAX для трехмерного моделирования и система визуализации Mental Ray с поддержкой сетевого рендеринга. Для того чтобы при расчете рендера использовать вычислительные мощности сетевых машин, прописываем IP-адреса каждой машины в настройках системы визуализации. В нашем примере задействованы 5 графических станций, одна из которых является инициатором расчета.



В процессе рендеринга система визуализации задействует 90-100% вычислительных мощностей всех машин, участвующих в расчете. Так как в гибридном решении для виртуальной машины выделяются не все ресурсы станции, во время сетевого расчета хост-машина сохранят способность к локальной работе. На изображении приведен пример загрузки вычислительных ресурсов виртуальной машины и хоста при следующей нагрузке: виртуальная машина участвует в сетевом расчете, а на графической станции локально проигрывается Full HD видеоролик и производится обработка 3D-объекта.



Монитор ресурсов показывает 100% загрузку виртуальной машины и 93% загрузку графической станции. Если для локальной работы графической станции требуется больше вычислительных мощностей, то в настройках гипервизора можно перераспределить ресурсы в пользу хоста.
В момент, когда работа на графической станции не велась и активной была только виртуальная машина, загрузка хост-машины снижалась до 50-60%. Это означает, что существует запас вычислительных ресурсов для локальной работы графической станции.



Прирост производительности в этом решении пропорционален количеству ядер, участвующих в расчете процессоров (при условии, если они одинаковые)

Таким образом, гибридное графическое решение для кластерных вычислений позволяет эффективно использовать вычислительные ресурсы каждой графической станции без ущерба локальной работе и производить несложные расчеты без использования выделенных серверов. Это решение можно применять для повышения производительности системы в программных продуктах ANSYS, MSC, Mental ray, V-Ray и других программах, использующих распределенные вычисления.

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