This is a rewrite of the changes we have made to our production Jobe server at the Dept. of Computer Science, Lund University.
We have used CodeRunner in Moodle using mostly Java questions with Jobe as our execution backend. We have successfully used Jobe with these changes during exams with more than 300 students.
I have tested these specific changes using JobeInABox with a custom config:
Enabled CPU pinning (which is included in this pull request), 24 cores
Enabled global Java/Javac options with the option used in comment. These tells java that there is only one processor which is fine for us and it does reduce the number of spawned threads.
Max number of jobe users were set to 128, the test server used had 24 logical processors (2 sockets)
The tests I have performed are:
The simple test of running python3 /var/www/html/jobe/testsubmit.py - passed.
Load test by using java questions with data written by humans, i.e. not synthetic. At 4x times load (1x being 100% available compute) it is stable with 96 users submitting a question continuously with 1 sec wait before next attempt. 128 users (5.3x overload) with same conditions has a 4.5% failure rate due to compile timeout but it is a highly unrealistic one when we compare to real usage. We have never seen above 2x load during real usage but it is directly proportional to the number of users and more users will eventually require more compute.
Many thanks Marcus and my apologies for the delay. I've merged your changes into master on my machine manually and pushed a new version 1.8.0 back to github. This looks like a very useful update for Java users.
This is a rewrite of the changes we have made to our production Jobe server at the Dept. of Computer Science, Lund University.
We have used CodeRunner in Moodle using mostly Java questions with Jobe as our execution backend. We have successfully used Jobe with these changes during exams with more than 300 students.
I have tested these specific changes using JobeInABox with a custom config:
The tests I have performed are: