一种提升系统整体吞吐量的cpu资源动态分配方法
技术领域
1.本发明涉及操作系统领域,特别涉及边缘场景下资源受限设备上的动态调整任务组间及组内cpu资源分配以提高系统整体吞吐量的资源分配方法。
背景技术:
2.随着网络与通信技术的飞速发展,万物互联早已不再遥不可及,边缘计算充分发挥其靠近数据产生侧的特性,具有低时延、高可靠等优点,在物联网领域应用广泛,如智能家居、智慧城市等。
3.边缘设备相比于云端设备往往面临资源受限的问题,如果继续使用常规的资源分配策略可能无法充分利用系统资源甚至可能造成性能的下降。如何使得边缘设备上受限的资源充分利用以提高系统吞吐量,是一个边缘系统设计时必须考虑的问题。然而进程之间的组织形式的不同以及资源分配的各种约束如实时性、公平性等给资源分配方案的设定带来了许多困扰。如何使得有限的cpu资源最大化利用,提高系统的整体吞吐量的核心问题有两点:(1)进程cpu资源需求预测,获取不同进程对cpu资源的不同需求程度的量化值,从而进行以提高吞吐量为目的的cpu资源划分。(2)任务对cpu资源的需求并非是一成不变的,操作系统需要实时地探测不同时间段内任务的不同需求并调整下一阶段的资源分配。
技术实现要素:
4.针对边缘场景下资源受限设备上资源的合理化利用问题,本发明提出了一种提升系统整体吞吐量的cpu资源动态分配方法。
5.本发明通过收集进程的cpu资源使用状态信息记录于进程调度实体数据结构里,利用该数据影响调度组内进程的权重以修改进程的cpu资源分配,以及修改调度组对应的调度实体的权重以修改不同调度组间的cpu资源分配,同时控制组资源分配的最低阈值,降低组负载差距过大带来的影响。
6.本发明方法涉及以下三个模块:
7.(1)进程cpu资源需求感知模块
8.该模块的功能是周期性地获取处于系统进程就绪队列的进程的相关元数据。通过访问进程描述符获取进程的cpu资源使用快照信息。计算处理之后得到进程对cpu资源需求程度的量化指标。
9.(2)cpu资源划分模块
10.本模块旨在通过获取的cpu资源需求信息平衡进程组内及组间的资源分配。cpu资源分配主要分为两块内容,一是通过上述得到的需求程度量化指标在进程组内调整进程的优先级划分组内cpu资源。二是通过组内进程cpu资源需求量化指标处理后作为组的需求指标在不同组间结合组资源最低阈值调整组间cpu比例。
11.(3)进程调度模块
12.该模块控制着运行进程的选择,负责每次从进程就绪队列中取出优先级最高的进
程投入运行,并在每次进程时间片到期时判断是否需要重新加入就绪队列。
13.该方法包括如下步骤:
14.步骤1:进程cpu资源需求感知模块通过周期性地访问进程对应的调度实体,获取进程的执行时间等资源使用快照信息,同时通过读取pmu硬件获取进程已执行指令数数据。
15.步骤2:通过步骤1收集到的快照信息及已执行指令数信息计算进程的每周期内的实际运行时间以及进程的ips(instructions per second)指标,填充于进程对应的调度实体的新增字段ips里;
16.步骤3:cpu资源划分模块通过进程调度实体内的ips信息,调整进程组内以及组间的cpu资源分配。遍历进程就绪队列对进程组内及进程组间cpu资源划分进行对应处理。
17.步骤3.1:对于同一个调度组内的进程,计算出各个进程的ips比重(进程ips与组内所有进程ips之和的比值),对进程ips比重进行缩放处理之后再次计算比重,之后依据比重修改进程的优先级;
18.步骤3.2:对于同一个层级下的进程组,先依照步骤3处理各组内资源分配并获得组内ips均值,并据此计算各组的资源分配比重,同时设定组份额最低阈值为等分值的2/3,如果组比重小于此值,则设定组份额为此最低阈值,同时修改剩余资源总量,对于其它组则依据比重照常分配;
19.步骤4:进程调度模块从进程就绪队列中选择优先级最高的进程执行。如果进程分配的时间片到期后还未执行结束,则重新投入进程就绪队列;
20.步骤5:重复步骤1、2、3、4直至结束。
21.本发明的有益效果:本发明依据系统中不同进程对cpu资源的利用效率不同,动态地调整cpu资源的分配,提升整体吞吐量;并进行周期性的监控以实现下一阶段的分配调整,适应任务运行的各个阶段。
附图说明
22.图1为模型组件结构图;
23.图2进程cpu资源需求感知整体示意图;
24.图3cpu资源需求感知具体过程示意图;
25.图4为cpu资源划分整体示意图;
26.图5为方法执行整体流程图;
27.图6为方法执行详细步骤。
具体实施方式
28.以下结合附图对本发明作进一步说明。
29.本发明提出一种提高系统整体吞吐量的cpu资源动态分配方法。它通过实时动态地测量每一个时间间隔内不同进程对cpu资源的使用效率,为下一个时间间隔内的进程分配相应的cpu资源,通过动态地为能更加高效使用cpu资源的进程提供较高的cpu资源分配,实现了每个时间间隔内系统整体吞吐量的提升。本发明主要包括三个模块:1)进程cpu资源需求感知模块;2)cpu资源划分模块;3)进程调度模块。
30.图1为本方法模型组件结构图。
31.其中进程cpu资源需求感知模块负责收集并处理系统中进程对cpu资源的利用效率信息并保存起来供以后分配参考,这一步是后续分配的基础,且为了实现系统运行过程中动态分配调整,模块需要定时输出信息作为下一阶段的分配参考。cpu资源划分模块利用前面收集到的ips数据先进行组内资源划分,然后进行组间资源分配,这是因为在划分组内进程cpu资源的同时可以同时获取组内进程ips数据,最后向上返回ips均值作为组间分配参考。最后由进程调度模块实现待调度进程的选择以及进程切换。
32.图2和图3为进程cpu资源需求感知模块示意图。
33.其中图2是需求感知的整体流程,图3是部分具体计算过程,包括一些计算公式和相关函数。cpu资源需求感知模块的核心意义在于找到不同进程对cpu计算能力的需求程度,从而作为一个参考进行后续的cpu资源划分。cpu需求程度的定义参考ips(instructions per second)数值,进程的ips越高,表明系统在运行该任务时是更加充分运行的,也说明进程对cpu的利用率较高。本发明通过系统调用sys_perf_event_open打开对进程执行指令数的硬件计数事件,进而读取pmu硬件以获取进程的已执行指令数信息,然后结合进程的调度实体sched_entity获取进程运行时间计算得出进程的ips数值,并将其填充到进程对应的调度实体的新增字段ips里为后续修改资源分配提供参考。
34.图4为cpu资源划分整体示意图。
35.在引入组调度的系统中,进程与进程的分组关系有两种,一种是处于相同组内,比如同一个终端发起的任务等;另外一种是处于不同组内,比如不同用户发起的任务。由于组调度的出现,想要修改进程之间的资源划分,必须考虑到它们的位置关系。同一组内的进程可以通过修改优先级的方式影响进程的负载权重,进而达到任务的虚拟运行时间增长速率不同,选择的频率不同以实现资源划分的效果;不同组的进程的资源划分则比较复杂,为了提高系统的整体吞吐量,需要一个合适的指标来表示不同组之间的cpu资源需求程度,同时又要照顾到一些组的cpu资源分配不至于被其它组挤压至过低,同时组之间的资源分配又会影响到组内进程的资源分配,为了使得系统整体的吞吐量提高,需要保证组份额提高的时候,组内的资源使用效率不会被不同进程结构造成过大程度的稀释。同时应该注意只有同一个层级上的组才有资源划分的意义。
36.图5和图6则是本方法执行的流程图。
37.其中图5是方法整体流程图,图6则是方法执行详细步骤。整体流程可依据不同模块进行划分,首先通过进程资源需求感知模块得到进程的ips信息,之后依据进程的ips执行cpu资源的划分,主要包括进程组内及进程组间的cpu资源划分,最后是进程调度模块维持着进程切换。具体执行步骤如下,首先获取进程就绪队列中的调度实体,依次判断,如果调度实体不是进程,也即进程组,那么深入进程组直至找到进程,对于遍历过程中遇到的进程进行监控,获取进程的权重、虚拟运行时间、pid同时读取pmu硬件获取进程的指令数信息,进而计算进程的ips并填充到调度实体的新增字段ips中,之后依据进程的ips执行cpu的资源划分。
38.本方法的具体执行计算过程如以下算法所述。
39.算法1描述了进程cpu资源需求信息的获取方法,本发明向用户空间提供了一个接口,从而在正常模式和开启本发明中的cpu资源分配过程之间实现灵活的切换。
[0040][0041][0042]
此算法的核心功能可以简要概括为源源不断地为后续分配计划提供ips数据支持。具体是周期性地监控硬件得出已执行指令数信息并结合进程的虚拟运行时间计算出进程的ips,并将数据更新到进程调度实体新增字段里。
[0043]
算法2描述了组内进程资源分配具体过程:
[0044][0045][0046]
同一组内的cpu资源划分参考各进程ips的比重,通过计算进程ips的比重进行一个类型比例的划分,首先计算出进程ips在组内ips和中的占比,之后对此数据进行一定程度的缩放处理,最后依据不同进程的ips比重信息调整进程的优先级。
[0047]
算法3描述了组之间的cpu资源分配
[0048][0049][0050]
对于进程组间的cpu资源分配情况比较复杂,这是因为组的个数以及组内进程数都是不确定的,同时为了保障组的基本权益需要设定一些阈值,本发明在综合多方面因素以及实际情况后对组之间的资源分配选择在整体上依据组内ips的均值进行类比例分配,首先计算各组ips均值在所有组之中的占比,以此作为组间分配的比例,同时在修改的过程中搭配上组的分配最低阈值(设定组最低阈值为均分值的2/3),进行组间的cpu资源划分。
[0051]
本发明方法的具体步骤是:
[0052]
步骤1:进程cpu资源需求感知模块通过周期性地访问进程对应的调度实体,获取进程的执行时间等资源使用快照信息,同时通过读取pmu硬件获取进程已执行指令数数据。
[0053]
步骤2:通过步骤1收集到的快照信息及已执行指令数信息计算进程的每周期内的实际运行时间以及进程的ips(instructions per second)指标,填充于进程对应的调度实体的新增字段ips里;
[0054]
步骤3:cpu资源划分模块通过进程调度实体内的ips信息,调整进程组内以及组间的cpu资源分配。遍历进程就绪队列对进程组内及进程组间cpu资源划分进行对应处理。
[0055]
步骤3.1:对于同一个调度组内的进程,计算出各个进程的ips比重(进程ips与组内所有进程ips之和的比值),对进程ips比重进行缩放处理之后再次计算比重,之后依据比
重修改进程的优先级;
[0056]
步骤3.2:对于同一个层级下的进程组,先依照步骤3处理各组内资源分配并获得组内ips均值,并据此计算各组的资源分配比重,同时设定组份额最低阈值为等分值的2/3,如果组比重小于此值,则设定组份额为此最低阈值,同时修改剩余资源总量,对于其它组则依据比重照常分配;
[0057]
步骤4:进程调度模块从进程就绪队列中选择优先级最高的进程执行。如果进程分配的时间片到期后还未执行结束,则重新投入进程就绪队列;
[0058]
步骤5:重复步骤1、2、3、4直至结束。
技术特征:
1.一种提升系统整体吞吐量的cpu资源动态分配方法,其特征在于:依据系统中不同进程对cpu资源的需求程度不同,动态地在组间以及组内调整cpu资源的分配,提升整体吞吐量;周期性地进行进程的资源需求监控并进行下一阶段的分配调整,适应任务运行的各个阶段,该方法涉及以下三个模块:(1)进程cpu资源需求感知模块该模块的功能是周期性地获取处于系统进程就绪队列的进程的相关元数据,包括进程的运行时间、权重以及进程的ips;(2)cpu资源划分模块本模块旨在通过获取的cpu资源需求信息平衡进程组内及组间的资源分配;cpu资源分配主要分为两块内容,一是通过进行相应处理后的进程的ips信息在进程组内调整进程的优先级;二是通过不同组的ips均值的差距结合组资源最低阈值调整组间cpu比例;(3)进程调度模块该模块控制着运行进程的选择,负责每次从进程就绪队列中取出优先级最高的进程投入运行,并在每次进程时间片到期时判断是否需要重新加入就绪队列;该方法包括如下步骤:步骤1:进程cpu资源需求感知模块通过周期性地访问进程对应的调度实体,获取进程的资源使用快照信息,同时通过读取pmu硬件获取进程已执行指令数数据;步骤2:通过步骤1收集到的资源使用快照信息及已执行指令数信息计算进程的每周期内的实际运行时间以及进程的ips,填充于进程对应的调度实体的新增字段ips中;步骤3:cpu资源划分模块通过进程调度实体内的ips信息,调整进程组内以及组间的cpu资源分配;遍历进程就绪队列对进程组内及进程组间cpu资源划分进行对应处理;步骤4:进程调度模块从进程就绪队列中选择优先级最高的进程执行;如果进程分配的时间片到期后还未执行结束,则重新投入进程就绪队列;步骤5:不断重复步骤1至步骤4,直至结束。2.根据权利要求1所述的一种提升系统整体吞吐量的cpu资源动态分配方法,其特征在于:步骤3具体包括:步骤3.1:对于同一个调度组内的进程,计算出各个进程的ips比重,对进程ips比重进行缩放处理之后再次计算比重,之后依据比重修改进程的优先级;步骤3.2:对于同一个层级下的进程组,先依照步骤3处理各组内资源分配并获得组内ips均值,并据此计算各组的资源分配比重,同时设定组份额最低阈值为等分值的2/3,如果组比重小于此值,则设定组份额为此最低阈值,同时修改剩余资源总量,对于其它组则依据比重照常分配。
技术总结
本发明涉及一种提升系统整体吞吐量的CPU资源动态分配方法。本发明中的进程CPU资源需求感知模块能对进程的CPU资源需求进行实时测量,量化进程运行时对CPU资源的消耗。CPU资源划分模块能依据系统中的就绪进程对CPU的需求不同在进程组内以及进程组间进行合理的CPU资源分配,保证CPU需求较高的进程获得更高优先级的处理。在系统运行的各个时刻实时探测到当前时刻系统的就绪进程信息,准备下一阶段的调整以适用进程的运行的各个时刻的CPU资源合理分配,在保证实时性的前提下提高系统的整体吞吐量。吐量。吐量。
技术研发人员:贾刚勇 梁嵩嵩 梅松竹 王泽斌 蒋从锋 周俶易
受保护的技术使用者:杭州电子科技大学
技术研发日:2021.12.07
技术公布日:2022/3/8