实时可调度性分析算法— 利用率上界 和 加速因子的作用
讨论这个任务集在单核上,各调度算法A,B的优劣性。所有任务的利用率{0.3,0.5,0.6},U=1.4
我们发现这个任务集在单核上,本身就是不可调度的,那么对于算法A,B,还讨论调度优劣性有什么意义呢。比如A算法成功调度任务集的利用率上界是0.6,而B算法是0.7,我们说B算法优于A,但是对于上述本身就不可调度的任务集(假设任务集利用率U=0.8),这个比较就没有意义。
但是如果我们用加速因子f,就会有意义,加速因子表示成功调度(这个是用可调度性分析来算法判定的)一个任务集相较于最优调度算法在处理器速度为s时,最多需要处理器提速的倍数(也就是提速到 f 这个倍数了,即速度为f*s,那么一定可以成功调度这个任务集,虽然说有可能提高到f*0.95的时候,已经可以调度了,但是实时调度讲究的是最差情况)。这个就不依赖于采用的任务集了,我只要提速处理器速度,总能成功调度呀,只是提速的倍数不同而已,正是这个倍数不同,所以就区分出了各算法的优劣性。比如上面的任务集U=1.4,那么最优调度算法在处理器速度为1.4时能成功调度(说明最优调度算法总能成功调度一个任务集),而某个实际调度算法就需要f*1,4的速度的处理器才能成功调度了。
加速因子(相较于标准处理器速度1,需要提速倍数)越小,算法越好。理论最优调度算法的加速因子为1。
这就是加速因子衡量各算法性能的好处(不挑选任务集),如果用利用率上界,就依赖于任务集,才能做到这一点。看我这篇文章多核实时调度任务分配解读_标biao的博客-CSDN博客
问题:加速因子可以作为整个任务集在多核调度可调度性判定的充分条件吗?
答:从加速因子定义可知,对于每个任务集,都有个前提,最优调度算法的s是多少,这里这个s就很重要了,如果我们要拿加速因子来做可调度性判定的充分条件,那么对于不同的任务集,这里s就是不同的,我们很难求出来的,所以我们也就不知道实际处理器速度为1的多核处理器能不能调度了。(因为本想是1/(f*s)是否 >=U的来充分性判定)。所以加速因子只是用来比较各调度算法(多核分配算法也是调度算法)的性能量化指标罢了。
由于一个调度算法的好坏,是需要和一个可调度性测试绑定在一起的。没有对应的可调度性分析算法进行保证,那么该调度算法就是未知的加速因子了(即使是某个最优调度算法)。
加速因子虽然是衡量一个调度算法的性能的,但是因为一个调度算法的调度利用率最小上界(上界:是个变量,和任务数等有关,比如RM上界,n表示任务集中的任务数。最小上界,就是这个变量的最小值,当,为0.69)是依赖一个可调度性分析(测试)算法给出的,因此这个加速因子也可以说是对这个可调度性分析算法而言的。
处理器标准速度为1,比如RMS调度算法,利用率上界0.69,那么也就是说最优调度算法只需要处理器速度为0.69即可,因此,加速因子 f = 1/0.69。比如EDF调度算法,利用率上界是1,那么加速因子为1/1,所以说EDF就是实时调度最优调度算法了。
举个简单例子:
U=0.69的任务集,RM调度,很明显最优调度算法只需要处理器速度为0.69即可调度成功,但是RM却需要处理器速度为1,就能保证可以调度成功。因此这里的加速因子就是1/0.69 约等于 1.4,即 f=1.4。
U=0.5,最优调度算法只需要处理器速度为0.5即可调度成功,但是RM却需要处理器速度为0.5*1.4=0.7速度即可。当然,超过这个速度,那就更加能成功了。
U=0.9,最优调度算法只需要处理器速度为0.9即可调度成功,但是RM却需要处理器速度为0.9*1.4=1.22速度即可。
U=1.5,最优调度算法只需要处理器速度为1.5即可调度成功,但是RM却需要处理器速度为1.5*1.4=2.1速度即可。当然,超过这个速度,那就更加能成功了。
加速因子和单核多核没有关系,单核调度算法或者多核调度算法都能有加速因子(多核中加速因子,指每个核需要提速的倍数,而不是单独一个核)。比如
- 单核RM的加速因子1/0.69,
- 多核分区调度算法FFD(一个任务集,任务分配采用FFD,各核采用EDF调度)加速因子为 ,其中m为核数
- 杨茂林老师提出的资源优先分区调度算法加速因子 ,是考虑共享资源约束的所有多核实时调度算法中目前最小且唯一确保常数加速因子的调度算法
- 约束截止时间任务集合全局 EDF 调度算法的加速因子约为 2.62
多核调度也有总任务集利用率上界。单核中,很明显加速因子可以认为就是利用率上界的倒数,但是多核中就不是了( 倒数,也应该倒(m+1)/2 /m,应该是1 / ((m+1)/2 /m)= 2m/(m+1) ,因为这里的利用率上界是要先均匀分配到每个核上的,此时得到每个核的处理器速度才对),比如分区调度中虽然某些分配算法的利用率上界都是(比如FF和FFD),但是加速因子是不一样的(FFD加速因子 < FF),因此加速因子才能解释实验效果(实际实验中FFD的可调度率要高于FF)。
为什么多核分区调度算法中,利用率上界一样,但是加速因子却不一样呢?
答:这是因为,即使理论最优算法,也不能切割任务来实现最优分配的,因为举出一个例子任务集a,确实分配算法FFD的上界为(m+1)/2,另一个例子任务集b, 确实分配算法FF的上界也是(m+1)/2 ,但是,例子任务集b中,即使最优调度分配算法,它也不能实现分配成功,或者不能实现每个核利用率为U/m呀,那么取最大核的利用率为理论最优算法的处理器速度,因此加速因子就不是 1 / ((m+1)/2 /m)= 2m/(m+1),即加粗部分,不一定能实现。
比如先举个反例:m个0.5任务,1个0.5+e任务,WF先分配前m个,那么0.5这个任务就失败了,我们会认为,而此时,最优理论分配算法(不能切割任务)一定会有两个0.5任务分到一个核才行,那么这个核的速度就得为1,因此标准速度1除以这个理论速度1,加速因子就为1了(很明显,WF的加速因子肯定不止1,因此要找出正确(临界的)的加速因子(加速因子太小了,保证不了一定可调度,太大了又太悲观(浮夸)),就得构造很好的例子,下面举的这个例子就是这样的)。实际上从P43页我们知道,WF的加速因子比下面说的FFI的加速因子还要小,但是我们实验知道FF的可调度率比WF要好,因此加速因子其实也不能完全的解释各对比算法的可调度率好坏。
举个例:这里来计算一下FF, FFI, BF, and BFI的加速因子(在没有数学严格证明的情况下(目标是想找到加速因子的最大值),只能靠举例子来表明至少(at least)的加速因子(即至少需要提速的倍数,因此这个不能作为可调度性的依据,因为如果能找到加速因子的下界,就能通过倒数作为利用率上界的判定法了),下面情况就是这样(论文作者就是这样干的)):
我们有m个核,2m个任务,
- 前m个任务,每个任务利用率0.5/m
- 后m个任务,每个任务利用率0.5+e,e趋于0
对于FFI,很明显FFI会先把前m个任务分配在第一个核,占据了0.5利用率。那么剩下的后m个任务只能分剩下的m-1个核了,很明显核不够了,因此分配失败。也就是上面的e只要等于0,这个任务集就是可以分配成功了,即这是个临界任务集。每个核的速度假设为1的。
对于一个最优分配算法(上帝视角,这里需要看清楚最优分配算法的具体操作(注:任务不能切割而均分),而不是简单的U/m作为单核速度,上面这个任务集明显只是刚好能均分了,这个例子就是(m*(0.5/m+0.5+e) / m = 0.5+e+ 0.5/m),很明显会把后m个任务(也就是大利用率任务优先)先逐个分配到m个核上,然后后m个任务再逐个分配到这m个核上(注释A),这样每个核只需要(0.5+e+ 0.5/m)的速度即可。
因此FFI的加速因子为1/ (0.5+e+ 0.5/m),当e趋于0,加速因子 = 2-2/(m+1)
注释A:如果是FFD等算法,会分配到第一个核上,虽然任务集也能分配成功(说明FFD的加速因子肯定会小一些),但是该核压力就很大(负载不均衡)。因此FFD其实也不是最优的调度算法,其加速因子,会由其它极端例子体现,本例子只用于分析FFI的至少的加速因子(因为本例本质上就是举了一个极端例子,因此不属于加速因子上界证明,而仅仅是一个探索性的下界证明罢了)。
从上面例子可以看出,如果是用WFD分配方式,就是最优算法了,然而再换一个例子,可能FFD又可能是最优分配了,而WFD却不是了。因此我们说,它们都是启发式分配算法而已(即近似算法),能实际使用。而所有情况下都最优的分配算法是NP-hard计算时间复杂度的,我们一般是没法实际使用的。总体大量随机任务集测试,平均情况而言,FFD和BFD的可调度性是最好的,WF最差,但是负载均衡性最好。
下篇博客,我们聊一聊 多核分区实时任务调度算法的 近似率(asymptotic approximation ratio) 的概念和作用。
实时可调度性分析算法— 利用率上界 和 加速因子的作用相关推荐
- sporadic偶发实时任务多核分区动态优先级EDF(或者DM)调度(以及可调度性分析)经典算法详解
sporadic任务的概念:实时任务分类与术语_标biao的博客-CSDN博客,也就是任务的截止期可以小于周期. with no loss of generality,任务集为封闭任务集,不会运行时动 ...
- 【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )
文章目录 一.小 O 记号 ( 严格渐进上界 ) 二.分析算法的时间复杂度 一.小 O 记号 ( 严格渐进上界 ) 如果 g(n)\rm g(n)g(n) 是 f(n)\rm f(n)f(n) 渐进上 ...
- 实时股票分析系统的架构与算法
如果能在一台服务器上应用人工智能和机器学习算法处理每天的股票交易,而自己则在夏威夷的海滩上享受生活,那将是多么惬意呀.虽然股票价格的变化受多种因素的影响,世上也没有免费的午餐,但是有些公司依然能够借助 ...
- 大数据主题分享第三期 | 基于ELK的亿级实时日志分析平台实践
猫友会希望建立更多高质量垂直细分社群,本次是"大数据学习交流付费群"的第三期分享. "大数据学习交流付费群"由猫友会联合,斗鱼数据平台总监吴瑞诚,卷皮BI技术总 ...
- 实时语义分割算法大盘点
本文转载自计算机视觉工坊 语义分割论文 语义图像分割是计算机视觉中发展最快的领域之一,有着广泛的应用.在许多领域,如机器人和自动驾驶汽车,语义图像分割是至关重要的,因为它提供了必要的上下文,以采取行动 ...
- 「实时视频流分析的边缘计算技术」最新2022研究综述
清华大学最新<面向实时视频流分析的边缘计算技术>综述 实时视频流分析在智能监控.智慧城市.自动驾驶等场景中具有重要价值. 然而计算负载高. 带宽需求大.延迟要求严等特点使得实时视频流分析难 ...
- 上海智慧校园视频智能分析算法 yolov7
上海智慧校园视频智能分析算法通过yolov7+python网络模型分析技术,上海智慧校园视频智能分析算法对校园内学生打架.翻墙.倒地.异常聚集.攀高等行为实时监测预警.YOLOv7 的发展方向与当前主 ...
- 一周一论文(翻译)——[ICDCS 15] DRS: 在快速流下实时计算分析的动态资源调度系统
Abstract 在数据流管理系统(DSMS)中,用户注册连续查询,并在数据到达和到期时接收结果更新. 我们专注于具有实时约束的应用程序,其中用户必须在更新发生后的给定时间段内接收每个结果更新. 为了 ...
- 速度超Mask RCNN四倍,仅在单个GPU训练的实时实例分割算法 | 技术头条
作者 | Daniel Bolya Chong Zhou Fanyi Xiao Yong Jae Lee 译者 | 刘畅 责编 | Jane 出品 | AI科技大本营(id:rgznai100) [导 ...
最新文章
- html javascript 遍历数组、字符串
- C++常用数据结构入门
- 【i.MX6UL/i.MX6ULL开发常见问题】单独编译内核,uboot生成很多文件,具体用哪一个?...
- C#.NET编程----Spring.NET NHibernate整合
- 前端学习(1764):前端调试值之性能分析的方法二
- ISE MAP报错: Unsupported programming for BSCAN block and JTAG_CHAIN attribute value 1的解决方法...
- 网易丁磊:中国的安卓分成全世界最贵 比苹果贵20%左右
- 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出
- Windows监控日志文件 Tail for Win32
- BZOJ4571: [Scoi2016]美味【主席树】【贪心】
- c语言中除法取整6,关于C语言的除法与取整问题!?
- java公告栏源码_公告栏view
- Ubuntu 下eclipse安装
- android FDE功能介绍
- 函数:判断一个整数是否既是5又是7的整倍数
- mysql导入数据报错_MySQL导入数据库时报错,MySQL server has go away
- 攻防世界MISC(杂项)新手练习区
- OS及Mac开源项目和学习资料【超级全面】
- 关于时钟周期、状态周期、机器周期、指令周期的解释_普中_89C52单片机
- 裁员纪实:联想不是我的家(转)