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]
    6. If they shows up, you have your frame server running!
    7. 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 type it with a text editor, Windows default notepad works just fine. First, change directory to wherever your nuke directory is, in my case it’s
    C:\apps\nuke\11.0v3
    So the start of the batch file is

    cd /d C:\apps\nuke\11.0v3

    This is because you need to start frame server with python, and nuke directory already has python application. Whether your computer has your own python version installed or not, changing to this directory also makes it easier for later step.

  2. Next runs runframeserver.py with Python software, which should be in your nuke directory, inside
    .\pythonextensions\site-packages\foundry\frameserver\nuke\runframeserver.py
    And if you’ve included the command to change directory to your nuke directory, it became way easier to access the path above. Batch file should look like this now:

    cd /d C:\apps\nuke\11.0v3
    
    python.exe .\pythonextensions\site-packages\foundry\frameserver\nuke\runframeserver.py
  3. After that you need to put in the arguments required to run frameserver, which is explained pretty clearly in The Foundry’s guide. Here’s what my final batch file looks like after putting in the required arguements.
    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
  4. 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
    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
  5. 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
  6. Finally, save this file as a batch file, which is (name).bat I named it as frameserver2017C018 so I know which main workstation is the bat file written for.

 


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, it sure as hell took me some research to get it up and running!

Leave a Reply

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