What do I put on a NAS for network render?
apxh_dcfac9098f
Posts: 4
I am setting up a small render farm consisting of 1 laptop workstation on Windows 7, 1 desktop slave on Windows XP, 1 desktop slave on Windows 7, a 8 port gigabit switch, and a SeaGate 3tb GoFlex Home NAS.
My questions are...
What has to be set up on each machine?
What do my firewall setting have to be?
How should the NAS be set up?
Should all computer be on the same OS?
Thank you in advanced!
Comments
I'm using a Mac environment for my render farm and also C7.2 Pro, so your mileage may vary. ;-)
I left my settings at the default. I do use all Macs, but they are different OS versions, but all the same version of Carrara. One Mac is a G4 PPC running OS X 10.5, one is a PPC G5 running OS X 10.4.11 and one is an Intel Core 2 Duo (or something) running OS X 10.6 and they all work nicely together. Hopefully the Windows OSes and Carrara will play nice together for you.
The G5 is the Host application and the G4 and Intel Mac are the nodes. Make sure the nodes are up and running before the host application is launched. I usually have a network monitor open just to make sure it's communicating with the nodes- at least until the scene loads. Once that happens, I quit the activity monitor.
I have noticed that C7.2 will load the scene on the host machine before it even begins to send the scene data to the render nodes. This may have changed in C8 as I understand there were improvements to the network rendering options.
I have a mixed network of Macs and PCs. I still find it works best if the rendernodes are up and running before you start the master application, and don't try to render more than one scene without stopping and restarting the nodes. It's a pain, but that gives me nearly perfect success.
Installing stuff:
- You need to install the Carrara "data" folder to every machine: particularly the plants. You need to install any shader, modifier, or tweener plug-ins to the rendernodes, too
- You do NOT need to put any Poser or Studio content in a shared location. It won't be used.
What does Carrara do?
The scene is loaded to the master, and the render is started. Carrara builds up the internal representation of the scene that is used for rendering and begins the first set of buckets. In the background, the network renderer locates each rendernode and begins to send the prepared scene to each one. All geometry and texture information is sent at this time (and is re-sent for each and every render [render, not frame]).
Rendernodes are best for long animations with moderately slow frame render times, or still scenes that take a long time to render.
Problems you might see:
The entire scene is sent to the nodes EVERY TIME. If you have a large and complex scene, it will take a while for the nodes to get started, and you will see that delay every time you start a render. Be patient - if you are doing an animation, it is only sent at the beginning and you will see a benefit "per-frame".
The network thread is lower priority than the rendering threads, and tends to get starved. If the first few blocks (upper-left) of your picture are too busy, the rendernodes may be delayed for a long time. Don't jump to the conclusion that something is wrong just because they take a while (perhaps a LONG while depending on exactly what is in the corner).
This also means that if the scene renders too quickly, the rendernodes will never get a chance to start. Even for animation, if a given frame takes less than half a minute on your main machine then the network thread may get completely starved and never be able to send the scene at all.
Oh goodness.. all my posts on setting up a Carrara Render Farm are gone because they updated their system here. A pity I never saved them. So here is what I found out.
1. All rendernodes must be on the same subnet as the main machine. Thus if your main machine is 192.168.1.14, then your rendernode machines need to be 192.168.1.X where X is some number other than 14. If all your machines get their ip address from the same DHCP server, then this shouldn't be a problem.
2. The settings for Network Rendering can be found by opening the preferences panel in Carrara from the file/Edit Preferences and going to the Render Room option. Honestly just the automatic settings should work for you, though you might want to change your prefeix/suffixes. But this also lists the ports that Carrara Uses. By default the port used is port 5020, so that is the port to have open on your Firewall.
3. After everything is set up and your machines are rebooted, you can go to the Render Room and click "Manage Rendering Nodes." This should list the rendernodes on the other machines on your network. If other machines aren't listed then something is wrong and it can not find them. At this point I would recommend turning off Firewall on the main machine and one of the rendernode machines completely and trying again manage rendernodes again to see if the firewall is still preventing communication. Also, verify you can get to the public folder of the rendernode machine from the main machine.
4. Never render over a wireless network. I've discovered that wireless is not stable enough for rendering to be reliable and if a node locks it can stop your whole renderfarm.
5. If a node does lock, Pause the render, after render pauses go and reboot that machine and start up the rendernode again, then click Resume Render. Your render will then pick up where you paused it.
6. Never render a long animation into an animation format. If something happens (like a network glitch or something else) the animation format may not be properly closed and you can loose all your work up to that point. Always render animations to single frames and then compile them into a finished animation using something like VideoMach.
7. Copy the Carrara 8 etc folder from the main machine to each of the rendernode machines in addition to the data folder. That way your rendernodes have your plugins in addition to the leaves for your trees.
8. One good way to manage your setup is to share your Carrara folder on each rendernode machine. That will allow you to easily copy your etc/data folders to those machines from the main machine after you install new plugins or leaves.
9. Reduce your block size for rendering down to 48. I've found that's the fastest way to render both individual frames and animations over a network..
I hope this helps!
Boojum the brown bunny
Is there any reason for me to have a NAS on the network or will this work without a NAS?
This will work without NAS, but there isn't any reason why you can't also use NAS for storing your render/images to. Just map the NAS drive on your main system and set that as a save point. I wouldn't recommend storing your runtimes or data on a NAS drive, however. I'd worry about datacollisions if to many computers tried to access the same folder.
For myself, I normally save my renders to a webserver machine I have at home so that I can view the images from wherever I am to spot check how things are going. I find that handy since I'm away from home a lot while my renders are going. If I see a problem I can remote into my home system and fix it... usually. :)
Boojum the brown bunny
I agree. Personally, I've pretty much given up using rendernodes with Carrara because of the way it's designed. I tend to shoot for low render time per frame (less than 3 minutes) for my scenes, and IMO the benefits of Carrara's rendernodes with scenes like that are few, if any.
Some other 3D software offerings take a slightly different approach. Rather than sharing the render of each FRAME with the other nodes, some software assigns entire frames to each node. I *think* that it is a more efficient approach, although I could be off on that. I definitely prefer the "frame per node" approach as it's cleaner and I don't think it carries with it the "starving of network threads" that Fenric describes.
Now I'm not saying that you shouldn't use rendernodes, but as Fenric describes, just be aware of what you might encounter. It can be quite frustrating to do all the work to set up the rendernodes on a long animation, and sit there and watch the nodes do nothing because they're getting "starved".
I try to keep my renders to less than a minute on each frame, though I've gone longer than that. I've never measured the efficiency of each node, but I find that even a 45 sec. per frame render time can be helped by using the nodes. I've taken a 45 sec. per frame render and added two dual processor nodes and dropped the per frame render time to around twenty seconds and sometimes as low as 15 seconds.
Your mileage may vary, so you may want to experiment on some scenes with different levels of complexity to see what works best in your situation. My computers are a bit long in the tooth, so I tend to render in layers when possible, and composite in a video editor. This helps speed the renders up quite a bit.