Показаны сообщения с ярлыком Быстродействие. Показать все сообщения
Показаны сообщения с ярлыком Быстродействие. Показать все сообщения

воскресенье, 22 февраля 2009 г.

Укрощение строптивого рендера

Все началось оттого, что вчера я приобрел еще два гига памяти и добавил к существующим, получив в итоге четыре гигабайта оперативной памяти. Сегодня я перекапывал винт и нашел настроенную сцену от Evermotion, которую решил отрендерить. Запустив макс я загрузил сценку и начал рендер. Макс аварийно завершился (далее упал). Я взглянул на настройки VRay. Использовалась связка Light Cache + Quasi-Monte Carlo. Количество сабдивов в Light Cache - 800. Просмотрел свиток System, установил тип памяти Dynamic и лимит в 3000 Мб. Стоял Statick. Также уменьшил Max. tree depth установив значение с 60 в 24. Запустил рендер. Он упал при расчете Light Cache и при загрузке памяти ~ 1500 Мб. Я смог просчитать Light Cache только снизив сабдивы до 400.

Тогда я вспомнил про boot.ini. Дело в том что:
В 32-bit Windows:
Объем виртуального адресного пространства 4Гб, распределено:
2Гб - user mode (пользовательский режим), 2Гб
- kernel mode (режим ядра).
Т.е. приложению (процессу) доступно примерно 2ГБ виртуального адресного пространства в независимости от количества установленной физической памяти. Размер виртуальной памяти в режиме пользователя можно увеличить до 3Гб используя ключи в boot.ini.

Чем я и воспользовался, правда ключ /userva= я не использовал, у меня и так все получилось, как я и хотел. Более точное предназначение этих ключей можно узнать в гугле, я же хочу рассказать что же происходило дальше.

Подправив boot.ini таким образом что он выглядел так:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect /usepmtime/3GB


я перезагрузился. После этого я начал рендерить и сделал несколько скриншотов. Вкратце скажу, что все получилось, я прошел этот порог в 1500 Мб на приложение и отрендерил ту картинку. Самый затратный по памяти процесс в данном случае был рассчет Light Cache.
При 800 сабдивах требовалось выделить около 1600 Мб.

На этом скриншоте идет рендер с настройками в 1500 сабдивов Light Cache (помните, даже 800 была проблема!) Обратите внимание, сколько на данном этапе потребляется памяти!


Опаньки, что творится! Достигнув определенного предела отображения в максе (см. строчку Memory Used: ) я с удивлением заметил, что там память показывается отрицательным числом, причем она увеличивается (близиться к нулю) В менеджере задач все отображается верно и на этом этапе рендера макс потребляет 2,22 Гб оперативки 


Расчет Light Cache почти закончен, но макс падает, видно окошко дебаггера за диспетчером задач. Память достигла 2,43 Гб, а виртуальная - 2,748 Гб. В принципе, виртуальное адресное простанство закончилось (не забываем про другие приложения), поэтому макс упал. Но это уже слишком загнанные настройки, я специально хотел завалить макс. Memory Used: показывает -1720 Мб. Это просто какой-то прикол =)


Кстати, вот конфигурация машины:
Intel Q6600 4x2.4 Ghz 1066 Mhz
Asus P5K-PRO p35
Kingston 2x2 Gb
Ge-Force 8600 GT

вторник, 30 декабря 2008 г.

Тормоза в системе при рендере (V-Ray)

У меня многоядерная машина (Core 2 Quad 6600) и при рендере V-Ray'ем я столкнулся с тем, что не могу работать при рендере: даже самые простые приложения виснут и тормозят. Насколько я помню, раньше, когда у меня была несравнимо более слабомощная машина, таких проблем не возникало. Почему я говорю про V-Ray? Потому что он как раз-таки поддерживает многоядерность, поэтому это актуально. Я думал, что следует указать V-Ray использовать только 3 ядра вместо четырех (это можно сделать через макс скрипт). Но для меня это показалось глупым решением, так как падает быстродействие. В принципе, еще можно уменьшить приоритет макса в системе, но я нашел более удачное решение. 

Следует в настройках V-Ray::System поставить галочку на Distributed Render. При установленной галочке в каждом Render region'e у меня пишеться имя компьютера и система более правильно распределяет задачи - ничего не тормозит и не виснет. Видимо, скорость рендера падает, но незначительно. Преимущество налицо: возможность комфортно работать во время рендера. Самое любопытное, что приоритет процесса не меняется.


Есть еще одно интересное решение. В данном случае, с помощью настроек системы. Следует открыть Task Manager (Диспетчер задач), перейти на вкладку с процессами кликнуть правой кнопкой мыши на процесс 3dsmax.exe и выбрать Set Affinity (Задать соответствие), где следует скинуть галочки с процессора, который вы не хотите отдавать 3dsMax'у.

Тэги