DOMjudge / domjudge-packaging

DOMjudge packaging for (Linux) distributions and live image
31 stars 37 forks source link

Configuration is unsuitable for single core machines #136

Open david-perez opened 1 year ago

david-perez commented 1 year ago

judgedaemon.conf contains:

https://github.com/DOMjudge/domjudge-packaging/blob/c566fa91ca5018fccd43f15a1b4b80db9f5125e4/docker-contributor/supervisor/judgedaemon.conf#L3-L3

So supervisor goes ahead and starts 2 judgehosts, domjudge-contributor-0 and domjudge-contributor-1.

This configuration is unsuitable for running domjudge in single core machines. In a single core machine, if a judging is routed to domjudge-contributor-1, the daemon id 1 is eventually sent to rungard.c in the cpuset option. runguard.c performs a check to ensure cpuset >= 0 && cpuset < nproc, and crashes the judgehost with Running compile.sh caused an error/crash: /domjudge/bin/runguard: processor ID 1 given as cpuset, but only 1 cores configured.

Subsequent judgings will succeed since the judgehost gets disabled, but I was thoroughly confused.

I'm unfamiliar with how supervisor works, but ideally numprocs would be templated in from somewhere that caps it to the actual number of cores on the host.

nickygerritsen commented 1 year ago

We should make this an option with default 2 that you can override