Настройка рендер фермы

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

Сеть.

    Для своих четырех машин я использовал коммутатор D-Link DGS-1008D. От него, конечно, чудес ждать не приходится, но свои 1,5 тысячи рублей отрабатывает. Замеры сети проводил в JPerf. Идет она в двух вариациях, разница только в визуализации. В одной версии используется командный ввод, то есть ручками вводим необходимые нам команды - это, конечно, для продвинутых пользователей. В другой все попроще, откомпилированная на java она имеет более привычный вид и разобраться в ней не составит труда.

d7e12c75e794e9956fbd7cbd49582d35.jpg

0d0884012bc337bdd24c75db73cd0be8.jpg

    По окончанию установки сети замеры показали скорость в 896 Мбит/с., делим на 8 и получается 112 мегабайт за секунду. Тестировалось по схеме: главная машина – это клиент, а ноды сервера. То есть DRServer получит запрашиваемую информацию с примерно такой же скоростью. На мой взгляд это не плохой показатель. Для сравнения, скорость чтения/записи из буфера HDD в среднем идет 120-140 Мбайт/с. В конечном счете считывание информации для последующего рендеринга будет ограничиваться скоростью вашего HDD. Приличное ускорение дадут SSD накопители, так как там скорости уже начинаются от 350 Мбайт/с. При планировании своей рендер-фермы это надо учитывать. Если хотите выжать по максимуму, то стоит поставить SSD.

    Работаю я в Windows 7 и 8.1, на головной машине стоит 8.1, а на нодах 7ка. Вообще без разницы на каких версиях Windows работают компьютеры в сети и с этим проблем не должно возникнуть. Казалось бы, а когда все машины работают на одной ОС, то тут вообще все просто будет. Вот и я решил поставить 8.1 на все ноды и вышло не очень. Возникло очень много глюков с сетью, работала не стабильно, текстуры то подгружаются, то нет, в общем бился я долго, но так и не решил это. Все эти проблемы связаны были с ОС. Позже установив Win 7 все стало работать идеально. Ни разу не подводила меня. Несмотря на то что на головной машине я так и оставил Win 8.1, все работает. Не буду рекламировать ничего, сами решайте, что ставить.

    Настройка сети в Win 7 и 8 ничем не отличается. Первое что делаем назначаем одну рабочую группу компьютерам в сети и присваиваем каждому ноду имя. Заходим в свойства системы и нажимаем "Изменить":

149a1a17770e4a23de6ef1467aa99dab.jpg

    Я назначил своим нодам имена nd0, nd1, nd2, nd3, nd4 и одна рабочая группа RENDERFARM. Рекомендую использовать короткие имена для компьютеров. К примеру, если у вас размер Backet’a в Vray 16x16 или еще меньше, то вы не проследите какой Backet от какого нода в работе. Длинное имя просто не поместиться в контейнер. После внесения изменений нам нужно будет перезагрузится, чтобы изменения вступили в силу.

64f8981c1be81cb5b4127c98db6e36ad.jpg

    Следующее необходимо назначить IP адреса удаленным компьютерам, для этого открываем свойства сетевого адаптера (Панель управления\Сеть и Интернет\Сетевые подключения). Настраиваем IPv4, выбираем его и жмем свойства.

d5f89ac9ee70c245242847d278b89308.jpg

Приводим все к следующему виду:

9ed223c51f773804b0a014094aedfb10.jpg

    IP у меня начинается с 192.168.0.7 – это nd0IP для последующих нодов, соответственно:192.168.0.8 – nd1192.168.0.9 – nd2192.168.0.10 – nd3Все сохраняем и перезагружаем компьютер.

Теперь, желательно "пропинговать" ноды, чтобы удостовериться что все друг друга видят, сетка работает. Нажимаем сочетание клавиш Win+R и вводим cmd. Пишем следующее: ping (пробел) IP адрес.Должно выглядеть так:

3bba82d0f7bccc3330c126c227769dbe.jpg

Нажимаем enter

c9413c4a93500019ecdf19b2cadc5b57.jpg

    При успешном "пинговании" должна быть такая же картина. Все это повторяем для всех нодов. После успешного тестирования можно переходить к настройкам общего доступа.

    Заходим в Панель управления\Сеть и Интернет\Центр управления сетями и общим доступом и кликаем на "Дополнительные параметры общего доступа". Выставляем так:

68ddb826d8c0cf25e5da73d7de8d7b4c.jpg

Ну все, теперь можем расшаривать папки, создавать сетевые диски. Сеть готова для работы.

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

fd245db6d77c368bcac8e9c120ace5fa.jpg

Нажимаем «Расширенная настройка»

e907a2a792ab1ef30a60c0681c83071f.jpg

    Отмечаем пункт "Открыть общий доступ к этой папке". Далее "Применить" и ОК. Возвращаемся к свойствам папки, кликаем на кнопку "Общий доступ"

06bd9cb54fa033ca3b87d32a477a81e3.jpg

Пишем "Все" и нажимаем "Добавить"

e198780b0d9f87d14d883678bfbbd0b4.jpg

    Далее указываем что могут делать с содержимым этой папки другие пользователи. Затем нажимаем "Поделиться". Появится окно, уведомляющее что доступ открыт, готово.

454e3fbcc97d5fecf0b10fa61af79d86.jpg

Управление.

    После сборки рендер-фермы понадобиться монитор, который будет подключаться к нодам, так как устанавливать ОС, настраивать BIOS удаленно не получится. До момента установки драйверов будет неудобно, но потом мы можем установить удаленное управление на наши компьютеры и забыть про клавиатуру, мышку и монитор. У меня управление нодами происходит при помощи программы Lite Manager Free  - это бесплатная утилита для удаленного управления. Есть и более продвинутая версия Lite Manager Pro, но она уже платная, с более расширенными возможностями. Но в моем случае мне достаточно и версии Free. В целом мне понравилось как она работает, ее интерфейс, настройки и стабильность. В рабочем состоянии выглядит она вот так (Viewer):

147704a560060b6fa016952d89776e0a.jpg

Управление удаленными компьютерами происходит в графическом режиме, мышкой и клавиатурой (Server):

3e094be2051b2f2c354b6dcc55b70fea.jpg

    Также работают горячие клавиши и копирование из буфера текстовой информации. Вообще конечно были с ней проблемы, в Windows 8.1. При работе в графическом режиме была сильнейшая задержка, просто невозможно было работать. Как можно было оптимизировал, но это не сравниться с работой в 7ке. Тут все отлично, просто работаешь как на обычном компьютере. Также присутствует функция Wake on Lan. Существуют конечно и отдельные утилиты для посылки «магического пакета», но по - моему, когда все объединено в одной программе, то это очень удобно. Есть еще много чего полезного в ней, все не буду описывать, существует официальный сайт, форум, там все можно почитать. Получилась какая-то реклама, но в любом случае, если вам нравится ваше удаленное управление, то очень хорошо. Можете поделится опытом тоже, будем признательны.

Файлы.

    Работу с файлами организовал я следующим образом. Для нодов доступна только одна расшаренная папка где и лежат все файлы проектов для сетевого рендеринга. Она расположена на головной машине, на рабочем диске, в корне "E:\Farm\". Далее в ней будут просто создаваться папки проектов, куда копируются текстуры, proxy, ies. Выглядит это следующим образом:

3afe992d7fbd74631f7bcf56a2db3aa8.jpg

    Рабочие сцены лежат в другой, не расшаренной папке. Нет необходимости размещать сцены в папке Farm. Главное обеспечить нодам доступ для текстур, proxy, ies наших проектов.

    Для сборки файлов использую стандартный 3ds max’овский Resource Collector. Перед каждым превью сразу собираю в папку Farm все использованные файлы в сцене. Некоторые сетуют что не надежный стандартный коллектор, но не знаю, у меня всегда работал исправно. Сторонними плагинами не пользуюсь. Только файлы типа HDR или EXR ручками скидываю. Может он их не видит, или не считывает с Environment’a. Это его минус кончено, в остальном все хорошо срабатывает. Что касается рабочего ПО, то я работаю в 3d’s Max Design 2015, V-Rray 3.00.7 и Corona Renderer A7.1, соответственно на всех машинах стоят одинаковые версии. Если будут стоять разные, то могут возникнуть конфликты. И вообще, весь софт, участвующий в сетевом рендеринге, должен быть одинаков и на всех машинах. Это касается и мелких плагинов, к примеру, Bercon Maps или Multitexture – Это процедурные карты. Отсутствие данных плагинов будет расцениваться как отсутствие текстур, и вы получите на рендере битые участки, где они должны были быть использованы.

    Теперь, когда настроена сеть, открыт доступ к папке с текстурами, нам нужно указать пути к этим папкам в 3d’s max на каждом ноде.

a0a38ffeed3c0b48d293e1eeae183af7.jpg

Customize > Configure User Paths > External Files

    Жмем Add и открываем сеть, выбираем наш главный компьютер (nd0), папка Farm. Ну а дальше папку, в которой хранятся текстуры. Можно сделать немного по-другому, подключить на каждом ноде сетевой диск. Этот сетевой диск будет, по сути, расшаренная папка Farm. Но только имеет он свойства локального диска HDD и будет отображаться как диск с буквой. При добавлении в пути нужно будет заходить не в Сеть, а в Мой Компьютер, а далее на сетевой диск, как при обычном добавлении путей на стационарном компе. Как подключить сетевой диск будет чуть ниже, только сделаю оговорку насчет них. Я отказался от такого метода добавления путей, так как в Windows 8.1 возникли проблемы с сетевыми дисками. Они были созданы, все работало, с перебоями конечно, в Win 8 вообще мало что работает стабильно, наверно только MS Store, но вот 3d’s max отказался их видеть. Были предприняты масса попыток исправить это, но не получилось. После этого я для себя решил, что буду добавлять пути только напрямую. Либо текстуры грузятся, значит сетка работает, либо нет, отсутствует доступ к удаленному компу. Нет желания больше доверять эти сетевым дискам, даже в Win 7 поставил все напрямую. Все работает исправно. Оставил сетевой диск только для быстрого доступа к файлам.

    Подключение сетевого диска. Открываем Мой Компьютер, вверху под адресной строкой находим "Подключить сетевой диск", нажимаем.

36d59eb23804bc52cad2ffc3a75ea2e7.jpg

558cc32b8683c06063aecf167d69098b.jpg

    Здесь указываем под какой буквой будет создан диск и указываем расположение расшаренной папки на удаленном компе, на основе которой он будет создан. Жмем "Готово". Сразу же должен появиться вот такой значек:

7ea122a05d9374aed0d1e91f3525666a.jpg

Теперь можно пользоваться им как локальным диском.

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

С уважением, Андрей Кузьмин (Andersen)

Комментарии (25)

+4
Yehat
Можно не копировать файлы ресурс-коллектором каждый раз, а просто работать из расшаренной сетевой папки или диска. Сетевой путь-то для всех компов в сети одинаковый. Странно, что в 8-ке с шарой проблемы. Хотя... ведь это же мастдай)))

Добавлю, что если в сети больше 20 компов, то ничего не получится. Вшитое ограничение. Нужна будет лицензионная серверная винда на комп с проектами и текстурами, а её без компа купить трудно (коробку редко продают, чаще только OEM в составе сервера дорогой и дебильной конфигурации), да и стоит она штуку баксов. А если серверную винду крякнуть, то максимальное кол-во одновременных подключений, а значит и рендернод, станет равным 10.
0
Kudryashov
Спасибо за внятно разжеванную информацию=) теперь руки чешутся соорудить себе пару нодов=) ssd на всех компьютерах сети должны стоять или на основном?
+2
SamoreZ
ssd на рендер нодах бесполезен, разве что ускорится загрузка самих нодов и загрузка сцены,текстур, прокси и других мелочей. При рендере интенсивно работате озу и процессор, а винт обслуживает сервисные функции, где минимальная нагрузка, соответсвенно покупка ssd, это просто трата денег. У меня три нода, тачки идентичны, за исключение, того что на одном стоит veretex 2, на другом wd blue ноутбучный на 5400оборотов и wd black 7200 - и разницы в скорости рендера у них нет, да и не может быть. Толк может быть только при ограниченном количестве озу. (на моих по 32гига)

"В конечном счете считывание информации для последующего рендеринга будет ограничиваться скоростью вашего HDD. Приличное ускорение дадут SSD накопители" - если это одна и таже сцена, но просто с разными ракурсами, то сцена вторично не считывается, она уже будет загружена в озу на следующем кадре и даже если разные сцены, то скажите пожауйста - накопитель с 120мб/с с какой соростью загрузит 500мб сцену? А при 350? 1с против 3 =)) А ведь дальше винт не участвует в процессе. Спрашивается -зачем платить больше. Есть только одно приимущество ссд на ноде - быстрая загрузка самого нода, но для этого есть спящий режим =)
0
Kudryashov
а теперь еще вопрос=) вот на основную машину ssd ставить под сетевой диск для нодов, или под систему 3 д макс виндовс и тд , или под рабочюю папку собственно с работой...как в принципе организовать разбиение папок чтоб соеденить ssd и hdd?
+3
Andersen
Не, речь не идет о том, что это напрямую влияет на скорость рендеринга. Только чтение/запись для подготовки рендеринга. Для кого-то соотношние 1 против 3 покажется весомым. Сцены и по 2 и более Гб бывают.

Kudryashov, поставь SSD на головную машину под систему, а под рабочие проекты HDD и на ноды тоже его. У меня у самого все на HDD работает, только система на SSD стоит, на главной тачке.
0
Kudryashov
Спасибо! теперь буду иметь ввиду =)
0
STEALTH
В идеале это один SSD под систему и софт, другой SSD под текущие проекты, и HDD для архива завершенных проектов и библиотек моделей\текстур. Такой конфиг действительно заметно ускоряет рабочий процесс.
0
jekaa
Всем привет! Еще раз -для новичка. Кто-нибудь дайте 100% ответ: как лучше использовать SSD?(сейчас на SSD система, HDD- для проектов и библиотек моделей\текстур) .Хочу купить самсунг 1Т про ,и все туда поставить(изменится ли время рендера?) СПАСИБО!
0
mastergoo
тестировал свою мини ферму: скорость памяти особо не влияет, главное, чтобы объёма просто было достаточно, скорость харда не влияет, в общем, решает только процессор (в vray). сбором сцен никогда не заморачивался, там есть галочка передавать недостающие файлы, если это по каким-то причинам не помогает - можно расшарить диски и присоединить их на ноды под теми же буквами, зачем тратить время там, где это не нужно.
+1
Ahinea
Ну вот сколько людей столько мнений.
Может канешна у меня руки из тухеса, но с расшаренными папками не всегда корректно работает.
Я создал одинаковые папки на всех машинах, на одном и том же разделе диска, и дабы не путаться стоит в шелдере синхронизатор с головной машиной. В итоге имею три базы моделей и maps, но вапсче забыл о согласовании путей.
Место на жестком валом да черт с ним :))
Тут как раз скорость винта и сказывается, но так как она либо равна, либо выше скорости сети, все боль-мень.
+1
Yehat
Кроме скорости процессора и обьёма оперативы, больше ничего не имеет значения, даже самого малюсенького.
+1
SamoreZ
"3ds max’овский Resource Collector" - не знаю как у вас, а у меня оно не собирает vray proxy (max2014), что крайне неудобно и не практично, тк ручная сборка и копирование занимает куда больше 3 секунд, пользуюсь альтернативой :)
Хотя мож в 2015 это поравили :D
+1
filatkin_m
Айпишники можно на роутере прописывать. По моему, так легче администрировать. Там же, кстати, можно отрубить интернет для нодов, чтобы антивирусники на них не ставить. Удалённой гляделкой можно работать штатной виндосовской, очень удобная, не вижу причин её заменять на сторонюю.
+1
lih_81
Автор спасибо за статью, очень полезно. Хотелось бы добавить из своего опыта. Для сетевого рендера нет такой необходимости создавать отдельную папку для текстур и прочего, так как создаешь клоны уже существующих текстур. Достаточно просто следить за правильностью написания путей к ним. Например путь следующего формата Z:\PROJECTS\... ноды не увидят и будут битые участки, а вот путь формата \\Server\z\PROJECTS\... будет корректен для всех машин которые участвуют в рендере (Server - это название машины на которой хранятся все проекты и текстуры в моем случае). Проверять и править пути в максе можно через Manage--> Asset Tracking--> Кликаем ПКМ на текстуре и выбираем Set Path (для тех кто не знает). С помощью этого метода нет необходимости дублировать текстуры в спец папку, да и работать в команде так удобнее и нет опасности что при Resource Collector перезапишутся текстуры с одинаковыми именами (а такое возможно если пользуешься моделями из 3ddd)
0
Ahinea
Что-то у меня пару раз глючило, дедовский метод он надежней, хотя место жрет!!!
В любом случае спасибо, как-нить по пробую, но если честно уже привык и менять лень... Ну как за терабайт вылезет буду думать :)
0
lih_81
Ну тут дело привычки, знаю людей которым нравится только первый метод. Мне удобно так. Хотя если по уму то лучше сваливать все текстуры в отдельную папку для каждого проекта, что бы вдруг не отредактировать библиотечную текстурку которая используется например в другом текущем проекте. Да и за именованием тоже по хорошему следить надо, чтоб дублирующих имен не было. Но для маленькой студии оба варианта хороши.
А по поводу глюков, это скорее всего сетевые глюки, у меня тоже пару раз бывало, но простой перезапуск рендера почему то всё исправлял.
+1
Prog
Яростно плюсую! Автору поклон. Отдельное спасибо всем за дополнения в комментах.
PS: Win8 по-моему зло злейшее, с содроганием вспоминается недо-Vista...
0
ustym
стаття , супер +
+1
h1tman
Не знаю говорилось ли тут, по крайней мере я не нашел и на всякий скажу. Vray 3.0 сам может перекидывать все текстуры на остальные компы на начальном этапе рендеринга, надо лишь в настройках distributed rendering поставить галку Transfer missing assets.
0
dizzona
У меня сработало именно это!
0
kapanton
А использовать Backburner не пробовали? мне кажется очень удобное решение для отправки заданий на ноды
0
lih_81
Да, Backburner отличная вещь а еще лучше deadline, но думается что для фрилансера или для команды 2-3 человека они практически не нужны, так как в производстве обычно находится 1-2 проекта максимум 3 и то все на разных степенях готовности, поэтому достаточно связки дистрибутивного рендера и batchrenderer. Но это не касается тех, кто занимается анимацией, в этом случае Backburner и т.п. мастхэв.
0
sermen
вот если через backburner другие компы рендерят в другой гамме в чем может быть проблема? Через distributing render все четко работает.
0
yry_m
Полезая статья, но у меня вопрос, кто-нить имеет опыт настройки Сarbon рендер фермы?
0
Игорь1969
У меня бывает при тяжелой сцене, (классический интерьер, или не дай бог displaisment в материале где затисался, на ноуд отправка идет очень долго, может к концу просчета подключиться этак минут через сорок, а то и вообще не хочет, в зависимости сколько памяти кушается. Поэтому на таких сценах рендерю по раздельности - на одном компе один ракурс на другом, другой.....Вопрос- исправит ли ситуацию установка ssd на ноуд. может быстрее будет грузить сцену для того что бы нода быстрее включалась в работу.
Кстати проверял что общая папка текстур ( хранятся все текстуры в базе) что текстуры собранные через ресурс коллектор в отдельный проект - грузятся по времени совершенно одинаково, так что вообще не вижу смысла в этом геморое. Для себя просто когда скачиваю новую модель и перекидываю по папакам текстуры- слежу чтоб не было совпадения имен, когда такое случается если текстуры эдентичны, то просто выкидываю, если совпадение имени, то меняю его. Тогда придется открыть этот файл и заново указать путь к новой текстуре.