Co-scheduling processes on different cores in the same server might lead to excessive slowdowns if they use the same shared resource, like a memory bus. If possible, processes with a high shared resource use should be allocated to different server nodes to avoid contention, thus avoiding slowdown. This article proposes the more general principle that twins, i.e. several instances of the same program, should be allocated to different server nodes. The rational for this is that instances of the same program use the same resources and they are more likely to be either low or high resource users. High resource users should obviously not be combined, but a bit non-intuitively, it is also shown that low resource users should also not be combined in order to not miss out on better scheduling opportunities. This is verified using both a probabilistic argument as well as experimentally using ten programs from the NAS parallel benchmark suite running on two different systems. By using the simple rule of forbidding these terrible twins, the average slowdown is shown to decrease from 6.6% down to 5.9% for System A and from 9.5% to 8.3% for System B. Furthermore, the worst case slowdown is lowered from 12.7% to 9.0% and 19.5% to 13% for systems A and B, respectively. Thus, indicating a considerable improvement despite the rule being program agnostic and having no information about any program's resource usage or slowdown behavior.
IOS Press, Inc.
6751 Tepper Drive
Clifton, VA 20124
Tel.: +1 703 830 6300
Fax: +1 703 830 2300 firstname.lastname@example.org
(Corporate matters and books only) IOS Press c/o Accucoms US, Inc.
For North America Sales and Customer Service
West Point Commons
Lansdale PA 19446
Tel.: +1 866 855 8967
Fax: +1 215 660 5042 email@example.com