Article ID | Journal | Published Year | Pages | File Type |
---|---|---|---|---|
4956507 | Journal of Systems and Software | 2017 | 14 Pages |
Abstract
Performance isolation in a scalable multicore system is often attempted through periodic load balancing paired with per-core fair-share scheduling. Unfortunately, load balancing cannot guarantee the desired level of multicore fairness since it may produce unbounded differences in the progress of tasks. In reality, the balancing of load across cores is only indirectly related to multicore fairness. To address this limitation and ultimately achieve multicore fairness, we propose a new task migration policy we name progress balancing, and present an algorithm for its realization. Progress balancing periodically distributes tasks among cores to directly balance the progress of tasks by bounding their virtual runtime differences. In doing so, it partitions runnable tasks into task groups and allocates them onto cores such that tasks with larger virtual runtimes run on a core with a larger load and thus proceed more slowly. We formally prove the fairness property of our algorithm. To demonstrate its effectiveness, we implemented our algorithm into Linux kernel 3.10 and performed extensive experiments. In the target system, our algorithm yields the maximum virtual runtime difference of 1.07Â s, regardless of the uptime of tasks, whereas the Linux CFS produces unbounded virtual runtime differences.
Keywords
Related Topics
Physical Sciences and Engineering
Computer Science
Computer Networks and Communications
Authors
Sungju Huh, Seongsoo Hong,