一种CFQ调度方法技术

技术编号:11062085 阅读:109 留言:0更新日期:2015-02-19 09:08
本发明专利技术提供一种CFQ调度方法,涉及linux内核I/O调度领域,本发明专利技术首先进行组间调度,然后进行组内调度,最后进行队列内调度;应用程序需要进行密集型I/O操作时,向内核提出请求,内核修改相关标志,切换组间调度和组内调度方式,同时将队列内调度时采用的电梯算法界限修改为一个频繁访问的区域。当某组的Intense标志置1时,该组对应的设备优先级最高,减少了组间调度;当某组的Continue标志置1时,该组的队列按照I/O请求的区域分为不同队列,使得I/O密集型请求能够尽可能地在一个队列中完成,减少了组内调度;当某组的Continue标志置1时,队列内电梯调度算法的运行界限改为head和tail,保证了密集型I/O请求被集中访问,减少了电梯调度往返的次数。

【技术实现步骤摘要】
—种CFQ调度方法
本专利技术涉及Iinux内核I/O调度领域,尤其涉及一种CFQ调度方法。
技术介绍
随着Iinux操作系统的发展,应用程序对高性能1的要求越来越高。自2.6内核以后,Iinux内核的1调度算法增加至4种,其中CFQ (completely fair queueing)调度算法应用最为广泛。该算法在多进程环境下能够保证各个进程有公平的调度机会,以及1设备的QoS。但是在I/O密集型请求到来时,该算法的I/O性能会下降。首先,由于CFQ算法将设备分为不同的组,组间调度采用基于权重---时间片的方式,而对于I/O密集型请求,往往是针对单一设备,这时CFQ算法仍然有可能发生组间调度,导致对于某一设备的I/O密集型请求等待。其次,由于CFQ算法对于同组的I/O请求按照进程号分为不同的队列,而对于密集型I/O请求,不同的进程访问的I/O地址有一定的连续性,导致CFQ算法为了保证电梯调度的顺序而在不同队列中切换。最后,由于CFQ算法对于同一队列的I/O请求按照电梯调度,而电梯调度算法对于上下两个边界附近的I/O效率较高,中间的效率较低,影响整个队列的I/O效率。以上为提高Iinux内核的I/O调度效率,适应日益增加的应用程序需求均带了很大的挑战,影响了系统I/O吞吐量,进而影响应用程序运行的速度。
技术实现思路
本专利技术的目的在于提供一种CFQ调度方法,该方法可以克服密集型I/O请求发生时,旧的CFQ算法的I/O性能下降的难题。 为了达到上述目的,本专利技术采用的技术方案为:一种CFQ调度方法,包括如下步骤:(I)首先进行组间调度:对于进程提出的I/O请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作,各组有对应的权重。每组设置特殊操作标志Intense,若该标志置I,则该组权重升为最高直至I/O操作结束。 (2)然后进行组内调度:对于组内的I/O请求,根据特殊操作标志Continue按照两种不同的方式操作。若Continue=。,那么组内I/O请求按照进程号分为不同的队列;若Continue=I,那么组内I/O请求按照I/O访问的地址区域分为不同的队列。当Continue=O时,head = tail =0。各队列有对应的优先级。 (3)最后进行队列内调度:对于同一队列中的I/O请求,采用电梯调度算法。当特殊操作标志Continue为I时,电梯调度算法的边界修改为head和tail。head到tail为电梯算法的一个方向,剩下的区域组成另一个方向。 上述调度方法中,被调度的1/0请求处于内核态,为了能够适应密集型1/0操作,对于组间调度和组内调度都设置特殊操作标志,应用程序需要进行密集型1/0操作时,向内核提出请求,内核修改相关标志,切换组间调度和组内调度方式,同时将队列内调度时采用的电梯算法界限修改为一个频繁访问的区域。其特点在于当某组的Intense标志置I时,该组对应的设备优先级最高,减少了组间调度;当某组的Continue标志置I时,该组的队列按照I/O请求的区域分为不同队列,使得I/O密集型请求能够尽可能地在一个队列中完成,减少了组内调度;当某组的Continue标志置I时,队列内电梯调度算法的运行界限改为head和tail,保证了密集型I/O请求被集中访问,减少了电梯调度往返的次数。 上述调度方法步骤(I)的具体步骤为:步骤a、对于进程提出的I/O请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作;步骤b、组间调度按照权重一时间片方式,每次优先调度时间片最小的组,高权重的组获得的时间片小;步骤C、每组设置特殊操作标志Intense,若该标志置1,则该组权重升为最高直至I/O操作结束。 上述调度方法步骤(2)的具体步骤为:步骤a、根据特殊操作标志Continue按照两种不同的方式将组内I/O请求分成不同的队列步骤b、若Continue=。,那么组内I/O请求按照进程号分为不同的队列,队列基于进程的优先级,映射为相应时间片调度,高优先级时间片小,每次选择时间片小的优先调度。此时 head = tail =0 ;步骤C、若Continue=I,那么组内I/O请求按照I/O访问的地址区域分为不同的队列。含有I/O请求数目最多的区域为访问热区,head和tail对应该区域上下界。 上述调度方法步骤(3)的具体步骤为:步骤a、队列内调度采用电梯调度算法;步骤b、若Continue=I,则电梯调度上下界为head和tail,优先保证访问热区I/O请求。 本专利技术可以克服Iinux内核使用旧的CFQ调度算法时,对于突发的I/O密集型请求,I/O吞吐量下降的问题,从而提高应用程序的运行效率。 相比于原来的基于权重-时间片的组间调度方式,本CFQ方法为I/O密集型操作提供特殊操作标志,从而保证在I/o密集请求发生时,能够保证发生I/O密集请求的设备在访问时不被打断。 相比于原来的基于优先级-时间片的组内调度方式,本CFQ方法为I/O密集型操作提供特殊操作标志,从而保证在I/o密集请求发生时,使得对于同一设备的I/O请求能够被有效地集中到几个队列中,减少了由于I/o请求地址不满足连续性要求而在队列间调度的次数。 相比于原来的电梯调度算法,本CFQ方法为I/O密集型操作提供特殊操作标志,从而保证在I/o密集请求发生时,电梯调度的范围集中在I/O请求的密集区域,从而保证满足连续性要求的I/o请求优先得到满足,减少电梯调度的往返次数。 【附图说明】 附图1本专利技术调度中组间调度示意图。 附图2本专利技术调度中组内调度示意图。 附图3本专利技术调度中队列内调度图。 【具体实施方式】 下面参照附图对本专利技术的内容进行更加详细的阐述:(I)首先如图1进行组间调度:对于进程提出的I/o请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作,即不同的设备有不同的中断向量。各组有对应的权重,权重越大,时间片越小,得到组间调度的机会越多,所有的组按照时间片排成一颗红黑树。如果某一组的特殊操作标志Intense=I,则该组的I/O请求被优先满足,方法是将其权重升为最高直至该组I/O请求分配完毕操作。 (2)然后如图2进行组内调度:对于组内的I/O请求,根据特殊操作标志Continue按照两种不同的方式分配队列。无论哪种方式,组内的队列按照优先级排成一颗红黑树。若Continue=。,那么组内I/O请求按照进程号分为不同的队列,优先级为进程优先级,head =tail =0 ;若Continue=I,那么组内I/O请求按照I/O访问的地址区域分为不同的队列,优先级按地址区域中I/O请求的数量排序,数量越多,优先级越高。 (3)最后如图3进行队列内调度:对于同一队列中的I/O请求,采用电梯调度算法。若Continue=。,则队列中的I/O请求地址的最大值和最小值成为电梯调度的边界。若Continue=I,则队列中的head和tail成为电梯调度的边界电梯调度算法的边界。其中head和tail中间的I/O请求满足连续性要求,即平均两个邻近的I/O请求地址差值〈5,从而保证密集型I/O请求得到优先满足。本文档来自技高网...

【技术保护点】
一种CFQ调度方法,其特征在于,包括如下步骤:(1)首先进行组间调度:对于进程提出的I/O请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作,各组有对应的权重;每组设置特殊操作标志Intense,若该标志置1,则该组权重升为最高直至I/O操作结束;(2)然后进行组内调度:对于组内的I/O请求,根据特殊操作标志Continue按照两种不同的方式操作;若Continue=0,那么组内I/O请求按照进程号分为不同的队列;若Continue=1,那么组内I/O请求按照I/O访问的地址区域分为不同的队列;当Continue=0时,head = tail =0;各队列有对应的优先级;(3)最后进行队列内调度:对于同一队列中的I/O请求,采用电梯调度算法;当特殊操作标志Continue为1时,电梯调度算法的边界修改为head和tail;head 到tail为电梯算法的一个方向,剩下的区域组成另一个方向。

【技术特征摘要】
1.一种调度方法,其特征在于,包括如下步骤: (1)首先进行组间调度:对于进程提出的1/0请求按照所操作的设备类型分组,各组选择对应设备类型的1/0操作,各组有对应的权重;每组设置特殊操作标志1111:61186,若该标志置1,则该组权重升为最高直至1/0操作结束; (2)然后进行组内调度:对于组内的1/0请求,根据特殊操作标志皿6按照两种不同的方式操作;若0)1^1皿6=0,那么组内1/0请求按照进程号分为不同的队列;若00111:111116=1,那么组内1/0请求按照1/0访问的地址区域分为不同的队列;当00111:111116=0时,1168(1 = 1:811 =0 ;各队列有对应的优先级; (3)最后进行队列内调度:对于同一队列中的1/0请求,采用电梯调度算法;当特殊操作标志0)111:111116为1时,电梯调度算法的边界修改为11651(1和仏11:11651(1到仏11为电梯算法的一个方向,剩下的区域组成另一个方向。2.根据权利要求1所述的方法,其特征在于,被调度的1/0请求处于内核态,为了能够适应密集型1/0操作,对于组间调度和组内调度都设置特殊操作标志,应用程序需要进行密集型1/0操作时,向内核提出请求,内核修改相关标志,切换组间调度和组内调度方...

【专利技术属性】
技术研发人员:邓宇羽
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:山东;37

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

1