一种提高数据密集型应用实时性的CPU调度方法技术

技术编号:29757075 阅读:22 留言:0更新日期:2021-08-20 21:10
本发明专利技术涉及一种提高数据密集型应用实时性的CPU调度方法。该方法包括:采集模块周期性的收集进程的资源使用快照;计算模块和分类模块通过分析应用的资源使用快照判断应用是否属于数据密集型应用,并设置进程的标志位;CPU调度算法通过标志位判断当前进程是否属于数据密集型应用,并对数据密集型应用进程的优先级进行调整;CPU调度算法根据优先级调整进程在就绪队列中的位置;统计当前应用进程的内存资源使用情况,以实现进程优先级的动态更新。本发明专利技术能有效提高计算机系统对数据密集型应用提供的实时性。

【技术实现步骤摘要】
一种提高数据密集型应用实时性的CPU调度方法
本专利技术涉及计算机操作系统的CPU调度
,尤其涉及一种可以提高数据密集型应用实时性的CPU调度方法。
技术介绍
大数据时代下,数据密集型应用的实时性对于挖掘数据价值显得尤其重要;由于实时数据在数据总量中占据越来越高的比例,如果不能对这些数据进行及时的处理,这部分数据的价值就会变得非常低。从操作系统层面出发,CPU调度方法会决定应用的实时性表现。目前主流的服务器系统上使用的调度方法是完全公平调度器(CFS),作为通用场景下的一种典型CPU调度方法,CFS的主要目标是在运行的任务之间公平地共享CPU资源。对于不同优先级的进程,CFS会根据各个进程的权重来分配运行时间,并且记录下每个进程的虚拟运行时间,在调度时总是选择虚拟运行时间最少的进程来运行。作为一种通用场景下的调度算法,CFS将关注点放在了如何在不同的进程之间公平地分配CPU资源,无法有效感知数据密集型应用,导致无法满足数据密集型应用高实时性的需求。
技术实现思路
由于当前的操作系统CPU调度算法没有针对数据密集型应用做出特殊处理,导致系统不能为数据密集型应用提供良好的实时性,进而充分利用数据的价值,因此本专利技术提出一种用于提高数据密集型应用实时性的CPU调度方法。本专利技术实现的用于提高数据密集型应用实时性的CPU调度方法主要分为四个模块:(1)采集模块该模块的功能是通过周期性地访问当前系统下进程的进程描述符,收集进程的资源使用快照。(2)计算模块<br>该模块的功能是根据收集到的一系列资源使用快照,计算得到进程的CPU利用率和IO资源利用率;并根据当前系统负载情况,计算得到进程CPU利用率阈值和I/O资源利用率阈值。(3)分类模块该模块的功能是根据计算得到的进程CPU利用率和进程IO资源利用率,分别与进程CPU利用率阈值和I/O资源利用率阈值进行比较,判断进程是否属于数据密集型应用,并将分类结果保存到进程的进程描述符中。(4)调度模块该模块的功能是针对数据密集型应用做出特殊处理,通过提高数据密集型应用的优先级,并在每次进程时间片消耗完后,结合进程IO资源和内存资源使用对进程优先级进行动态更新。从而使数据密集型应用能够相对更早的获得CPU资源运行结束,提高数据密集型应用的实时性。该方法包括如下步骤:步骤1:采集模块通过周期性地访问进程的进程描述符,收集进程的资源使用快照,其中包括进程的CPU使用时间、读取的字节数和写入的字节数等。步骤2:计算模块通过分析进程资源使用快照,根据进程的CPU使用时间和读取、写入的字节数分别计算得到进程CPU利用率、IO资源利用率;同时根据当时系统负载情况,计算得到进程CPU利用率阈值和进程IO资源利用率阈值。步骤3:分类模块通过判断当前进程的CPU利用率是否大于进程CPU利用率阈值和当前进程的IO资源利用率是否大于进程IO资源利用率阈值,得出该进程是否属于数据密集型应用,并将进程类型信息保存到进程描述符的新增标志位字段data_intensive中。步骤4:调度模块每次从进程就绪队列中选出优先级最高的进程执行,并跟踪该进程,统计进程对IO资源和内存资源的使用情况。步骤5:进程分配的时间片到期后,调度模块通过标志位判断当前进程是否属于数据密集型应用。对于非数据密集型应用,保持进程优先级不变;对于数据密集型应用,CPU调度算法根据进程的IO资源使用和内存资源使用来更新进程的优先级,并根据新的优先级将进程重新放入到就绪队列中。步骤6:重复执行步骤4、5,直到所有进程执行完毕。本专利技术的有益效果:本专利技术针对现有CPU调度方法存在无法对数据密集型应用提供良好实时性的问题,提出了一种可以提高数据密集型应用实时性的CPU调度方法。该方法通过周期性的收集进程的资源使用快照,并通过计算模块和分类模块自动对应用进行分类,通过提高数据密集型应用优先级并基于内存、IO资源使用动态更新优先级的策略,从而影响调度器的调度行为,最终让调度器优先调度数据密集型应用,提高该类应用的实时性。附图说明图1为本专利技术提供的一种提高数据密集型应用实时性的CPU调度方法的模型组件结构图;图2为本专利技术提供的一种提高数据密集型应用实时性的CPU调度方法的计算模块工作示意图;图3为本专利技术提供的一种提高数据密集型应用实时性的CPU调度方法的组织就绪进程的数据结构;图4为本专利技术提供的一种提高数据密集型应用实时性的CPU调度方法的调度策略;图5为本专利技术提供的一种提高数据密集型应用实时性的CPU调度方法的流程示意图。具体实施方式以下结合附图对本专利技术作进一步说明。本专利技术提供了一种提高数据密集型应用实时性的CPU调度方法,如附图1所示,该方法主要包括四个组件:(1)采集模块采集模块的主要工作是周期性地访问进程的进程描述符,收集进程的资源使用快照。收集到的资源使用快照将会交由计算模块进行进一步的计算处理。进程的进程描述符是Linux内核用于管理进程的一种数据结构,包含了一个进程所需的所有信息,在内核中通过task_struct结构体来描述。采集模块收集的进程资源使用快照内容包括进程的CPU使用时间和IO资源使用两部分。其中进程CPU使用时间对应进程描述符的utime和stime字段,utime字段记录了进程在用户态下运行的时间,stime记录了进程在内核态下运行的时间,两个字段的单位都为jiffies。进程IO资源使用对应进程描述符的ioac字段,该字段的rchar值和wchar值分别记录了读取的字节数和写入的字节数。采集信息的预设时间间隔被设置为1秒,在内核中的表示为time_interval=CONFIG_HZjiffies(2)计算模块计算模块的主要工作是通过分析进程资源使用快照,计算得到进程的CPU利用率和IO资源利用率;同时根据当前系统负载情况,计算得到进程CPU利用率阈值和进程IO资源利用率阈值。第一部分的计算内容包括进程的CPU利用率和进程的IO资源利用率。关于进程的CPU利用率计算,通过读取资源使用快照,解析其中的utime和stime,将(utime+stime)减去上一个资源快照中这两项的和(lastutime+laststime),作为该进程在time_interval秒内占用CPU的时间,同时总的CPU时间为time_interval*CONFIG_HZ,所以该进程的CPU利用率计算公式为:processCPUUsed=((utime+stime)-(lastutime+laststime))/(time_interval*config_HZ)关于进程的IO资源利用率计算,通过读取资源使用快照,解析其中的rchar和wchar,将(rchar+wchar)减去上一个资源快照中这两项的和(lastrchar+lastwchar),作为该进程在time_interval秒内I本文档来自技高网...

【技术保护点】
1.一种提高数据密集型应用实时性的CPU调度方法,其特征在于该方法包括如下步骤:/n步骤1:采集模块通过周期性地访问进程的进程描述符,收集进程的资源使用快照,其中包括进程的CPU使用时间、读取的字节数和写入的字节数;/n步骤2:计算模块通过分析进程资源使用快照,根据进程的CPU使用时间和读取、写入的字节数分别计算得到进程CPU利用率、IO资源利用率;同时根据当时系统负载情况,计算得到进程CPU利用率阈值和进程IO资源利用率阈值;/n步骤3:分类模块通过判断当前进程的CPU利用率是否大于进程CPU利用率阈值和当前进程的IO资源利用率是否大于进程IO资源利用率阈值,得出该进程是否属于数据密集型应用,并将进程类型信息保存到进程描述符的新增标志位字段data_intensive中;/n步骤4:调度模块每次从进程就绪队列中选出优先级最高的进程执行,并跟踪该进程,统计进程对IO资源和内存资源的使用情况;/n步骤5:进程分配的时间片到期后,调度模块通过标志位判断当前进程是否属于数据密集型应用;对于非数据密集型应用,保持进程优先级不变;对于数据密集型应用,CPU调度算法根据进程的IO资源使用和内存资源使用来更新进程的优先级,并根据新的优先级将进程重新放入到就绪队列中;/n步骤6:重复执行步骤4、5,直到所有进程执行完毕。/n...

【技术特征摘要】
1.一种提高数据密集型应用实时性的CPU调度方法,其特征在于该方法包括如下步骤:
步骤1:采集模块通过周期性地访问进程的进程描述符,收集进程的资源使用快照,其中包括进程的CPU使用时间、读取的字节数和写入的字节数;
步骤2:计算模块通过分析进程资源使用快照,根据进程的CPU使用时间和读取、写入的字节数分别计算得到进程CPU利用率、IO资源利用率;同时根据当时系统负载情况,计算得到进程CPU利用率阈值和进程IO资源利用率阈值;
步骤3:分类模块通过判断当前进程的CPU利用率是否大于进程CPU利用率阈值和当前进程的IO资源利用率是否大于进程IO资源利用率阈值,得出该进程是否属于数据密集型应用,并将进程类型信息保存到进程描述符的新增标志位字段data_intensive中;
步骤4:调度模块每次从进程就绪队列中选出优先级最高的进程执行,并跟踪该进程,统计进程对IO资源和内存资源的使用情况;
步骤5:进程分配的时间片到期后,调度模块通过标志位判断当前进程是否属于数据密集型应用;对于非数据密集型应用,保持进程优先级不变;对于数据密集型应用,CPU调度算法根据进程的IO资源使用和内存资源使用来更新进程的优先级,并根据新的优先级将进程重新放入到就绪队列中;
步骤6:重复执行步骤4、5,直到所有进程执行完毕。


2.根据权利要求1所述的一种提高数据密集型应用实时性的CPU调度方法,其特征在于:所述的数据密集型应用同时满足当前进程的CPU利用率大于进程CPU利用率阈值和当前进程的IO资源利用率大于进程IO资源利用率阈值。


3.根据权利要求1所述的一种提高数据密集型应用实时性的CPU调度方法,其特征在于:步骤5中所述的CP...

【专利技术属性】
技术研发人员:贾刚勇乐柯磊周俶易蒋从锋万健
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1