0. 前言
主资源公平调度策略是目前调度系统中被广泛使用的一种调度策略,已经被证明在提高集群资源利用率和任务完成质量方面有很重要的影响,其是公平调度策略的一种,也是最大最小算法的一个具体体现。Mesos和YARN中都用到了该策略。
想要获知该算法的详细论证过程可以搜索 Dominant Resource Fair Scheduling
最大最小分配算法:这个比较好理解,就是最大化目前分配到最小资源量的用户或者任务的资源量。举个例子ABC三个任务需要的资源分别为2,5,8个单位,现在有12个单位的资源,一开始时候每个任务平均分配4个单位,这个时候A任务多出2个单位,然后再将这2个单位平均分配为BC任务,最后分配结果是A2个单位,B5个单位,C5个单位。
1. DRF算法过程
DRF旨在使得不同用户的各自“主资源”最大化地保持公平。
- 定义:主资源,例如:现在系统有<9CPU, 18G>资源,A任务需要<1CPU,4G>,B任务需要<3CPU,1G>,那么对于A因为1/9 < 4/18,所以A任务的主资源是内存,对于B的主资源是CPU。
- 数学模型:其实该分配模型可以转化为一定约束条件下的优化问题,下面x代表A任务的个数,y表示B任务的个数。
- 最大化资源分配 max(x,y)
- 约束条件:(x+3y)<=9(CPU约束); (4x+y)<= 18(内存约束); 4x/18 == 3y/9(主资源公平约束);最终可以计算得到 x=3,y=2
- 伪代码说明,针对n个用户(一个用户可以提交多个任务)的m维资源
R=<