yarn调度策略

1.先进先出调度器

2.容量调度器

3.公平调度器

三种调度器的基础都是队列。每种调度器选择队列的任务已经队列任务等待有所不同。

先进先出调度器(FIFO Scheduler):

把提交的应用顺序排成一个队列,在资源分配的时候,先给队列中最前的应用进行分配资源。(可能导致大应用把资源都占满,导致其他应用等待时间长)

容量调度器(Capacity Scheduler):

有一个专门的队列运行小任务,为小任务分配会预先占用一定的集群资源。(相当于多个队列的FIFO Scheduler.可以弹性设置占用其他队列的资源)

公平调度器(Fair Scheduler):

动态调整资源,当程序运行大应用并且有小应用进来时,动态调整大应用资源,使资源公平分配给小应用。等小应用执行完毕,大应用又可以获取所有的资源。


操作系统任务调度:

1.先来先到

(1)维护一个后备作业的队列,该算法用队列头中获取一个或者多个作业进入内存,分配必要资源,创建进程放入到就绪队列中。

(2)此算法会被大作业所阻塞,使得后来的作业拥有很长的等待时间。

2.短作业优先

(1)也是维护一个队列,算法优先从队列中选取小作业进入内存,分配资源。

(2)当有大量的小作业提交时,算法会占满资源,导致大作业得不到资源。

3.优先级

(1)从队列中选择高优先级的作业进行资源分配。

(2)剥夺式和非剥夺式,剥夺式会干掉正在运行的低优先级任务,非剥夺式会等待低优先级任务执行完毕。

(3)静态优先级以及动态优先级,根据运行期间对CPU的占有动态调整优先级。

4.高相应比优先

(1)根据等待时间以及运行时间进行综合考虑的一种调度。

公式:(等待时间+要求服务时间) / (要求服务时间)

(2)对于短作业,要求服务时间短,则值会高,对于长作业,等待时间长了,值也会增高。

5.时间片轮转

(1)把就绪进程排成一个队列,按照先进先出对进程进行执行一定时间片,不论进程是否执行完毕。

(2)时间片的设置要得当, 如果时间片太长则退化成了FIFO,如果时间片太短,进程切换开销大。

6.多级反馈队列调度

(1)是优先级以及时间轮片的结合发展,能动态调整优先级以及时间片的大小,并且不必估计进程的执行时间。

(2)设计思想

  • 设置多个队列,每个队列优先级不同,一级队列优先级最高,二级次之,优先级随队列序号增大而减小。
  • 下级时间片比上级时间片增大一倍。序号越大,时间片越长。

(3)调度方式

  • 新进程会进入到一级队列,并且按照FIFO进行一级队列执行,如果进程在时间片内执行完,则清除,如果执行不完,则扔到二级队列中。仅当一级队列为空再执行二级队列,以此内推。
  • 如果在处理第I级队列进程时,I-1级队列前有进程进入,则触发抢占机制,优先处理I-1级前的任务。

(4)优势

  • 短作业优先处理完
  • 相对时间片轮转,短作业减少了切换开销
  • 相对优先级,长作业不会长时间得不到处理

发表评论