2. Requirements

This document describes the requirements of the VPL-Jail-System. For more details about VPL, visit the VPL home page or the VPL plugin page at Moodle.

The VPL-Jail-System is an open software execution system and requires a specific environment.

2.1. Software requirements

VPL Jail System requires a Linux operating system. The host system may use either systemd or System V as a service manager, or Docker.

The installer requires APK, APT, DNF, or YUM package managers to install common development software.

The system is distributed in source format and requires a C++ compiler (supporting C++11) and the OpenSSL library for compilation.

The current version has been tested on various Linux distributions, including Alpine, Ubuntu, Debian, and Fedora.

2.2. Hardware requirements

The system has been developed to offer immediate and interactive execution of students’ programs. It means that the system can handle multiple executions simultaneously.

The disk required is directly related with the software installed in the system. The system does not save tasks or information about the executions, except in the system logs. The verbosity of the logs depends on the configuration parameter LOGLEVEL. Example: the fedora docker image with full installation of development tools uses more than 12 GB.

The CPU and RAM requirements depend on the number of concurrent executions, the demands of the specific programs, and the programming language used. For example, a Java program for image editing may require significantly more RAM than a simple Python program that checks whether a year is a leap year.

Based on our experience, a machine with just 2 GB of RAM and two CPU cores can support a class of 50 students running Java programs (non-GUI). However, during exams, the hardware requirements may need to be tripled. RAM is likely to be the most critical resource. If the system runs out of RAM, the operating system will start swapping, which will drastically reduce performance.

Our tests suggest that a 32-bit operating system consumes less memory and CPU than its 64-bit counterpart. However, support for 32-bit versions is being phased out in some tools such as Swift, Rust, and Go.

If additional processing power is needed, you can dynamically add or remove VPL Jail systems to the VPL plugin in Moodle.

Note that due to its stateless nature, the VPL Jail System does not need backup or disaster recovery, however, the configuration file and the certificates used for HTTPS communication must be saved in a safe place.

2.3. Network requirements

This section describes the network requirements to use the execution server with the VPL plugin.

2.3.1. Connections that must be available

  • From the user machine to the Moodle Server. The client machine that runs the browser must have access to the Moodle server. This is the obvious connection when the user interacts with Moodle.
  • From the Moodle Server to the Execution Server (Jail server). The VPL plugin in Moodle requires sending requests to the execution server.
  • From the user machine to the Execution Server (Jail server). The client machine that runs the browser must have access to the Execution server. When an execution/evaluation is requested, the execution server requires a connection from the browser to know that the user is there and if needed a connection to allow interactions with the running program.

Note

It is highly recommended to use encrypted connections (HTTPS and WSS), that is, the Execution server must have a certificate signed by a known authority and the VPL plugin must use an HTTPS connection (the URL to the execution server must start with “https://”).

2.3.2. Proxies

If your network is using a proxy you must:

  • Configure the user’s machines to use the proxy properly. Notice that your proxy must be compatible with WebSocket.
  • Configure the VPL plugin (Moodle administration VPL plugin settings) by setting the proxy option to properly access the execution servers.

If your network is using a transparent proxy it must be compatible with WebSocket.

2.3.3. Private network

The system does not require external connections, so there is no restriction to install all elements (clients, Moodle server and execution servers) in a private network. Note that if you want to access the Moodle server from the Internet then both the Moodle server and the execution server must be accessible from the Internet.

2.3.4. Load balancer

The current architecture of the execution server connections appears to prevent the use of a load balancer to access a cluster of execution servers.

It is important to note that the execution server handling a task receives multiple requests from both the Moodle server and the client machine in order to manage the task.