Max-min Fair 和 Dominant Resource

2017-11-30  本文已影响229人  searchworld

1. Max-min Fair

分配过程是每次先把资源平分,如果有用户分到多余的资源就拿出来继续给其他的平分,这样保证申请者都可以公平分到资源。举个例子:

假设有10G内存,四个用户要申请的资源为:<u1, 1G> <u2, 2G> <u3, 4G> <u4, 6G>
- 先把10G内存平分,每个用户分到2.5内存,即<u1, 2.5G> <u2, 2.5G> <u3, 2.5G> <u4, 2.5G>
- u1只要1G,剩下的1.5G给u2 u3 u4平分,各分到0.5G,这个时候变成:<u1, 1G> <u2, 3G> <u3, 3G> <u4, 3G>
- u2只需要2G,多出来的1G给u3 u4分,各分到0.5G,变成<u1, 1G> <u2, 2G> <u3, 3.5G> <u4, 3.5G>
- 这个时候u3 u4都资源都不够,分配到此结束,最终结果:<u1, 1G> <u2, 2G> <u3, 3.5G> <u4, 3.5G>

Max-min Fair策略的不足是只能使用于一种资源的场景,对于有多种资源的场景无能为力。参考 http://www.ece.rutgers.edu/~marsic/Teaching/CCN/minmax-fairsh.html

2. Dominant Resource Fairness (DRF)

DRF可以看到多资源分配的Max-min,如果将DRF应用到一种资源,那就等价于Max-min。其主要概念是Dominant Resource

 比如有CPU和内存两种资源需要分配,总共有<20, 100>(这里单位都是1,即有20单位CPU,100单位内存,分配的最小单位是1单位),假如一个用户的要申请<2,5>的资源,这个时候CPU占总量的0.1,内存占总量的0.05,因此对这个用户来说CPU就是主资源。

DRF要求各个用户分配到的主资源占总量的比例相等,举个例子:

CPU和内存资源总量为<10, 100>,3个用户资源申请量为:<u1, <1,2>> <u2, <1,20>> <u3, <4,25>>,则u1 u2 u3的主资源分别为CPU 内存 CPU,假设分配的量分别为x y z则要满足下面的条件:
x + y + 4z <= 10
2x + 20y + 25z <= 100
x/10 = 20y/100 = 4z/10
满足这个条件的最大值为x=4, y=2, z=1。如果没有用户的每次申请都是用来运行任务,则u1可以运行4个任务,u2可以运行2个,u3可以运行1个。

参考 https://stackoverflow.com/questions/39347670/explanation-of-yarns-drf

上一篇下一篇

猜你喜欢

热点阅读