A Submitty instance is capable of leveraging additional machines to distribute autograding load. This capability can be used to ship jobs which require specialized hardware to appropriate machines. This guide details the steps to install Submitty in worker mode, and to configure the resulting worker machine for use by a “Primary” Submitty instance.
Note: We assume that you’re installing Submitty on a dedicated machine. If this machine is used for other things, you may need to adapt the instructions below and install_system.sh for your needs (as the script installs all of the dependencies that Submitty depends on).
Note: These instructions should be run under root/sudo.
Install Ubuntu 16.04 or 18.04 server edition
submittyuser on the machine. The user’s name is not important. The user should only be used for submitty related activities.
After installing the operating system, clone the git repository:
mkdir -p /usr/local/submitty/GIT_CHECKOUT git clone https://github.com/Submitty/Submitty.git /usr/local/submitty/GIT_CHECKOUT/Submitty
Run the automated portion of the install, using the
cd /usr/local/submitty/GIT_CHECKOUT/Submitty bash ./.setup/install_system.sh --worker
You will be asked to provide the name of your submitty user by the CONFIGURE_SUBMITTY.sh script.
Run installations specific to your university.
For example: RPI Computer Science specific installations
sudo bash /usr/local/submitty/.setup/distro_setup/ubuntu/rpi.sh
Add the submitty user to the
sudo usermod -a -G submitty_daemon YOUR_SUBMITTY_USER sudo usermod -a -G submitty_daemonphp YOUR_SUBMITTY_USER
Next, we must set up an ssh key so that submitty_daemon user on the primary machine can copy files to our worker machine.
On primary submitty:
NOTE: ssh-keygen asks for the name of your submitty user.
NOTE: The ssh-copy-id line requires a replacement
su submitty_daemon cd ~/.ssh ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub SUBMITTY_USER@HOSTNAME
- Finally, we must add the machine to the list of workers available to our
primary machine. To do this:
- Log on to the primary Submitty machine.
/usr/local/submitty/config/autograding_workers.jsonwith your favorite text editor.
- Add a new entry with a unique key.
- add at least one capability to the capabilities list. This capability will determine which jobs should be shipped to this machine.
- Add the ‘address’ of the machine to the address field (e.g.
- Add the number of autograding workers (simultaneously processed jobs) for the machine.
- Add the name of the submitty user on the machine as the username.
- Set the machine to be enabled.
/usr/local/submitty/.setup/INSTALL_SUBMITTY.shso that the changes take effect.
- Inside of your assignment configurations, you may now add the line
required_capabilities : 'CAPABILITY'
to ship your jobs to a worker with the capability CAPABILITY.