一种基于带宽调度的cpu任务迁移方法及系统的制作方法

文档序号:9597722阅读:295来源:国知局
一种基于带宽调度的cpu任务迁移方法及系统的制作方法
【技术领域】
[0001]本发明涉及操作系统调度领域,特别涉及一种基于带宽调度的CPU任务迀移方法及系统。
【背景技术】
[0002]在多任务实时操作系统中,通常会出现多个CPU需要分别对多个CPU任务进行处理的现象。为了减少较忙CPU的负担,需要进行相应任务调度处理。
[0003]目前,较为常见的CPU任务调度过程是基于EDF(EDF,即Earliest DeadlineFirst,最早截止时间优先算法)算法展开的,这种调度方法可以实现将当前最忙的CPU任务(即离截止时间最小的CPU任务)迀移至当前最闲的CPU上(即离截止时间最大的CPU)。然而,当截止时间很小的时候,将会导致操作系统频繁进行CPU任务的切换,由此带来了极大的系统开销。
[0004]综上所述可以看出,如何降低CPU任务切换的频率,以减少系统开销是目前亟待解决的问题。

【发明内容】

[0005]有鉴于此,本发明的目的在于提供一种基于带宽调度的CPU任务迀移方法及系统,降低了 CPU任务切换的频率,从而减少了系统开销。其具体方案如下:
[0006]—种基于带宽调度的CPU任务迀移方法,包括:
[0007]从计算机的所有CPU中选取N个CPU,其中,N为不小于2的正整数;
[0008]按照预设的迀移周期,定期对所述N个CPU进行一次整体的CPU任务迀移;其中,
[0009]所述对所述N个CPU进行一次整体的CPU任务迀移的过程,包括:
[0010]确定所述N个CPU中每个CPU的当前繁忙程度,并根据CPU当前繁忙程度的大小顺序,对所述N个CPU进行第一排序,得到N个排序后的CPU ;并对所述N个CPU进行任务提取处理,以从每个CPU的所有CPU任务中提取出当前该CPU的最忙CPU任务,相应地得到N个CPU任务,并按照CPU任务的忙碌程度的大小顺序,对所述N个CPU任务进行第二排序,得到N个排序后的CPU任务;其中,所述第一排序的大小顺序和所述第二排序的大小顺序相反;按照排序后的对应位置,将所述N个排序后的CPU任务一对一地迀移至所述N个排序后的 CPU ο
[0011]优选的,所述Ν个CPU中,每个CPU当前的所有CPU任务的数量大于一个。
[0012]优选的,所述N个CPU为所述计算机的同一个NUMA架构中的N个CPU,并且每个CPU的CPU带宽均大于预设阈值。
[0013]优选的,所述迀移周期为100毫秒。
[0014]优选的,所述确定所述N个CPU中每个CPU的当前繁忙程度,并根据CPU当前繁忙程度的大小顺序,对所述N个CPU进行第一排序,得到N个排序后的CPU的过程,包括:
[0015]利用数组结构,分别记录每个CPU当前的所有CPU任务的总带宽以及相应的CPU编号,相应地得到包含N组CPU信息的第一数组,其中,一组CPU信息包括一个CPU编号以及与该CPU编号对应的总带宽;
[0016]根据所述N组CPU信息中记录的总带宽的大小顺序,对所述N个CPU进行所述第一排序,得到所述N个排序后的CPU。
[0017]优选的,所述对所述N个CPU进行任务提取处理,以从每个CPU的所有CPU任务中提取出当前该CPU的最忙CPU任务,相应地得到N个CPU任务,并按照CPU任务的忙碌程度的大小顺序,对所述N个CPU任务进行第二排序,得到N个排序后的CPU任务的过程,包括:
[0018]分别从每个CPU当前的所有CPU任务中查找出占用最大带宽的CPU任务,相应地得到N个CPU任务,并利用数组结构,记录所述N个CPU任务中每个CPU任务所对应的任务带宽以及任务ID,相应地得到包含N组任务信息的第二数组,其中,一组任务信息包括一个任务ID以及与该任务ID对应的任务带宽;
[0019]按照所述N组任务信息中记录的任务带宽的大小顺序,对所述N个CPU任务进行所述第二排序,得到所述N个排序后的CPU任务。
[0020]本发明还公开了一种基于带宽调度的CPU任务迀移系统,包括:
[0021]CPU选取模块,用于从计算机的所有CPU中选取N个CPU,其中,N为不小于2的正整数;
[0022]CPU任务迀移模块,用于按照预设的迀移周期,定期对所述N个CPU进行一次整体的CPU任务迀移;其中,所述CPU任务迀移模块包括:
[0023]第一排序器,用于在对所述N个CPU进行一次整体的CPU任务迀移的过程中,确定所述N个CPU中每个CPU的当前繁忙程度,并根据CPU当前繁忙程度的大小顺序,对所述N个CPU进行第一排序,得到N个排序后的CPU ;
[0024]第二排序器,用于在对所述N个CPU进行一次整体的CPU任务迀移的过程中,对所述N个CPU进行任务提取处理,以从每个CPU的所有CPU任务中提取出当前该CPU的最忙CPU任务,相应地得到N个CPU任务,并按照CPU任务的忙碌程度的大小顺序,对所述N个CHJ任务进行第二排序,得到N个排序后的CPU任务;其中,所述第一排序的大小顺序和所述第二排序的大小顺序相反;
[0025]任务迀移器,用于按照排序后的对应位置,将所述N个排序后的CPU任务一对一地迀移至所述N个排序后的CPU。
[0026]优选的,所述N个CPU为所述计算机的同一个NUMA架构中的N个CPU,并且每个CPU的CPU带宽均大于预设阈值。
[0027]优选的,所述第一排序器包括:
[0028]第一数组记录单元,用于利用数组结构,分别记录每个CPU当前的所有CPU任务的总带宽以及相应的CPU编号,相应地得到包含N组CPU信息的第一数组,其中,一组CPU信息包括一个CPU编号以及与该CPU编号对应的总带宽;
[0029]第一排序单元,用于根据所述N组CPU信息中记录的总带宽的大小顺序,对所述N个CPU进行所述第一排序,得到所述N个排序后的CPU。
[0030]优选的,所述第二排序器包括:
[0031]最忙任务查找单元,用于分别从每个CPU当前的所有CPU任务中查找出占用最大带宽的CPU任务,相应地得到N个CPU任务;
[0032]第二数组记录单元,用于利用数组结构,记录所述N个CPU任务中每个CPU任务所对应的任务带宽以及任务ID,相应地得到包含N组任务信息的第二数组,其中,一组任务信息包括一个任务ID以及与该任务ID对应的任务带宽;
[0033]第二排序单元,用于按照所述N组任务信息中记录的任务带宽的大小顺序,对所述N个CPU任务进行所述第二排序,得到所述N个排序后的CPU任务。
[0034]本发明中,CPU任务迀移方法包括:从计算机的所有CPU中选取N个CPU ;按照预设的迀移周期,定期对上述N个CPU进行一次整体的CPU任务迀移;其中,对上述N个CPU进行一次整体的CPU任务迀移的过程,包括:确定上述N个CPU中每个CPU的当前繁忙程度,并根据CPU当前繁忙程度的大小顺序,对上述N个CPU进行第一排序,得到N个排序后的CPU ;并对上述N个CPU进行任务提取处理,以从每个CPU的所有CPU任务中提取出当前该CPU的最忙CPU任务,相应地得到N个CPU任务,并按照CPU任务的忙碌程度的大小顺序,对上述N个CPU任务进行第二排序,得到N个排序后的CPU任务;其中,第一排序的大小顺序和第二排序的大小顺序相反;按照排序后的对应位置,将上述N个排序后的CPU任务一对一地迀移至上述N个排序后的CPU。可见,本发明是按照排序后的对应位置,将上述N个排序后的CPU任务一对一地迀移至上述N个排序后的CPU,实现了将较忙的CPU任务迀移至较闲的CPU上,以及将较闲的CPU任务迀移至较忙的CPU上的过程,从而保证了对操作系统调度过程的整体优化,并且,本发明是按照预设的迀移周期,定期进行整体的CPU任务迀移,从而避免了频繁切换CPU任务的现象,也即降低了 CPU任务切换的频率,减少了系统开销。
【附图说明】
[0035]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0036]图1为本发明实施例公开的一种基于带宽调度的CPU任务迀移方法流程图;<
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1