CN113535356A - 一种能量感知的分层任务调度方法和装置 - Google Patents
一种能量感知的分层任务调度方法和装置 Download PDFInfo
- Publication number
- CN113535356A CN113535356A CN202110742510.6A CN202110742510A CN113535356A CN 113535356 A CN113535356 A CN 113535356A CN 202110742510 A CN202110742510 A CN 202110742510A CN 113535356 A CN113535356 A CN 113535356A
- Authority
- CN
- China
- Prior art keywords
- task
- application
- priority
- energy
- tasks
- 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.)
- Granted
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
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种能量感知的分层任务调度方法和装置。本方法为:初始时,根据任务集参数预先离线计算协调周期值、节能任务参数,并判定任务的是否可调度;若该任务集可调度,则在开始进行调度执行,选择优先级最高的应用占有CPU;若应用Ai被选中占有CPU核,则Ai的调度器以就绪任务集中的任务按其优先级递减顺序在该CPU核上依次执行;若有任务在协调周期初始节能任务执行完毕后到来,且到达时处理器未处于工作状态,则将该任务加入等待队列,直到下一个协调周期才可加入就绪队列等待执行。本发明可使任务在满足截止期要求的前提下,尽可能地将处理器的空闲时间转换成睡眠的低功率状态,满足了分层实时任务调度节省能耗的需求。
Description
技术领域
本发明属于实时任务调度技术领域,具体涉及一种能量感知的分层调度模型下的实时任务调度方法和装置。
背景技术
分层调度以应用为单位对任务进行分组,一个任务属于一个应用,一个应用可以拥有多个任务,一个系统中拥有多个应用。每个应用之间相互独立,如果一个应用的某个任务出现故障,只会对该应用的内部任务产生影响,而不会影响其他应用程序的执行,使整个系统的应用紧密集成又相互隔离。分层调度分为两层调度:第一层全局调度和第二层本地调度。全局调度为操作系统调度应用,操作系统将一个应用视为一个任务,根据全局调度优先级分配算法为每个应用分配优先级,操作系统根据优先级依次调度应用。本地调度为应用调度任务,应用根据本地优先级分配算法为其内的每个任务分配优先级,当某个应用被选中执行时,该应用的本地调度器根据优先级依次调度其内的任务。
在分层调度模型下进行实时性任务的调度,充分利用了分层调度的优势,具有灵活性、实时性等特性,在许多复杂的控制场景中被广泛应用,如制造控制、后勤、仿真、分布式智能决策和空间探测等。随着实际应用的复杂化,实时分层调度具备将任务进行分组调度的能力,能够更有效地适应应用软件的调度需求,因而被许多嵌入式设备所采用。嵌入式设备往往具有低功耗的要求,这就要求调度方法能在满足任务的时间约束的同时,尽可能的减少对能量的消耗。
现有的分层调度策略(如双层EDF调度、图模型任务调度等)仅考虑了任务截止期约束而没有考虑任务运行所产生的处理器能耗,分层调度下支持能耗控制的调度方法研究仍处于空白状态。同时,已有的能量感知的任务调度方法(如使用动态缩放电压技术的Double-Largest-Task-First算法、使用动态功耗管理技术的Rate-HarmonizedScheduling方法等),虽然考虑了处理器的能耗问题,但均只针对单层任务调度模型,其方法无法直接应用于分层调度。总结现有研究,可以发现实时分层调度能耗控制的调度方法处于空白状态。
发明内容
针对现有技术的不足,本发明结合分层调度模型的特性,提出了一种新的能量感知分层任务调度方法(Power-aware Rate Harmonized Scheduling for Hierarchicalscheduling Algorithm,简称PA-HRHS方法),可使实时任务在保证可调度的情况下尽可能节省处理器能耗。
本发明为一种能量感知的分层任务调度方法,其主要步骤包括:
1)根据已知任务集的参数计算调度的协调周期;协调周期是指协调任务调度进度的虚拟周期,用以聚集任务实例;
2)根据操作系统所运行的硬件环境的睡眠状态转换时长等设置节能任务执行时长;
3)根据步骤1)和2)中得到的协调周期和节能任务执行时长设置节能应用和节能任务;
4)根据步骤1)和2)中得到的协调周期和节能任务执行时长判断已知任务集的可调度性;可调度性判定方法使用定点计算的方法来确定任务的最坏情况响应时间;若已知任务集可调度,则可使用该节能调度方法,否则返回不可调度;
5)分层调度模型设置两层调度,包含一级调度器和二级调度器,将应用作为操作系统中的任务并由一级调度器进行调度,应用内的任务由二级调度器进行调度;
6)所述一级调度器从应用集合中选择优先级最高的应用,当优先级相同时进行随机选取,并将其分配到CPU上运行;
7)若某应用被所述一级调度器选中占有CPU,则该应用的二级调度器以该应用的就绪任务集中的任务按其优先级递减顺序在CPU上依次执行,相同优先级的任务随机排序;
8)当某应用的就绪任务集中的任务全部执行完后,释放其所占有的CPU,一级调度器从未被完成且当前未占有处理器的应用中选择一个优先级最高的应用占有CPU,并转到步骤7);
9)若操作系统中所有应用均没有就绪任务,操作系统则转入睡眠模式,直至下个协调周期初始的节能任务执行完毕。
进一步地,根据优先级最高的任务为应用设置优先级,优先级高的应用可被优先执行。
进一步地,根据任务的周期为任务设置优先级,优先级高的任务可优先被应用执行。
进一步地,节能任务执行时即将处理器转至睡眠状态。
进一步地,协调周期之后到来的任务,若处理器未处于工作状态则加入等待队列,直到下一个协调周期才可加入就绪队列被执行。
进一步地,由于节能应用仅有节能任务一个任务,且节能任务的周期为协调周期,即优先级最高,故每个协调周期开始的时刻执行节能应用的节能任务。
进一步地,若某个协调周期末尾有空闲时间则和下一个协调周期初始的节能任务连接起来将处理器置于睡眠状态。
进一步地,响应请求的任务继承请求任务的到达时间和截止期,避免优先级倒置。
优选地,本发明方法采用以下方式实现:
设系统为单处理器系统,系统内有M个应用,设应用的集合为A={A1,..Ai,..AM},1≤i≤M,每个应用Ai包含一组相关任务Гi,Гi={τi,1,τi,2,...,τi,k}。
应用内的任务可以分为以下三类:
独立型任务,为周期任务,由一个应用产生,不需要其他应用提供服务;
请求服务型任务,为周期任务,由一个应用产生,并需要请求其他应用提供指定服务;
响应服务型任务,为非周期任务,不会自己产生,由其他应用的请求服务型任务唤醒,以实现功能复用。应用将自己所能提供的服务包装成响应服务型任务,为其他的应用提供服务。
系统中任务具有如下参数(见表1):
表1 任务的参数
周期Ti,j:是任务τi,j到达系统的周期,即每隔Ti,j时间任务τi,j就会有一个任务实例到达系统。
执行时间Ci,j:是处理器完成任务τi,j的所要花费的时间开销。
服务任务集SГi,j:是任务τi,j执行过程中所需请求服务的所有响应服务型任务的任务集,服务任务集可以为空。
相对截止期Di,j:是指从任务τi,j的一个实例到达系统到该实例被执行完毕之间允许的最大时间间隔,即任务τi,j的一个实例允许的最大响应时间。优选地,假设相对截止期为隐式截止期,即Di,j=Ti,j。
真实执行时间RCi,j:是指任务τi,j的一个实例从到达系统到被执行完毕至少经历的时间间隔,某一任务实例完成必须等待其请求服务的所有响应服务型任务执行完毕,即该任务实例的执行时间和其请求的所有响应服务型任务的执行时间之和,
按照任务就绪的规律,任务可分为周期性任务和非周期性任务。周期性任务用五元组{Ci,j,RCi,j,Ti,j,Di,j,SГi,j}表示,非周期性任务用四元组{Ci,j,RCi,j,Di,j,SГi,j}表示。
应用可以形式化描述为以下二元组Ak={Γk,pk},其中Γk表示应用内的任务集,pk表示应用的优先级。
假设运行在实时操作系统之上(在此,假设运行于实时操作系统Vxworks之上),且每个应用被实时操作系统作为一个任务进行调度。此时,实时操作系统调度器(称为一级调度器)总是从应用集合A中选择优先级最高的应用执行。同时,每个应用均有一个调度器(称为二级调度器)负责调度应用就绪任务集中的任务。
本发明的PA-HRHS算法的具体步骤如下:
1)离线计算协调周期TH,协调周期初始相位与系统内周期最小的任务相位相同,协调周期计算方法为:
2)设置节能应用Asleep和节能任务τsleep,系统中仅有一个节能应用Asleep,节能应用仅有一个节能任务τsleep,节能任务的周期Tsleep=TH,根据处理器的睡眠状态转换时长STsleep设置节能任务的执行时长为Csleep=STsleep,节能任务执行时会使处理器进入睡眠状态。显然,只要系统调度节能应用Asleep,系统就将进入睡眠状态。
3)判断已知任务集的可调度性,可调度性判定方法使用定点计算的方法来确定任务的最坏情况响应时间,任务τi,j的最坏情况响应时间的计算公式如下:
W0=RCi,j+TH-Csleep
其中,W0表示递归初始任务τi,j的响应时间,Wk表示第k次递归任务τi,j的最坏情况响应时间,Wk+1表示第k+1次递归任务τi,j的最坏情况响应时间,k表示第k的递归计算,E1(τi,j)表示优先级高于任务τi,j的任务对其造成的最坏延迟时长,E2(τi,j)表示优先级低于任务τi,j的任务对其造成的最坏延迟时长。
П为优先级高于任务τi,j的所有独立型任务和请求服务型任务的集合,响应服务型任务的执行时长计算入唤醒其工作的请求服务型任务的真实执行时长中。
其中,b为系统中的任一应用,M表示系统中应用的数量,num(τi,j,k,b)为任务τi,j被应用Ab中的任务抢先执行的次数,由于本地调度的不可抢占性,每一次的抢占行为都有被优先级低的任务所间接延迟的可能,故为被应用Ab中优先级低于任务τi,j的任务延迟的最坏时长,C表示某任务集根据任务执行时间降序排列的任务执行时间列表,d表示第d个任务,C(d,b,τi,j)表示应用Ab的所有优先级低于任务τi,j的任务组成的任务集中按照任务执行时间C倒序排列任务后第d个任务的执行时间。迭代计算Wk+1,直到Wk+1=Wk,若Wk+1≤Di,j,则该任务集可调度,否则任务τi,j视为不可调度。若已知任务集可调度,则可使用该节能调度方法,否则返回不可调度。
4)初始时,一级调度器从应用集合A中选择优先级最高的应用(优先级相同时随机选取),分配到CPU上运行(应用优先级的计算方法见步骤11))。
5)若应用Ai被一级调度器选中占有CPU,则应用Ai的二级调度器将以就绪任务集Гi中的任务按其优先级递减顺序在该CPU上依次执行,相同优先级的任务随机排序(任务优先级的计算方法见10)),直至Ai就绪任务集合中的所有任务均被完成。
5.1)当执行到任务τi,j时,将任务τi,j从就绪队列中移至当前任务,若τi,j需请求服务则在请求服务后挂起该任务,并将该任务从当前任务移至等待队列;
5.2)当任务τi,j被执行完成后,重新计算应用Ai的优先级(应用Ai的优先级计算方法见7))。若应用Ai的优先级发生变化,则转入8)。
6)当应用Ai就绪任务集中的任务全部执行完后,Ai优先级置为0,并释放CPU,一级调度器从未被完成且的应用中选择一个优先级最高的应用占有CPU,并转到5);若此时系统中已无未被完成且未占有处理器的应用,则将CPU转至睡眠状态直到下一个协调周期初始睡眠任务执行完毕。
7)当应用Ai中有新任务到达,设τi,j为应用Ai中新到达的任务。
7.1)若新到达的任务τi,j是应用Ai为了响应某个应用(记为Am)的请求任务(记为τm,k)对其所发出的服务请求而产生的响应任务,则Di,j=Dm,k,Ci,j根据应用设定,τi,j优先级与τm,k相同。且任务τi,j立即加入就绪队列。
7.2)若新到达任务τi,j是应用Ai中自身产生的任务,则Ci,j,RCi,j,Ti,j,Di,j,SГi,j均根据应用设定,若τi,j到达时处理器未处于工作状态且非某个协调周期的开始时刻,则需等到下一个协调周期才可加入就绪队列。
7.3)若任务τi,j加入就绪队列则重新计算应用Ai的优先级(计算方法见11)),若应用Ai优先级发生变化,则转到8)。
8)当有一个或多个应用的优先级发生变化,一级调度器将进行如下处理:
8.1)若当前优先级最高的应用正在占有CPU,则继续占有CPU执行任务。
8.2)若当前优先级最高的应用正处于等待状态(即未被完成且未占有CPU),则该应用抢占CPU并转到5)开始调度该应用的就绪任务。
9)当到达某一个协调周期开始节能任务执行完毕的时刻,即t=k*TH+Csleep。
9.1)若有已到达但尚未加入就绪队列的任务,则将任务加入就绪队列;
9.2)若有新任务加入应用Ai的就绪队列,则重新计算Ai的优先级(计算方法见11));
9.3)若有应用优先级发生变化,则转到8)。
10)应用Ai就绪任务集中任务的优先级根据其周期设定,任务周期越小,优先级越高,设Tmax为任务集中周期最大的任务的周期,任务τi,j的优先级计算公式如下:
pi,j=255-(Ti,j*254)/Tmax
11)应用Ai的优先级计算方法:设τi,k是应用Ai就绪任务集和当前任务中优先级最高的任务,应用Ai优先级即为τi,k的优先级值即pi,k,若应用Ai就绪任务集为空,则应用Ai优先级为0。即应用Ai的优先级计算方法为:
其中,Γcurrent&ready表示该应用Ai的当前任务和就绪任务集中任务组成的任务集。
基于同一发明构思,本发明还提供一种能量感知的分层任务调度装置,例如是一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
本发明的有益效果是:
本发明根据分层调度模型的特点,考虑一级调度可抢占、二级调度不可抢占的分层调度和支持包括独立型任务、请求服务型任务及响应服务型任务在内的多种任务的调度情况,通过最大程度地聚集处理器空闲时间,保证在所有空闲时间内处理器均处于睡眠状态来最小化系统静态泄露功率,提出了一种能量感知的分层任务调度方法,使运行的任务在保证可调度的前提下,满足了系统的节能需求。
附图说明
图1是分层调度模型的结构示意图。
图2是应用占有CPU后任务执行流程图。
图3是有新任务到达后处理流程图。
图4是应用优先级变化后处理流程图。
图5是到达某一协调周期开始节能任务执行完毕的时刻的处理流程图。
图6是睡眠优化利用率实验结果图。
图7是CPU平均能耗实验结果图。
具体实施方式
下面将结合本发明的实施例及附图,对本发明中的技术方案进行清楚、完整地描述。所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明原理:本发明分析现有的能量感知方式,并根据分层调度的调度模型,如图1所示,应用视作操作系统中的任务,由操作系统调度器(图1中称为全局调度器)进行可抢占式的调度,应用内部的任务由应用的调度器(图1中称为本地调度器)进行不可抢占式的调度。
调度算法描述了应用和任务被调度的过程,调度算法的具体步骤如下:
1)系统执行前,离线计算协调周期TH、节能任务周期Tsleep和节能任务执行时长Csleep,设置节能应用Asleep和节能任务τsleep。Tsleep=TH,Csleep=STsleep,其中STsleep处理器最小睡眠转换时间,由硬件参数决定。
2)根据1)中计算出的值,离线判断给定任务集的可调度性,若该任务集中的每个任务都可调度则该任务集可调度;否则返回不可调度。
3)初始时,一级调度器从应用集合A中选择优先级最高的应用(优先级相同时随机选取),分配到CPU上运行(应用优先级计算方式如前文所述)。
4)图2给出了当应用Ai被选中占有CPU核后的具体流程,包括:
4.1)应用Ai的应用调度器执行Ai就绪任务集中优先级最高的任务;
4.2)当执行到任务τi,j时,若任务τi,j需请求服务则在请求服务后挂起该任务,并将该任务从当前任务移至等待队列;
4.3)当任务τi,j被执行完成后,重新计算应用Ai的优先级。若应用Ai的优先级发生变化,则转入7);
4.4)重复4.1)-4.4)直至Ai就绪任务集合中的所有任务均被完成,Ai优先级置为0,并释放CPU。
5)当应用Ai就绪任务集中的任务全部执行完时,若系统中已无未被完成且未占有处理器的应用,则将CPU转至睡眠状态直到下一个协调周期初始睡眠任务执行完毕后恢复工作状态。
6)图3给出了当应用Ai中有新任务τi,j到达后的具体流程,包括:
6.1)若新到达的任务τi,j是应用Ai为了响应某个应用(记为Am)的请求任务(记为τm,k)对其所发出的服务请求而产生的响应任务,则Di,j=Dm,k,Ci,j根据应用设定,τi,j优先级与τm,k相同。且任务τi,j立即加入就绪队列。
6.2)若新到达任务τi,j是应用Ai中自身产生的任务,则Ci,j,RCi,j,Ti,j,Di,j,SГi,j均根据应用设定,若τi,j到达时处理器未处于工作状态且非某个协调周期的开始时刻,则需等到下一个协调周期才可加入就绪队列。
6.3)若任务τi,j加入就绪队列则重新计算应用Ai的优先级,若应用Ai优先级发生变化,则转到7)。
7)图4给出了当一个或多个应用的优先级发生变化后的具体流程,包括:
7.1)若当前优先级最高的应用正在占有CPU,则继续占有CPU执行任务。
7.2)若当前优先级最高的应用正处于等待状态,则该应用抢占CPU并转到4)开始调度该应用的就绪任务。
8)图5给出了当系统到达某一个协调周期开始节能任务完成的时刻的具体流程,包括:
8.1)检查是否有已到达但尚未加入就绪队列的任务,若有,则将所有任务加入就绪队列;
8.2)若有新任务加入应用Ai的就绪队列,则重新计算Ai的优先级;
8.3)若有应用优先级发生变化,则转到7)。
下面结合表2、表3、表4给出的应用A1、A2、A3的相关任务数据,来对本发明提出的实时任务调度方法做进一步说明。
表2 应用A1中的任务集合
表3 应用A2中到达任务集合
表4 应用A3中到达任务集合
假设所有独立型任务和请求服务型任务的初始相位均为0,即在时刻0所有任务都有第一个任务实例到来。任务执行前预处理步骤如下:
(1)计算协调周期TH,周期最小的任务为τ1,1,周期为40,其他任务周期均大于等于2*40,故协调周期TH为40。
(2)节能任务周期Tsleep等于TH,即,Tsleep=40。
(3)假设该系统的最小睡眠转化时间STsleep为10,则节能任务执行时长Csleep=STsleep=10。
(4)判断给定任务集的可调度性,无需考虑响应服务型任务,即依次计算τ1,1、τ1,2、τ1,3、τ2,2、τ2,3、τ3,2、τ3,3七个任务的可调度性。
(5)首先计算任务τ1,1的最坏情况响应时间:
a.由于τ1,1为优先级最高的任务,协调周期的初始相位与优先级最高的任务相同,且协调周期与该任务周期相同,故W0=RC1,1=1。
d.根据numb的计算方法,τ1,1是独立型任务,且没有优先级高于它的任务,故num1=1,num2=0,num3=0,应用A1中任务按照C的降序排序,E2=6。
h.同d.中计算方法,E2=6。
j.W2=W1,且W2≤D1,1=40,故τ1,1可调度。
(6)计算任务τ1,2的最坏情况响应时间:
a.W0=RC1,2+TH-Csleep=9+40-10=39。
d.根据numb的计算方法,τ1,2是请求服务型任务,故num1=num1+2=2,num2=num2+1=1,num3=0。
g.每个应用中任务按照C的降序排序,A1中任务为τ1,4、τ1,3、τ1,2、τ1,1,num1=3,则最多累加三次,由于τ1,2为本任务,τ1,1优先级高于本任务,故只有τ1,4、τ1,3两个任务满足,E2(τ1,2)=E2(τ1,2)+6+5=11。
h.A2中任务为τ2,1、τ2,2、τ2,3,num2=2,则最多累加两次,由于τ2,1共被两个任务唤醒,其中有一次为本任务唤醒,故仅有一次可计算,τ2,3优先级高于本任务,故只有τ2,1、τ2,2两个任务满足,E2(τ1,2)=E2(τ1,2)+5+5=21。
i.A3中任务为τ3,3、τ3,2、τ3,1,num3=0,则最多累加零次,E2(τ1,2)=21。
m.同d-i.中计算方法,E2(τ1,2)=21。
q.同d-i.中计算方法,E2(τ1,2)=21。
u.同d-i.中计算方法,E2(τ1,2)=21。
w.W4=W3,且W4≤D1,2=105,故τ1,2可调度。
(7)计算任务τ1,3的最坏情况响应时间:
a.同(6)中计算方法,W0=RC1,3+TH-Csleep=35。
h.W6=W5,且W6≤D1,3=154,故τ1,3可调度。
(8)计算任务τ2,2的最坏情况响应时间:
a.同(6)中计算方法,W0=RC2,2+TH-Csleep=43。
h.W6=W5,且W6≤D2,2=205,故τ2,2可调度。
(9)计算任务τ2,3的最坏情况响应时间:
a.同(6)中计算方法,W0=RC2,3+TH-Csleep=34。
e.W3=W2,且W3≤D2,3=85,故τ2,3可调度。(10)计算任务τ3,2的最坏情况响应时间:
a.同(6)中计算方法,W0=RC3,2+TH-Csleep=34。
f.W4=W3,且W4≤D3,2=134,故τ3,2可调度。
(11)计算任务τ3,3的最坏情况响应时间:
a.同(6)中计算方法,W0=RC3,3+TH-Csleep=42。
h.W6=W5,且W6≤D3,3=140,故τ3,3可调度。
(12)根据(5)-(11)计算结果可得该任务集可被调度,离线计算过程完毕。
调度流程如下所示:
(1)在时刻0,应用A1中有τ1,1、τ1,2和τ1,3三个任务,根据任务优先级计算方法,三个任务优先级分别为205、125和64,根据应用优先级计算方法A1应用优先级为205。A2应用中有τ2,2和τ2,3两个任务,根据任务优先级计算方法,两个任务优先级分别为1和150,根据应用优先级计算方法应用A2优先级为150。应用A3中有τ3,2和τ3,3两个任务,根据任务优先级计算方法,两个任务优先级分别为89和79,根据应用优先级计算方法应用A3优先级为89。此时应用优先级顺序为:
应用A1>应用A2>应用A3
选择优先级最高的应用A1占有处理器并执行其中的任务,按照任务优先级由大到小,应用A1执行任务τ1,1。
(2)根据上述调度方法,第一个协调周期内,即前40内的调度过程如表5所示。
(3)在时刻40,新的协调周期开始,节能应用Asleep的任务τsleep到达,Asleep优先级最高,抢占处理器,并执行节能任务,处理器进入睡眠状态,并于时刻50恢复工作状态。
表5 0—40内的任务调度过程
开始时间 | 结束时间 | 任务名称 | 开始时间 | 结束时间 | 任务名称 |
0 | 1 | τ<sub>1,1</sub> | 18 | 21 | τ<sub>3,3</sub> |
1 | 5 | τ<sub>2,3</sub> | 21 | 26 | τ<sub>2,1</sub> |
5 | 7 | τ<sub>1,2</sub> | 26 | 30 | τ<sub>3,3</sub> |
7 | 12 | τ<sub>2,1</sub> | 30 | 35 | τ<sub>1,3</sub> |
12 | 14 | τ<sub>1,2</sub> | 35 | 37 | τ<sub>2,2</sub> |
14 | 18 | τ<sub>3,2</sub> | 37 | 40 | τ<sub>1,4</sub> |
(4)任务τ1,1于时刻40第二次到来,并当处理器完成睡眠任务后加入任务队列,在时刻50,系统中存在的任务有:
a.应用A1就绪任务队列有任务τ1,1优先级为205,正在执行的有响应服务型任务τ1,4优先级为1,根据应用优先级规则,应用A1优先级为205;
b.应用A2就绪任务队列为空,无正在执行的任务,挂起任务队列有任务τ2,2,根据应用优先级规则,应用A2优先级为0;
c.应用A3无任何任务,根据应用优先级规则,应用A3优先级为0;
按照应用优先级顺序,选择应用A1占有处理器并执行未执行完的任务τ1,4。
(5)根据上述调度方法,第二个协调周期内,即40-80内的调度过程如表6所示。
表6 40—80内的任务调度过程
53时刻,任务τ1,4完成并唤醒任务τ2,2将任务τ2,2从挂起队列转至就绪队列,此时三个应用的优先级分别为:205、1、0,故根据优先级调度执行应用A1的任务τ1,1。
59时刻,系统中所有任务都已完成,三个应用优先级都为0,则将处理器转至睡眠状态并直到下个协调周期初始的节能任务执行完毕后恢复工作状态。
(6)根据上述调度方法,第三个协调周期内,即80-120内的调度过程如下表7所示:
表7 80—120内的任务调度过程
95时刻,系统中所有任务都已完成,则将处理器转至睡眠状态并直到下个协调周期初始的节能任务执行完毕后恢复工作状态。
105时刻任务τ1,2到达,但是由于处理器不处于工作状态,故根据算法规则,任务τ1,2加入等待队列直到下一个协调周期才可进入就绪队列。
(7)根据上述调度方法,第四个协调周期内,即120-160内的调度过程如下表8所示:
表8 120—160内的任务调度过程
在120时刻,新的协调周期开始,任务τ1,2加入就绪队列,任务τ1,1到达并加入就绪队列。
在134时刻,任务τ3,2到达,由于处理器正处于工作状态,故无需等到下一个协调周期即可加入就绪队列。
(8)根据上述调度方法,第五个协调周期内,即160-200内的调度过程如下表9所示:
表9 160—200内的任务调度过程
时刻170,应用A1中就绪队列中有任务τ1,1,正在执行的有任务τ1,3,应用A2中有任务τ2,3,τ1,1优先级为205,τ1,3优先级为64,τ2,3优先级为89,根据应用优先级设置A1为205,A2为89,优先执行应用A1中正在执行的任务τ1,3。故虽然τ2,3优先级高于τ1,3,但是由于需要等待更高优先级的任务τ1,1完成,所以也会由优先级更低的任务τ1,3抢先执行。
(9)根据以上所述规则继续执行。
实验数据:每组实验设置包含3-10个应用,每个应用包含3-5个任务。每个任务的参数随机生成,具体方法如表10所示。
表10 实验参数设置
任务周期服从均匀分布;执行时间是服从参数为的指数分布,通过调节λ的大小来生成不同的系统负载;任务相对截止时间被设置为与任务周期相等。
实验中,任务类型按照比例随机分配,请求服务型任务对应的响应服务型任务根据任务类型随机分配;真实执行时间根据生成的任务类型和对应的响应服务任务等进行计算。
独立型任务利用率不得超过25%,请求服务型任务与所需的响应服务型任务的利用率之不得超过25%。若超过上述利用率限制则重新生成任务。本节中的所有实验结果均是1000次随机实验的平均值。
根据上述实验设置方法,与传统RM算法以及去掉节能任务设置的HRHS调度算法进行比较实验,包括睡眠优化利用率模拟实验和CPU平均能耗模拟实验。
在睡眠优化利用率模拟实验中,测试了CPU利用率以及最小睡眠时长对处理器睡眠优化利用率的影响。在实验中,系统随机包含3-5个应用,每个应用随机包含3到5个任务。独立型任务与请求服务型任务比值为1:1。
实验结果如图6所示,(a)、(b)两图分别为睡眠时长为10和20时的睡眠优化利用率表现。根据睡眠优化利用率的定义可知,睡眠优化利用率越大,系统节能效果表现越好。如图所示,不论睡眠时长如何设置,实验结果均为PA-HRHS睡眠优化利用率最高,HRHS次之,分层RM调度最差。PA-HRHS算法的睡眠优化利用率始终为1,表明PA-HRHS算法可以有效的聚集处理器空闲时间。随着系统CPU利用率的提高,由于传统实时调度RM算法的空闲时间片更为零碎,因此PA-HRHS睡眠优化利用率的优势越来越明显。并且,比较图6的(a)(b)两图,还可以看出最小睡眠时间更长时,PA-HRHS睡眠优化利用率的优势更加明显。
在CPU平均能耗模拟实验中,以Atmega1281处理器参数为实验参数,活动模式功耗为23mW,空闲模式功耗为6.6mW,睡眠模式功耗为16μW,Csleep参数为15。
实验计算结果如图7所示,(a)中系统包含5个应用,每个应用3个任务,独立型任务和请求服务型任务数量比值为1:1。实验结果表明在10%利用率时,PA-HRHS平均能耗低于分层RM调度58%。随着CPU利用率增加,该节能幅度略有降低,但是依然保持在较高水平。
图7的(b)-(d)分别修改了实验中应用的数量、应用中任务的数量和不同任务类型的任务数量比,对比实验该算法在不同情况下的节能效果。其中图7的(b)中系统包含8个应用,每个应用3个任务,独立型任务和请求服务型任务数量1:1。图7的(c)中系统包含5个应用,每个应用5个任务,独立型任务和请求服务型任务数量1:1。图7的(d)中系统包含5个应用,每个应用3个任务,独立型任务和请求服务型任务数量1:2。
实验结果显示在以上系统中,PA-HRHS的平均能耗始终明显低于HRHS和RM。当CPU利用率提高时,一段时间内系统的非工作时间与工作时间的比值降低,可转换为睡眠状态的非工作时间也相应减少,显而易见,当系统利用率为1时,系统没有非工作时间,则无需降低静态泄露功率。因此,当CPU利用率提高时,PA-HRHS的节能效果也随之减弱。
对比图7的(a)和图7的(b)、(c)、(d),可以看出,对于相同利用率的情况下,由于应用数量、任务数量以及任务类型数量比例仅对调度过程有一定的影响,但对工作时长不会造成较大影响,故在分层调度的多种不同情况下PA-HRHS都可以表现出较好的节能效果,有较好的鲁棒性。
基于同一发明构思,本发明的另一实施例提供能量感知的分层任务调度装置,是一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如ROM/RAM、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
可以理解的是,上述实施例仅为例示性说明本发明的原理及其功效,而非用于限制本发明的范围。任何熟于此技术的本领域技术人员均可在不违背本发明的技术原理及精神下,对实施例作修改与变化。本发明的保护范围应以权利要求书所述为准。
Claims (10)
1.一种能量感知的分层任务调度方法,其步骤包括:
1)根据已知任务集的参数计算调度的协调周期;
2)根据操作系统所运行的硬件环境的睡眠状态转换时长设置节能任务执行时长;
3)根据协调周期和节能任务执行时长设置节能应用和节能任务;
4)根据协调周期和节能任务执行时长判断已知任务集的可调度性;若已知任务集可调度,则进行任务调度,否则返回不可调度;
5)分层调度模型设置两层调度,包含一级调度器和二级调度器,将应用作为操作系统中的任务并由一级调度器进行调度,应用内的任务由二级调度器进行调度;
6)所述一级调度器从应用集合中选择优先级最高的应用,当优先级相同时进行随机选取,并将其分配到CPU上运行;
7)若某应用被所述一级调度器选中占有CPU,则该应用的二级调度器以该应用的就绪任务集中的任务按其优先级递减顺序在CPU上依次执行,相同优先级的任务随机排序;
8)当某应用的就绪任务集中的任务全部执行完后,释放其所占有的CPU,一级调度器从未被完成且当前未占有处理器的应用中选择一个优先级最高的应用占有CPU,并转到步骤7);
9)若操作系统中所有应用均没有就绪任务,操作系统则转入睡眠模式,直至下个协调周期初始的节能任务执行完毕。
3.如权利要求1所述的方法,其特征在于,步骤3)所述设置节能应用和节能任务包括:一个系统中仅设置一个节能应用,一个节能应用仅设置一个节能任务,节能任务执行时处理器为睡眠状态,节能任务执行时长为处理器的最小睡眠转换时长,周期与协调周期相同。
4.如权利要求1所述的方法,其特征在于,步骤4)根据已知任务集离线预计算任务集的可调度性,任务的可调度性判定方法使用定点计算的方法,计算公式为:
W0=RCi,j+TH-Csleep
其中,W0表示递归初始任务τi,j的响应时间,Wk表示第k次递归任务τi,j的最坏情况响应时间,Wk+1表示第k+1次递归任务τi,j的最坏情况响应时间,E1(τi,j)表示优先级高于任务τi,j的任务对其造成的最坏延迟时长,E2(τi,j)表示优先级低于任务τi,j的任务对其造成的最坏延迟时长;
П为优先级高于任务τi,j的所有独立型任务和请求服务型任务的集合,响应服务型任务的执行时长计算入唤醒其工作的请求服务型任务的真实执行时长中;
其中,b为任一应用,M表示应用的数量,num(τi,j,k,b)为任务τi,j被应用Ab中的任务抢先执行的次数,为被应用Ab中优先级低于任务τi,j的任务延迟的最坏时长,C表示某任务集根据任务执行时间降序排列的任务执行时间列表,d表示第d个任务;
迭代计算Wk+1,直到Wk+1=Wk,若Wk+1≤Di,j,则该任务集可调度,否则任务τi,j视为不可调度。
5.如权利要求1所述的方法,其特征在于,根据任务的周期为任务设置优先级,任务优先级计算公式为:
pi,j=255-(Ti,j*254)/Tmax
其中Tmax为任务集中周期最大的任务的周期,Ti,j是任务τi,j的周期。
7.如权利要求1所述的方法,其特征在于,当应用Ai中有新任务到达,设τi,j为应用Ai中新到达的任务:
1)若新到达的任务τi,j是应用Ai为了响应某个应用Am的请求任务τm,k对其所发出的服务请求而产生的响应任务,则任务τi,j立即加入就绪队列,Di,j=Dm,k,Ci,j根据应用设定,τi,j优先级与τm,k相同;
2)若新到达任务τi,j是应用Ai中自身产生的任务,则若τi,j到达时处理器未处于工作状态且非某个协调周期的开始时刻,则将该任务加入等待队列,并需等到下一个协调周期才可加入就绪队列,否则直接加入就绪队列,Ci,j,RCi,j,Ti,j,Di,j,SГi,j均根据应用设定。
8.如权利要求1所述的方法,其特征在于,某一协调周期末尾有空闲时间时,则将处理器转入睡眠状态并直到下一个协调周期初始的节能任务执行完毕恢复工作状态。
9.一种能量感知的分层任务调度装置,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1~8中任一权利要求所述方法的指令。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现权利要求1~8中任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110742510.6A CN113535356B (zh) | 2021-07-01 | 2021-07-01 | 一种能量感知的分层任务调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110742510.6A CN113535356B (zh) | 2021-07-01 | 2021-07-01 | 一种能量感知的分层任务调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535356A true CN113535356A (zh) | 2021-10-22 |
CN113535356B CN113535356B (zh) | 2023-09-12 |
Family
ID=78126440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110742510.6A Active CN113535356B (zh) | 2021-07-01 | 2021-07-01 | 一种能量感知的分层任务调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535356B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114090208A (zh) * | 2021-11-22 | 2022-02-25 | 南方电网电力科技股份有限公司 | 一种电能表操作系统的任务调度方法及装置 |
CN114153305A (zh) * | 2021-11-19 | 2022-03-08 | 江苏林洋能源股份有限公司 | 一种基于轻量实时操作系统的智能电表及低功耗管理方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005006669A1 (en) * | 2003-07-11 | 2005-01-20 | Koninklijke Philips Electronics N.V. | Quality of service schedulability in a wireless lan |
CN101013384A (zh) * | 2007-02-08 | 2007-08-08 | 浙江大学 | 一种基于模型的实时系统的可调度性分析方法 |
CN102567106A (zh) * | 2010-12-30 | 2012-07-11 | 中国移动通信集团云南有限公司 | 任务调度方法、系统和装置 |
CN104980330A (zh) * | 2014-04-08 | 2015-10-14 | 中国科学院软件研究所 | 一种实时多智能体系统的消息准入方法 |
CN106155781A (zh) * | 2015-04-08 | 2016-11-23 | 中国科学院软件研究所 | 一种多智能体平台中的实时任务调度方法 |
CN106648846A (zh) * | 2016-09-23 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种改进的异构多核任务调度的方法 |
CN110187956A (zh) * | 2019-05-07 | 2019-08-30 | 中国科学院软件研究所 | 一种多智能体平台的分层实时任务调度方法和系统 |
CN111209104A (zh) * | 2020-04-21 | 2020-05-29 | 南京南软科技有限公司 | 一种异构集群下Spark应用的能量感知调度方法 |
-
2021
- 2021-07-01 CN CN202110742510.6A patent/CN113535356B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005006669A1 (en) * | 2003-07-11 | 2005-01-20 | Koninklijke Philips Electronics N.V. | Quality of service schedulability in a wireless lan |
CN101013384A (zh) * | 2007-02-08 | 2007-08-08 | 浙江大学 | 一种基于模型的实时系统的可调度性分析方法 |
CN102567106A (zh) * | 2010-12-30 | 2012-07-11 | 中国移动通信集团云南有限公司 | 任务调度方法、系统和装置 |
CN104980330A (zh) * | 2014-04-08 | 2015-10-14 | 中国科学院软件研究所 | 一种实时多智能体系统的消息准入方法 |
CN106155781A (zh) * | 2015-04-08 | 2016-11-23 | 中国科学院软件研究所 | 一种多智能体平台中的实时任务调度方法 |
CN106648846A (zh) * | 2016-09-23 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种改进的异构多核任务调度的方法 |
CN110187956A (zh) * | 2019-05-07 | 2019-08-30 | 中国科学院软件研究所 | 一种多智能体平台的分层实时任务调度方法和系统 |
CN111209104A (zh) * | 2020-04-21 | 2020-05-29 | 南京南软科技有限公司 | 一种异构集群下Spark应用的能量感知调度方法 |
Non-Patent Citations (2)
Title |
---|
RONG WU 等: "On the relative value of local scheduling versus routing in parallel server systems", 《2007 INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED SYSTEMS》, pages 1 - 9 * |
陈劲林 等: "基于确定周期性任务的进程管理及可调度性分析", 《计算机研究与发展》, pages 307 - 312 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114153305A (zh) * | 2021-11-19 | 2022-03-08 | 江苏林洋能源股份有限公司 | 一种基于轻量实时操作系统的智能电表及低功耗管理方法 |
CN114090208A (zh) * | 2021-11-22 | 2022-02-25 | 南方电网电力科技股份有限公司 | 一种电能表操作系统的任务调度方法及装置 |
CN114090208B (zh) * | 2021-11-22 | 2023-10-13 | 南方电网电力科技股份有限公司 | 一种电能表操作系统的任务调度方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113535356B (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535356B (zh) | 一种能量感知的分层任务调度方法和装置 | |
Kim et al. | Dynamic voltage scaling algorithm for fixed-priority real-time systems using work-demand analysis | |
CN109324880A (zh) | 一种适用于实时系统周期任务模型的低功耗调度方法 | |
CN110187956B (zh) | 一种多智能体平台的分层实时任务调度方法和系统 | |
US10467054B2 (en) | Resource management method and system, and computer storage medium | |
EP3278220B1 (en) | Power aware scheduling and power manager | |
CN111104211A (zh) | 基于任务依赖的计算卸载方法、系统、设备及介质 | |
CN106970835B (zh) | 固定优先级资源受限系统层次能耗优化方法 | |
CN112799828A (zh) | 一种基于强化学习的云平台资源调度策略 | |
CN110795238A (zh) | 负载计算方法、装置、存储介质及电子设备 | |
CN109324891A (zh) | 一种比例空闲时间分配的周期任务低功耗调度方法 | |
CN107329817B (zh) | 一种待机备用系统混合划分可靠性感知能耗优化方法 | |
CN108574600B (zh) | 云计算服务器的功耗和资源竞争协同控制的服务质量保障方法 | |
Socci et al. | Time-triggered mixed-critical scheduler on single and multi-processor platforms | |
CN116244073A (zh) | 混合关键分区实时操作系统的资源感知型任务分配方法 | |
CN113407313B (zh) | 资源需求感知的多队列调度方法、系统及服务器 | |
CN108563497B (zh) | 一种高效的多维度算法调度方法、任务服务器 | |
Salmani et al. | A fuzzy-based multi-criteria scheduler for uniform multiprocessor real-time systems | |
CN106933325B (zh) | 一种固定优先级io设备能耗管理方法 | |
El Osta et al. | An efficient aperiodic task server for energy harvesting embedded systems | |
Seo et al. | Dynamic alteration schemes of real-time schedules for i/o device energy efficiency | |
CN106815073B (zh) | 一种基于平衡因子的动态偶发任务低功耗调度方法 | |
Jo et al. | Student session: power-saving integrated task scheduling in multicore and hybrid memory environment | |
CN114578945B (zh) | 非抢占动态优先级混合关键任务能耗感知实时调度方法 | |
Chetto et al. | Main Results on Earliest Deadline First Scheduling for Energy Neutral Sensors |
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 |