September 2009

Vakuum is the successor of COGS, my second online judge system. It is aimed to OI and ACM/ICPC. Vakuum can be separated into two parts: vakuum-web and vakuum-judge. vakuum-web is a web user interface, which needs PHP and MySQL. It introduces MVC framework in order to build a maintainable website. vakuum-judge is the kernel, which consists of a sandbox and a request handler.

Vakuum specified a communication protocol between vakuum-web and vakuum-judge. The two parts can be deployed in the same or different environments. The system also supports one-frontend-many-backend architecture, that means one vakuum-web can organize many vakuum-judge instances to share the pressure of high concurrency.

The sandbox is written in C language and runs on a Linux environment. It is used to run a user submitted program safely and get its time and memory usage. The sandbox invokes ptrace to capture all the system calls of the running program, checking whether the system call is risky, inspecting its memory usage and deciding when to kill the process.

I began to develop Vakuum in the autumn of 2009. But it has never been widely used like COGS.