CN109542606B - 一种面向穿戴设备应用的eas调度器的优化方法 - Google Patents
一种面向穿戴设备应用的eas调度器的优化方法 Download PDFInfo
- Publication number
- CN109542606B CN109542606B CN201811426219.2A CN201811426219A CN109542606B CN 109542606 B CN109542606 B CN 109542606B CN 201811426219 A CN201811426219 A CN 201811426219A CN 109542606 B CN109542606 B CN 109542606B
- Authority
- CN
- China
- Prior art keywords
- cpu
- task
- load
- capacity
- scheduler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
Abstract
一种面向穿戴设备应用的EAS调度器的优化方法,它属于穿戴设备优化技术领域。本发明解决了现有的面向可穿戴应用的低功耗技术的整体功耗大的问题。本发明提出了基于指数平滑的WALT算法来预测任务负载,针对延迟敏感任务和非延迟敏感任务分别选择合适的目标CPU,针对选择目标CPU时遇到的负载均衡问题,采用优先局部负载均衡策略进行处理,有效地降低了整体功耗,特别地,在应用程序Patricia中,采用本发明的方法在使得整体性能提升46%的同时,将整体功耗降低了48%。本发明可以应用于穿戴设备优化技术领域用。
Description
技术领域
本发明属于穿戴设备优化技术领域,具体涉及一种EAS调度器的优化方法。
背景技术
近年来,异构多核处理器技术得到了迅速发展,其兼顾高性能和低功耗的特性,市面上很多基于嵌入式系统的可穿戴设备均选用了异构多核处理器,其中应用范围最广的是ARM Big.LITTLE技术。针对Big.LITTLE技术,Linux等常见嵌入式系统均在调度策略、电源管理等方面进行了优化,但是这些系统均是面向通用设备,而在可穿戴设备中,由于使用场景有限,因此需要在原有调度策略的基础上,进行面向可穿戴应用的研究。
在穿戴设备应用中,最明显的特征是需要借助IO接口与外界设备进行数据通信,每个应用程序均是以发送或者接受数据开始,再以计算处理完成后给用户提供反馈结束。因此,可以将可穿戴应用程序划分为一系列计算阶段,一般可以分为如下三个阶段:
(1)数据采集阶段:调用Bluetooth或者wifi与外界设备进行数据通信,或者使用传感器采集必要的数据。
(2)过滤存储阶段:对收集的数据进行分析,利用特定算法对数据进行过滤降噪,删除无效数据,并将有效数据在本地存储。
(3)计算处理阶段:根据实际应用程序的需求,对采集的数据进行计算处理,处理完成后给用户提供反馈。
其中,数据采集阶段一般存在周期性,处于后台运行,占用CPU时间较短,并且仅需要较少的CPU资源就能完成任务,同时,数据采集过程会根据实际需求去调用外设(Bluetooth或wifi等)发送或接收数据,当调用外设时,任务会将自己挂起,直至数据传输结束。过滤存储阶段对CPU资源的需求与采集的数据内容相关,对于传感器采集的小数据,仅需要占用少量CPU资源就能完成过滤与存储;而对于摄像头或麦克风采集的大数据,需要较高的CPU资源才能尽快完成数据过滤降噪。当完成数据采集和数据存储后,接下来进入计算处理阶段,在该阶段中主要完成图片视频处理、数据加密、数据融合等任务,这些任务均需要大量的CPU资源,同时为了尽快给用户提供反馈,就需要提高这些任务的优先级,进而尽快完成这些任务,以提高系统的响应速度。但是现有的面向可穿戴应用的低功耗技术研究均未能充分考虑应用程序的优先级、是否延迟敏感、周期性、负载高低、持续时间以及是否调用外设等特点,导致现有的面向可穿戴应用的低功耗技术研究的整体功耗仍然较大。
发明内容
本发明的目的是为解决现有的面向可穿戴应用的低功耗技术的整体功耗大的问题。
本发明为解决上述技术问题采取的技术方案是:
一种面向穿戴设备应用的EAS调度器的优化方法,该方法包括以下步骤:
在系统初始化阶段,Linux内核(Linux kernel)通过能效模型(Energy Model)查找DTS(Device Tree Source)文件,获取CPU核心处于不同频率(frequency)时对应的capacity(计算能力)和energy(功耗),并利用能效数据表来保存CPU核心处于不同频率(frequency)时对应的capacity(计算能力)和energy(功耗);
EAS调度器根据FIE(Frequency invariant Engine)得到CPU频率变化信息,EAS调度器根据CIE(CPU invariant Engine)得到不同CPU架构的capacity对负载的影响;并基于指数平滑的WALT算法计算下一时间窗口的任务负载,将当前时间窗口的CPU 利用率与计算出的下一时间窗口的任务负载加和得到预测的下一时间窗口的CPU利用率;
利用计算出的下一时间窗口的任务负载以及CPU利用率,考虑迁移前后的功耗变化,结合SchedTune机制来确定计算任务是否属于延迟敏感任务;
若计算任务属于延迟敏感任务,则寻找出max_capacity最小且处于最浅睡眠状态的睡眠CPU作为目标CPU;
若计算任务属于非延迟敏感任务,则在小核CPU上采用计算任务封包策略,以小核CPU计算能力的N%作为封包阈值选择出目标CPU,
针对选择目标CPU时遇到的负载均衡问题,采用优先局部负载均衡策略进行处理。
本发明的有益效果是:本发明提供了一种面向穿戴设备应用的EAS调度器的优化方法,本发明提出了基于指数平滑的WALT算法来预测任务负载,针对延迟敏感任务和非延迟敏感任务分别选择合适的目标CPU,针对选择目标CPU时遇到的负载均衡问题,采用优先局部负载均衡策略进行处理,有效地降低了整体功耗,特别地,在应用程序Patricia 中,采用本发明的方法在使得整体性能提升46%的同时,将整体功耗降低了48%。
附图说明
图1是本发明的一种面向穿戴设备应用的EAS调度器的架构图;
其中:DTS(Device Tree Source)、CIE(CPU Invariant Engine)、FIE(FrequencyInvariant Engine)、CFS(Completely Fair Scheduler)、PELT(per entity loadtracking)、ScheFreq(调频策略)、CPUFreq(CPU动态调频)、EAS(Energy Aware Scheduling能耗感知调度器)、 CPUidle(CPU休眠策略)、WakeupPath(对应CPU选择算法)、WALT(WindowAssisted Load Tracking)、cgroups(cgroup接口,该接口支持任务分类,例如前台任务、后台任务,并根据任务的分类,为任务提供不同的调度策略);
图2是利用传统WALT算法预测任务负载的示意图;
图3中,a)为负载变化相对平缓且具备规律性时,本发明基于指数平滑的WALT算法的预测效果图;
b)为任务的负载突然增加时,本发明基于指数平滑的WALT算法的预测效果图;
c)为任务的负载出现骤降时,本发明基于指数平滑的WALT算法的预测效果图;
d)为任务的负载确实处于下降的趋势时,本发明基于指数平滑的WALT算法的预测效果图;
图4是本发明为延迟敏感任务选择CPU的示意图;
图5为小核CPU的性能与功耗的关系曲线图;
图6为大核CPU的性能与功耗的关系曲线图;
图7为本发明采用任务封包策略后的目标CPU选择示意图;
图8为EAS调度器中传统的负载均衡的示意图;
图9为本发明的优选局部负载均衡示意图;
图10为本发明改进后EAS调度器的基本性能提升百分比的示意图;
具体实施方式
具体实施方式一:如图1所示,本实施方式所述的一种面向穿戴设备应用的EAS调度器的优化方法,该方法包括以下步骤:在系统初始化阶段,Linux内核(Linux kernel) 通过能效模型(Energy Model)查找DTS(Device Tree Source)文件,获取CPU核心处于不同frequency(频率)时对应的capacity(计算能力)和energy(功耗),并利用能效数据表来保存CPU核心处于不同frequency(频率)时对应的capacity(计算能力)和energy (功耗);
在能效模型(Energy Model)的基础上,EAS调度器根据FIE(Frequency invariantEngine)得到CPU频率变化信息,EAS调度器根据CIE(CPU invariant Engine)得到不同CPU架构的capacity对负载的影响;并基于指数平滑的WALT算法计算下一时间窗口的任务负载,将当前时间窗口的CPU利用率与计算出的下一时间窗口的任务负载加和得到预测的下一时间窗口的CPU利用率;
利用计算出的下一时间窗口的任务负载以及CPU利用率,考虑迁移前后的功耗变化,结合SchedTune机制来确定计算任务是否属于延迟敏感任务;
若计算任务属于延迟敏感任务,则寻找出max_capacity最小且处于最浅睡眠状态的睡眠CPU作为目标CPU;
若计算任务属于非延迟敏感任务,则在小核CPU上采用计算任务封包策略,以小核CPU计算能力的N%作为封包阈值选择出目标CPU,
针对选择目标CPU时遇到的负载均衡问题,采用优先局部负载均衡策略进行处理。达到降低功耗的目的。
max_capacity(最大计算能力值)最小是指:对于某个CPU,根据其不同频率(frequency)对应的capacity(计算能力)和energy(功耗),选择出该CPU的max_capacity(最大计算能力值),同理,得出其它CPU的max_capacity(最大计算能力值),通过比较各个CPU的max_capacity(最大计算能力值),选择出max_capacity最小的CPU。
本实施方式中的CPU在没有特别限定的情况下,均是指系统的全部CPU。
具体实施方式二:本实施方式与具体实施方式一不同的是:所述基于指数平滑的WALT算法计算下一时间窗口的任务负载,其具体过程为:
Lt+1=a*xt+(1-a)*Lt
其中,Lt+1表示第t+1个时间窗口中预测的任务负载值,Lt表示第t个时间窗口中预测的任务负载值,xt表示第t个时间窗口中实际的任务负载值,a表示平滑因子,其中 a∈(0,1);将Lt,Lt-1,…,L1代Lt+1中,得到Lt+1展开后的表达式:
Lt+1=axt+a(1-a)xt-1+a(1-a)2xt-2+…+a(1-a)t-1x1+(1-a)tL1
从上述公式可以看出,该一次指数平滑实际上是以a(1-a)k为加权因子的移动平均。由于a的值小于1,当k越大的时候,a(1-a)k的值就越小,因此,距离当前时间越远的负载值占的权重越小。结合之前PELT算法中的几何级数的计算特点,选取a=0.5,同时为了尽可能减少初值L1对负载预测的影响,
其中:L1表示进程最久远的两个历史任务负载值的平均值;
L1=(x1+x2)/2
则取下一时间窗口的任务负载Lnext为:第t+1个时间窗口预测的任务负载值与最近的N个时间窗口的实际的任务负载值中的最大值:
Lnext=max{Xrecent,Lt+1}
其中:Xrecent代表最近的N个时间窗口的实际的任务负载的最大值。
在实际可穿戴应用中,存在大量周期性应用,其负载变化存在规律性,在内核调度的过程中,这些任务可能会被抢占或者中断,所以在WALT所有统计窗口中,可能会出现部分负载突增或者突降的现象,如图2所示,采用平均值预测任务负载,不同时间段的负载权重相同,计算得到的负载等于4,不能客观反映负载变化的规律性,实际预测负载应该接近1才更为合理。
合理的计算方式应为:距离当前时间越近的负载,权重越大,当time等于0至4时,负载权重呈递增状态,0时刻的权重最小,4时刻的权重最大,提高最近值对负载预测的影响。同时,在进行任务负载预测时,需要基于如下原则:面对突增的进程负载,需要及时响应;面对突降的进程负载,需要延迟响应。前者是为了提高交互式应用的响应速度,后者是为了避免进程负载预测值的来回震荡。
综上所述,本实施方式提出“基于指数平滑的WALT算法”,即采用一次指数平滑法预测下一个时间窗口中的任务负载;
经过本实施方式的基于指数平滑的WALT算法的优化后,通过举例来说明可能出现的情况,分析在不同负载变化情况下的任务负载预测的结果,如图3中的a)、b)、c)和 d)所示。
在a)中,系统中存在大量周期性运行的可穿戴应用,其负载变化相对平缓且具备规律性,平均值法与一次指数平滑法的负载预测结果类似,WALT算法预测得到的任务负载始终保持在合理的范围内。
在b)中,当任务的负载突然增加时,由于Xrecent记录了最近时间窗口中的负载情况, WALT算法会选择Xrecent作为进程负载的预测值,保证了负载突然增大时,负载预测能够及时响应,从而提高系统响应速度。
在c)中,当任务的负载出现骤降时,由于采用指数平滑的方式预测进程负载,距离当前时间越远的负载,对任务负载预测值的影响越小,相较于传统平均值的计算方式,突降的历史负载对负载预测的影响更小,避免了Linux内核调度过程中抢占等异常操作对任务负载的剧烈影响。
在d)中,当任务的负载确实处于下降的趋势时,由于距离当前时间越近的负载在计算时的权重越大,相较于直接取平均值的计算方法,一次指数平滑法更能准确反映任务负载呈下降趋势的变化规律。
通过上述分析,基于指数平滑的WALT算法,在计算下一个时间窗口中的任务负载预测值时,提高了最近历史负载对预测值的权重,降低了最远历史负载对预测值的权重,使得任务负载预测更能反映实际变化规律,结合使用最近值,在保证可穿戴应用场景对突发性能需求的同时,使得任务的负载预测更加准确,避免了因为任务负载预测的不准确而导致的CPU频率的来回切换,减少了系统整体功耗的浪费。同时,提高任务负载预测的准确性,使得在为任务选择CPU时更加合理,充分利用了系统的CPU资源。
具体实施方式三:本实施方式与具体实施方式二不同的是:所述若计算任务属于延迟敏感任务,则寻找出max_capacity最小且处于最浅睡眠状态的睡眠CPU作为目标 CPU,其具体过程为:
遍历所有的CPU,选出计算能力满足计算任务需求的睡眠状态的CPU,根据选出的每个睡眠状态CPU的max_capacity,记录出max_capacity最小的睡眠状态CPU的 max_capacity值;并记录选出的睡眠状态CPU中最浅的睡眠深度以及最浅的睡眠深度所对应的睡眠状态CPU;
选择出max_capacity最小且处于最浅睡眠状态的睡眠状态CPU作为目标CPU,若未找到max_capacity最小且处于最浅睡眠状态的睡眠状态CPU,则在处于激活状态的 CPU中找出具有最大空闲计算能力的CPU作为目标CPU,将具有最低利用率的激活状态CPU作为备选CPU。
在传统方法中,当任务属于延迟敏感类型时,遍历系统中的所有CPU,一旦找到睡眠CPU则立即返回,不考虑该CPU的计算能力(capacity)和睡眠状态的深浅。虽然这种方减小了CPU的搜索空间,但是在Big.LITTLE架构中,大小核的计算能力和功耗不同,使用一个大核产生的功耗比使用一个小核使用的功耗要大得多,并且唤醒不同深度睡眠状态CPU所产生的功耗和延迟是不一样的。在嵌入式多核处理器中,一般仅包含少量的CPU核心,相较于减少搜索空间带来的功耗和性能提升,选择合适的CPU显得更加有必要。
综上所述,针对延迟敏感任务,不直接返回遍历遇到的第一个睡眠CPU,而是寻找一个max_capacity最小且处于最浅睡眠状态的睡眠CPU。具体CPU选择算法的实现如表1中的算法1所示。因此在图4的示例中,应为延迟敏感任务Task选择CPU3或者 CPU4,而不应该选择CPU0,因为CPU0属于大核域,而小核CPU就已经能够满足任务的需要;同时,由于CPU0处于深度睡眠状态,唤醒CPU0要比唤醒CPU3产生更高的功耗,同时延迟也更大。
表1
具体实施方式四:本实施方式与具体实施方式三不同的是:所述若计算任务属于非延迟敏感任务,则在小核CPU上采用计算任务封包策略,以小核CPU计算能力的N%作为封包阈值选择出目标CPU,其具体过程为:
遍历所有的CPU,在所有计算能力满足计算任务需求的睡眠状态CPU中,选择 max_capacity最小且睡眠深度最浅的CPU作为备选CPU;在满足封包阈值的前提下,在所有激活状态的CPU中选择出一个小核CPU作为目标CPU,选择出的小核CPU满足让最多的任务进行封包,且仍满足任务封包的计算需求;若未找到目标CPU,则选择 max_capacity最小且具有最大空闲计算能力的激活状态CPU作为目标CPU。
任务封包策略就是让较多的任务在同一cpu上运行。
面对非延迟敏感任务,EAS调度器目前的做法总是尽可能将任务在小核调度域中进行任务分散(spread),因为它是基于这样一个前提:“在较低的OPP中,将两个任务运行在两个CPU上”比“在更高的OPP中,将两个任务运行在同一个CPU上”能耗效率要更好。
其中,OPP(Operation Performance Point)曲线描述的是CPU性能和功耗的关系,如图5和图6所示,图中的数据均从系统DTS文件中获得,且经过标准化处理。从图中可以看出,CPU的性能和功耗并不是呈简单线性关系,而近似呈多项式关系。在小核的 OPP图中,CPU仅支持六种计算能力,当CPU处于最小计算能力时,功耗大约在50左右,也就是说,即使当小核CPU运行很低负载的应用时,也会产生至少50的功耗,这必然会产生功耗的浪费。
而目前EAS调度器默认采用的分散策略,会导致任务相对均匀的分散在小核调度域中,则小核调度域中的CPU将总是处于运行状态,而不能进入睡眠状态;同时由于每个CPU核心的利用率都较低,CPUFreq子模块将会为CPU设置较低的频率,进而CPU核心的计算能力也相对较低,整个系统的计算吞吐率也将受到影响。综上所述,在可穿戴应用场景中,存在着大量的周期性低负载的应用,如果仅仅是分散在不同的小核CPU上,将会产生功耗的浪费和更大的响应延迟。
因此,针对非延迟敏感的低负载任务,提出“任务封包策略”。考虑到系统在任意CPU 核心的利用率超过80%就会强制进行全局负载均衡,因此,以CPU计算能力的80%作为封包阈值。同时,根据OPP曲线,相较于小核CPU核心,大核CPU核心在性能较强时,产生的功耗更多,所以不适合在大核心上进行“任务封包策略”,仅仅选择在小核CPU 上进行“任务封包策略”。具体实现如表2中的算法2所示。
表2
采用“任务封包策略”后,为任务选择CPU时将会发生变化,如图7所示。在图中,未采用“任务封包策略”的EAS调度器将会选择CPU4作为目标CPU,因为CPU4是小核调度域中非睡眠状态CPU中利用率最低的,这样做的目的就是为了将任务分散。而采用“任务封包策略”后,在满足封包阈值的前提下,调度器将会选择CPU2作为目标CPU。通过“任务封包策略”,CPU4将会在任务执行完成后进入空闲状态,从而达到在系统负载较低时,让更多的核心进入睡眠状态的目的,降低了系统的功耗;同时,由于CPU2 上所需计算能力增大,CPUFreq子模块将会提高CPU2的计算能力,提高了任务的完成速度,也提高了系统的响应能力。
具体实施方式五:本实施方式与具体实施方式一不同的是:所述针对选择目标CPU时遇到的负载均衡问题,采用优先局部负载均衡策略进行处理,其具体过程为:
分别在大核调度域和小核调度域中设置一个CPU过载(over-utilized)标识量,来标识各自调度域是否出现CPU过载(over-utilized)现象;
当其中一个调度域出现CPU过载(over-utilized)现象时,将自身调度域设置为CPU 过载(over-utilized),优先考虑在自身调度域内进行负载均衡,即将负载均匀分散在自身调度域中的所有CPU核心上,若不满足自身调度域的负载均衡条件,再考虑全局负载均衡策略,将系统中的负载均匀分散在系统中所有的CPU核心上。
在异构多核处理器(例如瑞芯微RK3399)中,当系统启动初始化阶段将会构建一个调度域关系。其中在多核层级,分为大核调度域和小核调度域,两者为兄弟关系;而在SOC层级(也称作DIE层级),只有一个根调度域,用来管理大核调度域和小核调度域,之间存在父子关系。
在目前EAS调度器中,当系统没有over-utilized时,由EAS调度器负责进程在创建、唤醒时的CPU核心选择工作,而当系统出现over-utilized时,SMP负载均衡将会接管EAS调度器,对系统中的负载进行均衡操作。
在目前的负载均衡实现中,系统的根调度域里有一个变量标识系统是否over-utilized,当系统中只要有一个CPU核心处于over-utilized状态的,这个标识量将会被置为true,整个系统将会被认为是over-utilized的,接下来就会进行全局SMP负载均衡,将系统中的负载均分在系统中所有的CPU核心上。
如图8所示,当系统中CPU 2出现over-utilized现象,在目前的调度算法中,系统将会标记整个系统是over-utilized的,SMP负载均衡将会开始工作,将系统中的所有负载在六个核心上进行任务均分操作。但是,从图中可以看出,CPU 2处于小核调度域,同时CPU3、CPU 4、CPU 5均处于一个较低负载的情况,此时,最合理的方式应该是在小核调度域内进行内部负载均衡,而不应该打扰大核调度域。并且,在嵌入式异构多核处理器中,CPU核心分为大核簇和小核簇,不同类型的核心的计算能力是不一样的,如果只是将负载平均分到所有核心上,这违背了面向异构多核的调度策略的设计思想,由于不同核心的计算能力并不相同,平均分散任务并不能保证任务调度的公平性,可能会导致系统在SMP负载均衡后出现震荡现象,需要一段时间才能重新平衡。
因此,针对这种情况,提出“优先局部负载均衡”策略。由于嵌入式处理器分为大核调度域和小核调度域,因此分别在大核调度域和小核调度域中设置一个over-utilized标识量,用来标识各自调度域是否出现over-utilized现象。当某个调度域出现over-utilized 现象时,首先将自身调度域设置为over-utilized,然后优先考虑在自身调度域内进行负载均衡。
因为采用了“优先局部负载均衡策略”,在上述例子中,系统将会优先在小核调度域中进行负载均衡,而不会影响大核调度域的正常工作,负载均衡结果如图9所示。
同时为了保证局部负载均衡不会破坏系统整体的均衡性,当出现如下情况的时候需要设置父调度域的over-utilized标识量,从而在系统所有调度域之间进行负载均衡:
(1)当子调度域中的某一CPU上运行着一个misfit任务时;
(2)当子调度域的利用率大于整个子调度域的计算能力时;
其中,第一种情况中的misfit任务是指某任务当前运行的CPU核心所提供的计算能力不能满足该任务的需求;第二种情况是指当前调度域中所有CPU核心所提供的计算能力,已经不能满足该调度域中所有任务的运行,这个时候就需要借助其他调度域的计算能力。
一旦父调度域的over-utilized标识量被置为true,就需要在整个调度域进行负载均衡。当负载均衡完成之后,将会取消所有调度域的over-utilized标识量,表示整个系统不是over-utilized的。
在可穿戴应用中存在很多突发的高负载应用,当这些应用出现时,很容易导致小核调度域或者大核调度域中出现负载不均衡的现象,如果只是简单粗暴地进行全局负载均衡,将会导致性能的降低和功耗的浪费,通过“优先局部负载均衡策略”,减少了任务在大核调度域和小核调度域之间进行无意义的任务迁移,在保证系统性能的基础上,降低了系统的功耗。
具体实施方式六:本实施方式与具体实施方式一、二、三、四或五不同的是:所述以小核CPU计算能力的N%作为封包阈值选择出目标CPU,其中:N的取值范围是70 —80。
本发明的实验软硬件环境:
本实验基于瑞芯微Rockchip RK3399Sapphire&Excavator开发板,其中处理器芯片 RK3399采用的是六核Big.LITTLE架构,包括2个Cortex-A72大核(最高主频为2.0GHz)和4个Cortex-A53小核(最高主频为1.5GHz),内置2G LPDDR3RAM和8GEMMCROM。瑞芯微RK3399开发板采用的软件平台信息如表3所示。
表3瑞芯微RK3399开发版的软件平台
调度器基本性能与公平性分析:
为了更好地测试改进后调度器的基本性能,采用LinuxKernel源码中自带的perf工具来进行系统性能测试。Perf中包含多个性能测试工具,其中涉及调度器基本性能和公平性测试的分别是Sched message和Sched pipe。
1)基本性能测试:Sched message是从经典的基准测试程序hackbench移植得到的,主要用于测量调度器的性能,通过启动N个读任务和写任务,通过IPC进行并发的读写操作来衡量调度器的性能。对比改进前后的性能提升,实验结果如图10所示。
1)实验结果分析:当参数N较小时(小于60时),系统负载较低,由于在CPU选择算法中采用了“任务封包策略”,导致部分任务被安排到同一个CPU上执行,因此性能略有下降;当参数N较大时(大于等于60时),系统负载较重,改进后的调度器在CPU 选择和负载均衡方面更加合理,系统性能得到了一定的提升。
2)调度公平性测试:Schedpipe主要用于测量调度器的公平性,其基本原理是创建两个任务:任务A和任务B,这两个任务相互通过pipe向对方发送N个整数,两者呈相互依赖关系,如果调度器的调度策略存在不公平,偏向于某一任务,则整体的运行时间将会更长。
实验结果分析:当参数N大于等于200000时,改进后的调度器的整体公平性要稍优于改进前的调度器。
调度器在多线程应用中的性能功耗分析:
基准测试程序MiBench是密歇根大学推出的一个免费的嵌入式基准测试程序集合,其中包括6类35个嵌入式应用程序。但是MiBench仅适用于单核嵌入式系统,包含的基准程序都是单线程应用程序,并不适合测试异构多核嵌入式系统的性能与功耗。因此,基于MiBench,Syed Muhammad Zeeshan Iqbal等人提出了并行化的MiBench: ParMiBench。
ParMiBench是一个开源的benchmark,它包含了MiBench中的7个计算密集型算法程序。与MiBench不同的是,它利用pthread多线程技术将这7个应用程序修改为可并行执行,因此,只要是支持pthread和标准C的Linux平台(或者其它类Unix平台)均可以执行这些基准测试程序。具体实验结果如表4所示。
表4 ParMiBench中每个应用程序的性能提升及功耗改善百分比
实验结果分析:在这7个应用程序中,性能提升和功耗改善最明显的是Patricia,性能提升46%的同时,功耗降低了48%,监测运行Patricia时的CPU利用率情况,CPU利用率整体较低,说明当系统负载较低时,改进后的调度器在CPU选择和负载均衡方面更具优势;在Bitcount、Susan、Basicmath、Dijkstra、Stringsearch中,相较于改进前的调度器,改进后的性能稍有提升,同时功耗改善均在5%左右,验证了改进后的调度器在功耗方面更具优势。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (6)
1.一种面向穿戴设备应用的EAS调度器的优化方法,其特征在于:该方法具体包括以下步骤:
在系统初始化阶段,Linux内核通过能效模型查找DTS文件,以获取CPU核心处于不同频率时对应的capacity和energy,并利用能效数据表来保存CPU核心处于不同频率时对应的capacity和energy;
EAS调度器根据FIE得到CPU频率变化信息,EAS调度器根据CIE得到不同CPU架构的capacity对负载的影响;并基于指数平滑的WALT算法计算下一时间窗口的任务负载,将当前时间窗口的CPU利用率与计算出的下一时间窗口的任务负载加和得到预测的下一时间窗口的CPU利用率;
利用计算出的下一时间窗口的任务负载以及CPU利用率,考虑迁移前后的功耗变化,结合SchedTune机制来确定计算任务是否属于延迟敏感任务;
若计算任务属于延迟敏感任务,则寻找出max_capacity最小且处于最浅睡眠状态的睡眠CPU作为目标CPU;
若计算任务属于非延迟敏感任务,则在小核CPU上采用计算任务封包策略,以小核CPU计算能力的N%作为封包阈值选择出目标CPU;
针对选择目标CPU时遇到的负载均衡问题,采用优先局部负载均衡策略进行处理。
2.根据权利要求1所述的一种面向穿戴设备应用的EAS调度器的优化方法,其特征在于,所述基于指数平滑的WALT算法计算下一时间窗口的任务负载,其具体过程为:
Lt+1=a*xt+(1-a)*Lt
其中,Lt+1表示第t+1个时间窗口中预测的任务负载值,Lt表示第t个时间窗口中预测的任务负载值,xt表示第t个时间窗口中实际的任务负载值,a表示平滑因子,其中a∈(0,1);得到Lt+1展开后的表达式:
Lt+1=axt+a(1-a)xt-1+a(1-a)2xt-2+…+a(1-a)t-1x1+(1-a)tL1
其中:L1表示进程最久远的两个历史任务负载值的平均值;
L1=(x1+x2)/2
则取下一时间窗口的任务负载Lnext为:第t+1个时间窗口预测的任务负载值与最近的N个时间窗口的实际的任务负载值中的最大值:
Lnext=max{Xrecent,Lt+1}
其中:Xrecent代表最近的N个时间窗口的实际的任务负载的最大值。
3.跟据权利要求2所述的一种面向穿戴设备应用的EAS调度器的优化方法,其特征在于,所述若计算任务属于延迟敏感任务,则寻找出max_capacity最小且处于最浅睡眠状态的睡眠CPU作为目标CPU,其具体过程为:
遍历所有的CPU,选出计算能力满足计算任务需求的睡眠状态的CPU,根据选出的每个睡眠状态CPU的max_capacity,记录出max_capacity最小的睡眠状态CPU的max_capacity值;并记录选出的睡眠状态CPU中最浅的睡眠深度以及最浅的睡眠深度所对应的睡眠状态CPU;
选择出max_capacity最小且处于最浅睡眠状态的睡眠状态CPU作为目标CPU,若未找到max_capacity最小且处于最浅睡眠状态的睡眠状态CPU,则在处于激活状态的CPU中找出具有最大空闲计算能力的CPU作为目标CPU,将具有最低利用率的激活状态CPU作为备选CPU。
4.跟据权利要求3所述的一种面向穿戴设备应用的EAS调度器的优化方法,其特征在于,所述若计算任务属于非延迟敏感任务,则在小核CPU上采用计算任务封包策略,以小核CPU计算能力的N%作为封包阈值选择出目标CPU,其具体过程为:
遍历所有的CPU,在所有计算能力满足计算任务需求的睡眠状态CPU中,选择max_capacity最小且睡眠深度最浅的CPU作为备选CPU;在满足封包阈值的前提下,在所有激活状态的CPU中选择出一个小核CPU作为目标CPU,选择出的小核CPU满足让最多的任务进行封包,且仍满足任务封包的计算需求;若未找到目标CPU,则选择max_capacity最小且具有最大空闲计算能力的激活状态CPU作为目标CPU。
5.跟据权利要求1所述的一种面向穿戴设备应用的EAS调度器的优化方法,其特征在于,所述针对选择目标CPU时遇到的负载均衡问题,采用优先局部负载均衡策略进行处理,其具体过程为:
分别在大核调度域和小核调度域中设置一个CPU过载标识量,来标识各自调度域是否出现CPU过载现象;
当其中一个调度域出现CPU过载现象时,将自身调度域设置为CPU过载,优先考虑在自身调度域内进行负载均衡,即将负载均匀分散在自身调度域中的所有CPU核心上,若不满足自身调度域的负载均衡条件,再考虑全局负载均衡策略,将系统中的负载均匀分散在系统中所有的CPU核心上。
6.跟据权利要求1-5任意一项权利要求所述的一种面向穿戴设备应用的EAS调度器的优化方法,其特征在于,所述以小核CPU计算能力的N%作为封包阈值选择出目标CPU,其中:N的取值范围是70—80。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811426219.2A CN109542606B (zh) | 2018-11-27 | 2018-11-27 | 一种面向穿戴设备应用的eas调度器的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811426219.2A CN109542606B (zh) | 2018-11-27 | 2018-11-27 | 一种面向穿戴设备应用的eas调度器的优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542606A CN109542606A (zh) | 2019-03-29 |
CN109542606B true CN109542606B (zh) | 2022-08-05 |
Family
ID=65851584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811426219.2A Active CN109542606B (zh) | 2018-11-27 | 2018-11-27 | 一种面向穿戴设备应用的eas调度器的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542606B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190733B (zh) * | 2019-12-27 | 2023-11-17 | 华为技术有限公司 | 用于进行rsa计算的计算资源调度方法及装置 |
CN111831409B (zh) * | 2020-07-01 | 2022-07-15 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
CN114968540A (zh) * | 2021-02-23 | 2022-08-30 | 华为技术有限公司 | 一种核间迁移的频率调整方法 |
CN116737346B (zh) * | 2023-08-14 | 2023-10-24 | 南京翼辉信息技术有限公司 | 一种大小核处理器调度配置系统及其实现方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107918479A (zh) * | 2016-10-07 | 2018-04-17 | 联发科技股份有限公司 | 调整电子设备的处理能力的方法和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10234930B2 (en) * | 2015-02-13 | 2019-03-19 | Intel Corporation | Performing power management in a multicore processor |
-
2018
- 2018-11-27 CN CN201811426219.2A patent/CN109542606B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107918479A (zh) * | 2016-10-07 | 2018-04-17 | 联发科技股份有限公司 | 调整电子设备的处理能力的方法和电子设备 |
Non-Patent Citations (5)
Title |
---|
Android kernel with EAS For better power management;Parab, Vidit Abaji;《2018 2nd International Conference on I-SMAC》;20180831;全文 * |
可穿戴技术的发展;颜延,邹浩,周林;《中国生物医学工程学报》;20151231;第34卷(第6期);全文 * |
基于Android嵌入式系统的低功耗优化;刘海峰;《中国优秀硕士学位论文全文数据库》;20170301;全文 * |
面向穿戴应用的大小核架构低功耗策略研究;成坚;《中国优秀硕士学位论文全文数据库》;20181026;全文 * |
面向能耗优化的云平台调度策略;王正;《中国优秀硕士学位论文全文数据库》;20150730;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109542606A (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542606B (zh) | 一种面向穿戴设备应用的eas调度器的优化方法 | |
Jeong et al. | Band: coordinated multi-dnn inference on heterogeneous mobile processors | |
Thinakaran et al. | Kube-knots: Resource harvesting through dynamic container orchestration in gpu-based datacenters | |
CN109542603B (zh) | 一种提高不同优先级任务间隔离性的多维资源隔离系统 | |
EP3274827B1 (en) | Technologies for offloading and on-loading data for processor/coprocessor arrangements | |
JP2018531450A6 (ja) | 並列ワークスティーリング処理システムのための事前対処的リソース管理 | |
JP2018531450A (ja) | 並列ワークスティーリング処理システムのための事前対処的リソース管理 | |
US20180032376A1 (en) | Apparatus and method for group-based scheduling in multi-core processor system | |
Gahlawat et al. | Analysis and performance assessment of cpu scheduling algorithms in cloud using cloud sim | |
Nishtala et al. | Energy-aware thread co-location in heterogeneous multicore processors | |
Ju et al. | Symphoney: A coordinated sensing flow execution engine for concurrent mobile sensing applications | |
Jahre et al. | GDP: Using dataflow properties to accurately estimate interference-free performance at runtime | |
CN116820784B (zh) | 一种面向推理任务QoS的GPU实时调度方法及系统 | |
Zhang et al. | WAEAS: An optimization scheme of EAS scheduler for wearable applications | |
Shamsa et al. | Concurrent application bias scheduling for energy efficiency of heterogeneous multi-core platforms | |
Cheng et al. | Performance-monitoring-based traffic-aware virtual machine deployment on numa systems | |
Guan et al. | Novel sustainable and heterogeneous offloading management techniques in proactive cloudlets | |
Wang et al. | Balancing energy efficiency and real-time performance in GPU scheduling | |
Shamsa et al. | Energy-performance co-management of mixed-sensitivity workloads on heterogeneous multi-core systems | |
Songara et al. | MRA-VC: multiple resources aware virtual machine consolidation using particle swarm optimization | |
CN117519946A (zh) | 深度学习网络中的内存资源调度方法、装置、设备及介质 | |
Shih et al. | Fairness scheduler for virtual machines on heterogonous multi-core platforms | |
Ogden et al. | Layercake: Efficient Inference Serving with Cloud and Mobile Resources | |
CN115509758A (zh) | 一种针对混部负载的干扰量化方法和系统 | |
Hankendi et al. | Reducing the energy cost of computing through efficient co-scheduling of parallel workloads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |