Nuke 11 Frame Server setup

Nuke 11 Frame Server setup

Recently I was working on a short film called “June”, directed by actor/director Dwayne Cameron. Unfortunately, the render farm software in the facility is under maintenance. Fortunately, it opened up an opportunity for me to look into Frame Server in Nuke 11 to learn how to utilize the whole room of computers around me! Basically, frame server is now a standard feature in Nuke (Not only in NukeStudio), it’s kind of like a render farm software that comes with Nuke itself, that allows you to distribute your nuke script for other computers to render.

Surprisingly there’s not a lot of documentation out there and I mainly reference The Foundry’s guide and took me a while, so here’s what I figured out.

 


Steps

To clarify, a frame server is like any render farm system. There’s your main workstation which you use, and the slave machines you want to use for render only. Below are the things you requires to get frame server up and running.

    1. Main workstation’s IP address/System name (You don’t need the slaves’ IP or system name, just the main)
      • you can get the former by executing ipconfig in cmd and look for the IPv4 address. As for system name just look at the computer properties.
    2. Make sure each slave machines have the same nuke version installed and running on the same network.
    3. Write the batch file which you can open from each slaves (Which I will explain below)
    4. Run the batch file on each slave machines.
      • if it’s running correctly, the command prompt window should stay opens.
      • Any error you might encounter will be logged on this window, until you close it.
    5. Run this command on your main workstation in nuke to see if your slaves are connected:
from hiero.ui.nuke_bridge.FnNsFrameServer import frameServer
print [worker.address for worker in frameServer.getStatus(1).workerStatus]
  1. If they shows up, you have your frame server running!
  2. Once you are done and wish to terminate frame server, simply close the command prompt window.

Writing batch file for your slave machines

  1. For the batch file, you need to create it with a text editor. Window’s notepad works just fine since it’s short but I would recommend Notepad++ or some more advance editors. First, change directory to wherever your nuke directory is. This is because you need to start frame server with python, and not only nuke directory already has python version. It also makes it easier for later step.
cd /d C:\apps\nuke\11.0v3
  1. Next runs runframeserver.py with Python, which should be in your nuke directory.
    .\pythonextensions\site-packages\foundry\frameserver\nuke\runframeserver.py
    Since we’re already in Nuke directory, it should be as simple as
cd /d C:\apps\nuke\11.0v3
python.exe .\pythonextensions\site-packages\foundry\frameserver\nuke\runframeserver.py 
  1. In line 2 above you need to include arguments required to run frameserver, which is explained in The Foundry’s guide. Here’s what my final batch file looks like after putting in the required arguments.
cd /d C:\apps\nuke\11.0v3
python.exe .\pythonextensions\site-packages\foundry\frameserver\nuke\runframeserver.py --numworkers 2 --nukeworkerthreads 4 --nukeworkermemory 16192 --workerconnecturl tcp://2017C018:5560 --nukepath=Nuke11.0.exe --useInteractiveLicense 
  1. What you really needs to pay attention in step 3 is the –workerconnecturl. Which I spent most of my time figuring it out. In my case it is tcl://2017C018:5560
  2. 2017C018 is the name of my main workstation, where I distribute jobs to the slave machines. You can also use IP address for this which you can get from running ipconfig. Personally, I prefer system name as its easier to remember. 5560 is nuke default communication port, which shouldn’t change. Nuke path is where your nuke exe resides, if you changed your directory in the beginning of this script it should be just –nukepath=nuke(version).exe

By default frameserver will launch with a nuke_r license, but the facility I was in only has nuke_i available, hence the last flag –useInteractiveLicense

Finally, save this file as a batch file, *.bat I named it as frameserver2017C018.bat so I know which main workstation is the bat file written for. As mentioned you can run the same bat file on any machines on the same network, and they’ll all be slaves for your main machine.


And that’s it! Apologies for my messy code, but it’s only a bat file with 2 lines! I hope this short guide here is elaborate enough for anyone who’s reading this to get their own frame server running!

Leave a Reply

Your email address will not be published. Required fields are marked *