参考论文:《Dominant Resource Fairneess:Fair Allocation of Multiple Resource Types》
出自:加州大学伯克利分校
1. DRF特点
我们考虑一个关于不同资源类型在一个系统中公平分配的问题,不同的资源类型来自于用户的不同资源需求。为了解决这个问题,我们建议使用优势资源公平性(Dominant Resource Fairness DRF),是对多种资源的最大最小公平性的一般化。我们展示DRF不同于其他可能的策略,满足若干个高理想的属性。首先,DRF鼓励用户去共享资源,确保资源在用户之间是平等分割的,不会使任何用户收益。第二,DRF是一个防护的策略,用户不能通过谎报她的需求来达到增加她的分配。第三,DRF是没有怨言的,没有用户想要交易她的分配和其他用户进行。最后,DRF分配具有Pareto效应,不可能在增加一个用户的分配的同时不去减少其他用户的分配。我们在Mesos集群资源管理器中实现了DRF,并展示它对于吞吐量和公平性上,领先于基础槽的公平共享方案在当前的集群调度中。
2. DRF使用
基础概念:
- 主导资源:任何一个用户分配的任务都有其比重最大的资源,我们称作该任务的主导资源。
2.1 简单的例子
需求:考虑一个拥有9个CPU、18 GB RAM和两个用户的系统,其中用户a使用需求<1 CPU, 4 GB>和用户B的使用需求<3 CPU 1 GB>,关于每个任务运行的需求。
分析:在上面的场景中,来自用户A的每个任务消耗总cpu的1/9和总内存的2/9,所以用户A的优势资源为内存。用户B的每个任务消耗总CPU的1/3和总内存的1/18,因此用户B的优势资源是CPU。
DRF将均衡用户的占主导地位的份额,给出分配:
- 用户A的3个任务,总共有个cpu, 12个GB;
-
用户B的2个任务,总共有6个cpu, 2个GB。
资源分配图
通过这种分配,每个用户最终获得相同的占主导地位的份额,即:用户A获取2/3的内存,而用户B得到2/3的CPU。

这种分配可以用数学方法计算如下。设x和y为分配任务的数量,通过DRF分别向用户A和B发送。用户A接收(x CPU, 4x GB),而用户B接收(3y CPU, y GB)。分配给这两个用户的资源总量是(x+ 3y) cpu和(4x+y) GB。另外,用户A和B的主要份额是4x/18 = 2x/9和3y/9 = y/3(它们对应的内存和CPU份额)。然后通过求解以下优化问题给出DRF分配:

2.2 DRF调度算法例子

2.3 离散场景(多宿主机资源分配)
假设我们开始一次在一台机器上分配资源,并且总是将一个任务分配给占支配份额最低的用户。只要第一台机器上至少有一个max-task可用,继续将任务分配给下一个占主导地位份额最小的用户。一旦第一台机器上的可用资源小于最大任务大小,我们就转移到下一台机器并重复这个过程。当分配完成时,与连续场景相比,两个用户的主要资源分配之间的差异最大为max-task。
网友评论