Managing Your Farm Machines with Remote Control

Version: Deadline 8.0

Introduction - Power at Your Fingertips

An attractive feature in Deadline is the ability to view and interact with your render farm's many moving parts from a single entry point. A key component that makes this possible is Remote Control, which allows you to send remote commands to machines in your farm and have them perform a variety of operations. These include issuing instructions to Deadline applications, stopping or restarting machines, and even executing arbitrary command line text.

Preliminaries - What You Need for This to Work

Remote Control depends primarily on the magic of the Deadline Launcher application. The Launcher listens for remote commands, and is responsible for executing them, so it must be running on each machine in your farm. Check out this Launcher Blog Post to learn more about the Launcher and its other responsibilities.

You will also need to enable Remote Administration in the Repository Options, which you can find by clicking Tools -> Configure Repository Options in the Monitor.

Remote Control Using the Monitor

In the Monitor, commands can be sent to any Deadline application running on your farm through the appropriate panel. For example, to send a command to a Slave, open up the Slaves panel and right-click on any Slave you see in the list. From the context menu, hover over Remote Control and then Slave Commands and select a command to run. In the example below, we are instructing the Slave to shut down after it finishes its current task.

Besides communicating with the Slave itself, you can also use this context menu to send commands to perform operations on the target machine. If you select Machine Commands from the Remote Control menu, you will see options to start/stop/restart/suspend the target machine. (Note that starting a machine remotely requires Wake-on-LAN, which is a topic for another day.)

Finally, there is also the option to execute arbitrary command line text via the Execute Command option. When you select this option, a dialog pops up asking you to enter text that will be run on the target machine. In the example below, we are using a remote command to list the contents of a directory.

The results of remote commands are shown in the Remote Commands panel, which is automatically shown the first time you send a remote command. This panel will show you at a glance whether or not remote commands are being successfully executed. You can also use it to view the output of any command, which is especially helpful for the command we executed in our example above.

Remote Control Using Deadline Command

Deadline comes with a powerful command line tool called Deadline Command, or deadlinecommand. If you are not familiar with it, I suggest reading our Feature Blog entry about Deadline's Secret Weapon. As the title of this section implies, you can use deadlinecommand to send remote commands as well. To do this, call deadlinecommand with the RemoteControl command line argument, as shown below:

deadlinecommand -RemoteControl <machine name or IP> <command to execute>

In the example below, we are using deadlinecommand to send a remote command to a machine named "mobile-025", instructing it to start a Slave.

>>> deadlinecommand -RemoteControl mobile-025 LaunchSlave ~
mobile-025: Sent "LaunchSlave ~" command. Result: "Connection Accepted.
"
Sent remote command 'LaunchSlave ~' to: [mobile-025].

The output from deadlinecommand will show the results of running the command on the destination machine. For many commands, this is simply a message indicating that the command was received. However, for the Execute command, which allows us to run arbitrary command line text, we get the command output, as shown below:

>>> deadlinecommand -RemoteControl mobile-025 Execute "ping -n 1 127.0.0.1"
mobile-025: Sent "Execute ping -n 1 127.0.0.1" command. Result: "Connection Accepted.
Command exited with code: 0
Command Stdout:
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
"
Sent remote command 'Execute ping -n 1 127.0.0.1' to: [mobile-025].

This functionality is great for those who prefer to manage their render farm using a shell. Using deadlinecommand this way offers a serviceable alternative to starting a remote session to execute commands on a farm machine.

Remote Command Redirection through Pulse

A new feature in Deadline 8.1 allows remote commands to be redirected through Pulse. If the option is enabled, all remote commands will be sent to a machine running Pulse, which will then redirect the command to the intended recipient. This can be useful if the Monitor and Slaves are on different subnets within the same private network. In that case, one machine in the Slaves subnet can be designated to run Pulse and it will be responsible for forwarding remote commands to the Slaves. Then, as long as that machine is visible to the Monitor machine, commands can still be sent to any Slave on the farm.

To enable this feature, open the Repository Options and select Monitor Settings from the list. Click on the Update Settings tab and enable the Redirect Remote Commands through Pulse option.

If you would like to get your hands on this new feature early, you can join the Deadline 8.1 beta testing program!

Wrapping Up

That takes us to the end of our overview of Remote Control in Deadline. You can discover commands other than the ones we covered today by exploring the Monitor interface, and I also encourage you to have a look at the Remote Control section of the documentation to see what else is available.