Rendering on an 8-core with 2 blenders is faster

Today i am going to share some “trick” that i discovered on recent productions. First let me explain that I set up a small render farm environment (based on personal php/mysql system) in our studio.

brender renderfarming system

brender renderfarming system

the basic
Our fastest machine is an 8-core mac. By checking the CPU usage during renders it clearly came out that there were times when the system was not using all cpus at max (either when transfering files, talking with server, getting the blend files, building shadow maps or other maybe non multi-threaded tasks). So the solution was to actually launch 2 instances of the render client script on the same machine and thus having 2 blenders rendering simulteanously . And now i can hear you …you are going to tell me “but hey it drops down your per-frame render time!!”:-) And yes sir you are perfectly correct! it slows down the per-frame rendering…but not enough down.
The numbers talk for themself :
One instance of blender rendering i get an average render time per frame : 38sec
With 2 instances the average per frame is not 1min16 as one would expect but 43sec.

 

A rapid useless but fun calculation tell us that for a 100 frames anim, i get 64mins of rendering (38sec*100frames/60) and with a “dual-blender” i get 36mins (80sec*50frames/60). Voila!
This scene (scene03 from current project) indeed includes quiet a good amount of compositing, which i do believe is not multithreaded yet.

Other tests : scene 04_office
2 blend 37 sec
1 blend 23 sec

And with the blender benchmark file from eofw.org _
2 blend average 31sec.
1 blend 17 secs. ( yes its slower from other mac pro results , but i renderer slightly bigger and OSA 8)

The .exr temp files problem
So we already used this “trick” on the H7 robot movie. But at that time we did not use full sample FSA. This is were we got the temp files problem. I do not really understand how blender works for saving the sample passes in an .exr temporary files, but it seemed that by launching the render client in a same user session, it got access both time on same destination. This made blender not able to either overwrite or simply write, and thus crashing or exiting without rendering.
I tried different solutions like having a separate blender installation for the second render client instance, as well as running the client script in different user in the terminal… strangely it did not affect anything.
The workaround solution we found (thanks to a patagonian yogi guru) was to start an other session on the same computer to run the render client.
I am suspecting my lame render farm settings to be the only mistake in that 🙂 but at least in the end it worked.

So a tip to all people with a 8-core machine, or even 4-core i am sure u might get results, when rendering a long heavy animation: launch 2 instances of blender and use Touch Overwrite 🙂
for more infos on TouchOverwrite : http://www.blender.org/development/release-logs/blender-246/distributed-rendering-new-render-options/

please let me know if you do get some rendering speed improvement.

Advertisements

4 Responses to “Rendering on an 8-core with 2 blenders is faster”


  1. 1 bensimonds May 8, 2009 at 1:54 pm

    Interesting. I’m mostly just jealous that you have an 8 core mac though!

  2. 2 Sissi May 18, 2009 at 9:23 am

    Huhuhu,你好棒哦(虽然我看不懂你的术语)。宝贝,加油!

  3. 3 Peter January 20, 2011 at 7:34 pm

    Just came across your Blog on my search to speed up building of the Raytree. Great Tip that worked nicely for the simplistic animation I am working on right now.

    Anyway, while rendering I looked at the process monitor and it seems that Blender does not use only a fraction of the cores and/or processing power during “preparating of scene data” and “building raytree”. I would assume that this a second Blender instance uses what is not used by the first one during these phases. Thus the gain in efficiency.

    BTW. Very interesting projects. I’ll check by from time to time!

  4. 4 Rafael April 7, 2014 at 3:44 am

    Hi guys! Thanks for this tip!

    I think I know why it crashes with the “run as adm” option. I did the “run as” in a command prompt and notice that the env variable “appdata” was the same for both users.

    So, even running with two different users, both were being pointed to the same cache folder in “appdata”. That was when I did this:

    1-created a new administrator user, with a password
    2-login with it, at least once to create all user folders.
    3-log out
    4-enable the service “secondary logon” on windows. May need to restart
    5-right click blender.exe holding shift. Now another option will appear
    6-choose “Run as a diff user” option
    7-type the other user login and pw
    8-Done, you’ve got a new session

    Like this the BVH and other cache files are created in different destinations folders.

    I think we can make fun of M$ on this one. When you “run as adm” you expect to have a new session, and not share dirs and env memory stuff.

    Well me know if it work for you guys. For it has been running just fine.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




Categories

Flickr Photos

Darth Vader menacing Imperial Officer - Lego

Maranola, Cinque Terre, Italy

Kids at sunset in Cinque Terre, Italy

More Photos

@oenvoyage latest Twitter


%d bloggers like this: