0. 引言
如果看过我的上一篇关于 mesos 的文章,应该还记得 mesos 的资源调度策略写的泛化的 max-min fairness 算法,其实这个就是 DRF 算法。
DRF,全称 dominant resource fairness,由伯克利大学提出,论文链接在文末列出。论文中介绍 DRF 为 generaliztion of max-min fairness to multiple resource types,所以下面先介绍一下 max-min fairness 算法。
1. Max-min fairness
我们经常会遇到将稀缺资源分配给多个用户的情况,每个用户获得资源的权利都相同,但是需求数却可能不同,这个时候应该怎么办?一种常用的方法叫 max-min fairness share,中文可以叫最大最小化公平分配算法,也就是尽量满足用户中的最小的需求,然后将剩余的资源公平分配给剩下的用户。形式化定义如下:
- 资源分配以需求递增的方式进行分配
- 每个用户获得的资源不超过其需求
- 未得到满足的用户等价平方剩下的资源
更形象的表达如下,有用户 1, …, n,资源需求分别为 x~1~ , x~2~ , …, x~n~ .不失一般性,假设 x~1~ <= x~2~ <= … <= x~n~ 。假设资源总数为 C。然后先给需求最小 x~1~ 的用户分配资源数 C/n 。如果 x~1~ < C/n,则用户 1 剩余资源 C/n - x~1~,则剩下的用户每人获取资源数为 C/n + (C/n - x~1~)/(n-1)&#x