DOMjudge discerns the following kinds of hosts:
Workstation for a team, where they develop their solutions and from which they submit them to the jury system. The only part of DOMjudge that runs here is the optional command line submit client; all other interaction by teams is done with a browser via the web interface.
A host that receives the submissions, runs the database and serves the web pages. This host will run Apache, and MySQL. Also called domserver for brevity.
A number of hosts, at least one, that will retrieve
submitted solutions from the DOMjudge server, compile and run
them and send the results back to the server.
They will run the judgedaemon
from DOMjudge.
The jury members (persons) that want to monitor the contest need just any workstation with a web browser to access the web interface. No DOMjudge software runs on these machines.
One (virtual) machine is required to run the DOMserver. The minimum amount of judgehosts is also one, but preferably more: depending on configured timeouts, judging one solution can tie up a judgehost for several minutes, and if there's a problem with one judgehost it can be resolved while judging continues on the others.
As a rule of thumb, we recommend one judgehost per 20 teams.
However, overprovisioning does not hurt: DOMjudge scales easily in the number of judegehosts, so if hardware is available, by all means use it. But running a contest with fewer machines will equally work well, only the waiting time for teams to receive an answer may increase.
Each judgehost should be a dedicated (virtual) machine that performs no other tasks. For example, although running a judgehost on the same machine as the domserver is possible, it's not recommended except for testing purposes. Judgehosts should also not double as local workstations for jury members. Having all judgehosts be of uniform hardware configuration helps in creating a fair, reproducible setup; in the ideal case they are run on the same type of machines that the teams use.
DOMjudge supports running multiple judgedaemons in parallel on a single judgehost machine. This might be useful on multi-core machines. Note that although each judgedaemon process can be bound to one single CPU core (using Linux cgroups), shared use of other resources such as disk I/O might still have a minor effect on run times. For more details on using this, see the section Installation: optional features.
The requirements for the deployment of DOMjudge are:
IP_ADDRESS
authentication scheme, then each team
computer needs to have a unique IP address from the view of the
DOMjudge server, see
Contest setup: team authentication for more details.The following software is required for running DOMjudge.
/bin/sh
(e.g. bash or ash)
lib/judge/sh-static
(dash is included for Linux IA32)
The following items are optional, but may be required to use certain functionality.
alert
script.Software required for building DOMjudge:
checktestdata
program
requires a compiler that supports C++11.
checktestdata
program for advanced checking of input/output data correctness.
These are optional and can be disabled with the configure
option --disable-checktestdata
.In the most basic setup the team workstations only need (next to the tools needed for program development) a web browser. The web interface fully works with any known browser, but a HTML5-capable browser adds more convenience funcions. With JavaScript disabled, all basic functionality remains working, with the notable exception of multiple file uploads on non-HTML5-ready browsers.