在集群系统中,进程的到达时间和新到达进程所需的资源量都是不可预测的,因此进程的放置和迁移是非常重要的问题。由于集群系统中的不可预测性,进程有时就会被放置在不合适的机器上,进程迁移就给了系统一个弥补这样的错误的机会。通过较好的算法将新创建的进程放置到合适的节点上执行,并且对某些进程进行迁移可以缩短任务的平均执行时间,因此从整体上提高了系统的性能。
进程的放置问题是非常复杂的,因为集群中的资源是异构的,如:内存、CPU、进程间通讯等等。衡量这些资源耗费的方法也是不同的:内存的单位是字节,CPU的单位是循环、通讯资源的单位是带宽。
进程的放置策略分为静态放置策略和动态放置策略。静态放置策略通过预先定义的规则对新创建的进程进行分配,它不使用运行时的信息。而动态放置策略则根据系统状态的变化将进程重新放置到最适宜的节点上。
常见的静态放置策略由三种:Round Robin(RR)、Best-Fit(BF)、Round Robin Next-Fit (NF)。
Round Robin将新创建的进程以轮转的形式放置到集群中的各节点上。这种方法的缺陷在于如果新创建的进程所需的内存量大于将要分配到其上的节点的可用内存大小,则会导致算法的失败。
一种改进的方法是使用