美文网首页算法架构算法设计模式和编程理论
经典QoS调度算法——mClock算法的分布式版本详解

经典QoS调度算法——mClock算法的分布式版本详解

作者: 退休码农飞伯德 | 来源:发表于2019-12-09 00:06 被阅读0次
mClock paper, OSDI 2010

dmclock

前面一篇文章我详细解释了mClock算法的调度目标和设计原理,这篇文章我会详细介绍mClock的分布式版本dmclock的设计思想和原理。

在mClock的论文中,针对dmclock的设计原理只有两段内容,而且只有文字和公式,很难让人真正理解。dmclock算法相比mclock只改了一个地方,那就是标签的计算公式:

可以发现在Reservation标签的计算公式中由1/r变为\rho/r1/l1/w分别变为\delta/l\delta/w。论文中对于这两个参数\rho\delta这样解释:\delta表示该用户在除所要发送请求的服务器外,距上次发送请求这个时间内在其他服务器完成的请求个数,而\rho表示reservation阶段的结果,基本含义和\delta相同。看到这个解释,你会觉得不仅非常拗口,而且难以理解。下面给你两个栗子,让你理解这两个参数的含义。

图片来自网络

现在看懂这两个栗子了吗?

两个栗子

不好意思,开个玩笑。下面进入正题,下图是一个分布式的简单模型,一个客户端向多个服务器发送请求,其中请求上的字母代表所要发送的服务器的标志(A、B、C)。假设仍然按照mClock的公式打标签,那么结果是用户参数的3倍:3\times r或者3\times l,也就是有几个服务器就翻几倍,这个应该很好理解,因为分布式版本中,每个服务器都会有一个mClock调度器同时调度。


这里采用添加虚拟请求的方法,客户端会向所有服务器发送自己的所有请求,除目标服务器外的请求作为虚拟请求,仍然按照mClock的计算公式计算标签值,但是不会被实际处理,相当于虚拟请求只是占了一个坑(标签值),但是没有处理时间。这样的话就不会出现“翻倍”的问题。下面我们对这个方案进行优化,请看下面这个图:

图中不再使用虚拟请求,而是统计当前请求前发送到其他服务器的请求个数作为当前请求的delay,对比前面的方案,你会发现这个方案十分巧妙。dmclock正是运用了这个方案,将delay值分别乘以1/r1/l1/w。我们所需要计算的就是当前请求之前发送到其他服务器的请求个数即可,这个含义和\rho或者\delta类似。

讲到这里,你应该对dmclock的设计原理有了一定的了解。也许你会问,具体怎么实现呢?其实很简单,只要用一个map(C++、Java都有这个数据结构),为每个服务器存放完成请求个数,初始值为0。服务器每次完成请求时通过一个计数器记录全局完成的请求个数,每次客户端发送请求时,用全局请求个数减去要发送的服务器对应的map记录的值(初始值为0),然后用此时的全局请求个数更新该服务器对应的map中的值。具体实现细节,可以参考dmclock官方代码库:https://github.com/ceph/dmclock

实现方法会有很多,上面只是介绍的其中一种。好了,关于dmclock就介绍到这里,详细细节请阅读原始论文或者在评论区给我留言,欢迎大家的讨论!

参考资料

相关文章

  • 经典QoS调度算法——mClock算法的分布式版本详解

    dmclock 前面一篇文章我详细解释了mClock算法的调度目标和设计原理,这篇文章我会详细介绍mClock的分...

  • 经典QoS调度算法——mClock算法的正确打开方式

    最近有人找我请教mClock算法,我给他解释完之后,他觉得我讲的不对并搬出某技术网站的博客,如下图: 我暗自一笑,...

  • 500 lines or less学习笔记(十四)——分布式系统

    要学习分布式,就绕不开分布式算法。Paxos 算法是早期经典的分布式算法,有很多经典应用,后来的分布式算法也对其有...

  • ceph rbd:qos

    基本介绍 rbd qos控制采取了令牌桶算法来实现,最初版本及算法介绍见:https://blog.csdn.ne...

  • 常见调度算法

    先来先服务(FCFS)调度算法短作业优先(SJF)调度算法优先级调度算法高响应比优先调度算法时间片轮转调度算法多级...

  • 简述LVS调度方案及应用场景

    Lvs的调度算法可分为静态调度和动态调度。静态调度即根据算法本身的结果来进行调度,包括: 1、轮询调度算法(RR)...

  • 10.2 典型调度算法

    在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用。...

  • 进程调度的算法及思想

    1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调...

  • 【智能调度】调度模式抽象

    1. 什么是调度算法 调度算法定义:根据系统的资源分配策略所规定的资源分配算法。 最早对于调度算法的讨论来自于操作...

  • LVS调度算法

    LVS 常用的调度算法: 固定调度算法:rr,wrr,dh,sh 静态方法仅根据算法本身进行调度,关心的是起点公平...

网友评论

    本文标题:经典QoS调度算法——mClock算法的分布式版本详解

    本文链接:https://www.haomeiwen.com/subject/jnzmgctx.html