多核实时调度—任务分配启发式算法解读FF,NF,BF,WF

首先,我们得明白,这类问题属于组合优化问题,即,候选元素有 n 个,把它们组合起来得到目标结果的最优组合(这个组合就叫做最优解)。

很明显,穷举所有可能的组合情况,一定能找到最优解,但是很明显时间复杂度会非常高,指数增长。一般实际使用是不太可能的。那么就寻找近似解,速度快,即也能得到目标结果,但是最终得到的组合只能尽可能靠近这个最优组合。

常见的近似方法就是:贪心算法

贪心算法在解决问题的策略上目光短浅,只根据当前已有的信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变(也就是不能回溯(一旦回溯,时间复杂度就很高了))。换言之,贪心法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得整体最优解,通常可以获得近似最优解。

例子: [找零钱]

一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目不限的面值为2 5美分、1 0美分、5美分、及1美分的硬币。售货员分步骤组成要找的零钱数,每次加入一个硬币。选择硬币时所采用的贪婪准则如下:每一次选择应使零钱数尽量增大。为保证解法的可行性(即:所给的零钱等于要找的零钱数),所选择的硬币不应使零钱总数超过最终所需的数目。


分析:

为使找回的零钱的硬币数最小,不考虑找零钱的所有各种方案,而是从最大面值的币种开始,按递减的顺序考虑各币种,先尽量用大面值的币种,只当不足大面值币种的金额才会去考虑下一种较小面值的币种。这就是在采用贪婪法。这种方法在这里之所以总是最优,是因为银行对其发行的硬币种类和硬币面值的巧妙安排。如果只有面值分别为1,5和11单位的硬币,而希望找回总额为15单位的硬币,按贪婪算法,应找1个11单位面值的硬币和4个1单位面值的硬币,共找回5个硬币。但最优的解答应是3个5单位面值的硬币。

贪心法的常见应用问题

参考博客:贪心算法的设计思想_徐诚浪的技术博客的技术博客_51CTO博客


实时任务分配是0 1背包问题(n个任务分配到m个背包中,每个物品价值相等),为了获得理论最优的任务分配方法(穷举法,时间复杂度2^n,即非多项式复杂度,为n的指数),NP-Hard,前面文章说了,PTAS算法可在运行时多项式时间复杂度以认为给定 \varepsilon 误差精度(即偏离程度)接近理论最优(其实原理就是预处理阶段提前用穷举法计算好了放在一个查找表里,运行时和这个表里进行查找匹配即可)多核实时调度—多项式时间复杂度最优任务分配算法PTAS解读_标biao的博客-CSDN博客
背包问题的多种解法201226630407 - 百度文库

PTAS方法虽然好,但是操作麻烦。因此采用一些启发式算法,虽然不一定能获得理论最优分配的成功度,即不一定能达到最优,但是它们是很可能能达到最优的,而且这些方法时间复杂度也低,而且不占内存,而且实现简单。

启发式算法(heuristic algorithm)是相对于最优化算法提出的。一个问题的最优算法求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计启发式算法,实际上就是贪心算法的一种应用。
 

实时任务分配启发式分配方法一般有First-Fit,Next-Fit,Best-Fit,Worst-Fit。这些算法就是凭借经验构造的,比如觉得任务按照大到小的顺序(decrease),总先分配在第一个核,应该能获得接近最优的分配策略。这就是FFD算法,如果分配前升序排列,那就是FFI(increase),任务不排序,那就是FF。一般来说,FFD的可调度性比FF好。

如果不考虑预先排序(任务动态加入系统的情况),其中FF的可调度性最高,WF均衡性最好,但是可调度性最差。

WF最坏情况下,任务集利用率只要超过1,就不可调度了,即一定可调度的上界是U<1。比如,4个核,无穷多个任务{0.011,0.011,0.011,......,0.011,0.99},该任务集总利用率趋近于1,这个任务集在任意多核的处理器上分配会失败,因为WF先把0.011这样的任务占据了每个核,导致0.99无论分配哪个核都会失败了,WFI也会是这样。而如果是WFD,或者FF就不会这样了。

上面提供了任务如何分配策略,然后分配到核上后,除了上面的采用EDF调度策略,此外还可以采用固定优先级调度比如RM等调度算法,因此,产生了RMNF,RMFF,FFDU,RMST,RMGT,FFMP,RMMatching等后续调度算法。这些算法的性能如何衡量呢和对比呢,看我这篇文章实时任务多核分区调度算法—近似率 asymptotic approximation ratio的概念和作用_标biao的博客-CSDN博客

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值