Hello
We run an instance of domjudge for our university courses, which has a lot of submissions (the judging run table has almost a million rows now).
I was exploring ways to reduce the disk usage of the judge, and I found that in the directory for every judging run, we store a copy of the executable under execdir under every testcase. Each executable is > 1 MB, and when this multiplies with number of test cases * number of judgings, this becomes very large in our use case.
Is there a reason why the executables are stored after judging is complete?
Thank you Parth Mittal
Hi Parth,
On 27-05-17 13:42, Parth Mittal wrote:
Hello
We run an instance of domjudge for our university courses, which has a lot of submissions (the judging run table has almost a million rows now).
I was exploring ways to reduce the disk usage of the judge, and I found that in the directory for every judging run, we store a copy of the executable under execdir under every testcase. Each executable is > 1 MB, and when this multiplies with number of test cases * number of judgings, this becomes very large in our use case.
Indeed, but note that the files under /compile are copied hard linked to those testcaseXXX directories (see judgedaemon.main.php roughly lines 700 - 705), so as long as you're running on a FS that supports hardlinks, these shouldn't really take up much extra space.
Is there a reason why the executables are stored after judging is complete?
Everything under the output/judgings/... directory tree is either cached data (such as test case input/ouput files), or is kept there for possible post mortem analysis; all crucial information is stored in the database. So you can safely remove directories of old judgings. Indeed, for a typical contest setting this shouldn't be necessary, but for a long running instance, you probably want to do that.
A good solution might be to run e.g. "tmpreaper" (a package in Debian) and delete everything more than e.g. a month old. Or roll your own script.
Best, Jaap