A Linux Scheduler to Limit the Slowdown Generated by Volunteer Computing Systems

Volunteer computing systems leverage idle resources on voluntarily enabled desktops to execute CPU-intensive jobs. When these systems execute simultaneously to tasks performed by the end-user (i.e., the person who runs applications on the shared desktop), a slowdown can be generated and the end-user may perceive it. Since slowdown is a key factor to either encourage or discourage end-users to donate their computing resources, volunteer computing systems often aim at reducing it by limiting CPU consumption. This introduces a trade-off in using the available processing resources. On the one hand, if the processor is fully idle then resources are underutilized. On the other hand, significant slowdown still can be generated in presence of other CPU-intensive end-user tasks. In contrast to fixing CPU consumption, we tackle this problem by modifying the Linux Scheduler to implement scheduling policies that determine whether a volunteer computing system can execute a job by dynamically considering the potential slowdown that it may introduce. By implementing our policies, we found the utilization of idle resources is improved and the slowdown the end-user experiences is effectively limited. Our evaluation results show that our approach overcomes state-of-the-art CPU limiting techniques such as the CPUlimit and cgroups.