一种磁盘调度方法及装置的制作方法

文档序号:6435687阅读:135来源:国知局
专利名称:一种磁盘调度方法及装置的制作方法
技术领域
本发明涉及数据存储技术领域,尤其涉及一种磁盘调度方法及装置。
背景技术
目前流行的磁盘调度算法包括以下几种算法一、No_opI/O scheduler (无操作 I/O 调度算法)l/0(lnput/0utput,输入输出)请求被分配到队列,由硬件进行磁盘调度,所有I/O请求都是按照FIFO (First Input First Output,先进先出)原则进行处理。基于No-op I/O scheduler的磁盘调度流程,如图1所示,包括如下步骤接收到进程发起的I/O请求后,首先判断I/O请求队列是否已满,如果没满,则将进程发起的I/o请求放入I/O请求队列;在I/O请求队列中进程与进程之间是平等的,如果有可用的磁盘读写资源,则按照FIFO原则依次为1/0请求队列中的各1/0请求分配磁盘读写资源。算法二、Anticipatory1/0 scheduler (预测 1/0 调度算法)该算法在对进程的当前1/0请求进行处理时,进行短时间等待,预测进程的下一个I/o请求的处理需求,以减少磁头移动时间,适用于顺序读写进程。算法三、Deadline1/0 scheduler (期限 1/0 调度算法)该算法试图将1/0请求的处理时延降至最低,重新排序各个1/0请求的优先级,适用于小文件。算法四、CFQ 1/0 scheduler (公平排队1/0调度算法)该算法公平分配磁盘读写资源给各个进程,适用于桌面系统。现有技术中,基于上述磁盘调度算法进行磁盘调度时,不能对磁盘进行配额管理,如果有大量的I/o请求均会存在1/0争抢问题,从而导致磁盘读取超时;系统繁忙时磁盘读写资源将被耗尽,系统运行整体缓慢,严重时将对所有I/o请求都不响应。

发明内容
本发明实施例提供一种磁盘调度方法及装置,用以解决现有磁盘调度时的1/0争抢问题,提升系统运行速度。本发明实施例提供的磁盘调度方法,包括在每一次磁盘调度时,获取进程组中各发起输入输出1/0请求的进程的优先级、请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源;按照进程的优先级从高到低的顺序,针对每一个优先级,根据当前优先级的各进程请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源,为当前优先级的各进程进行磁盘读写资源的分配。本发明实施例提供的磁盘调度装置,包括获取模块,用于在每一次磁盘调度时,获取存储在通用块层的进程组中各发起输入输出I/O请求的进程的优先级、请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源;调度模块,用于按照进程的优先级从高到低的顺序,针对每一个优先级,根据当前优先级的各进程请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源,为当前优先级的各进程进行磁盘读写资源的分配,并将分配结果分发给块驱动器。本发明实施例提供的磁盘调度方法及装置,允许进程指定优先级,按照进程的优先级由高到低的顺序,在每一个优先级中为各发起I/o请求的进程(即请求进程)进行磁盘调度,如果有大量的I/o请求,可以优先满足高优先级进程发起的I/O请求,避免高优先级进程请求不到磁盘读写资源的情况,从而有效避免了 I/o争抢导致的系统死机、无响应的情况,提升系统运行速度。本发明实施例提供的磁盘调度方法及装置,尤其适用于多进程系统。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1为现有技术中基于No-op I/O scheduler的磁盘调度流程;图2为本发明实施例中磁盘调度方法流程图;图3为本发明实施例中一种较佳的磁盘调度方法流程图;图4为本发明实施例中另一种较佳的磁盘调度方法流程图;图5为本发明实施例中磁盘调度装置在系统所处的位置示意图;图6为本发明实施例中磁盘调度时具体工作交互过程示意图;图7为本发明实施例中磁盘调度装置的结构框图;图8为本发明实施例中调度模块的一种可能结构框图;图9为本发明实施例中调度模块的另一种可能结构框图。
具体实施例方式本发明实施例提供一种磁盘调度方法及装置,允许进程指定优先级,按照进程的优先级由高到低的顺序,在每一个优先级中为各发起I/o请求的进程(即请求进程)进行磁盘调度,如果有大量的I/o请求,可以优先满足高优先级进程发起的I/O请求,避免高优先级进程请求不到磁盘读写资源的情况,从而有效避免了 I/o争抢导致的系统死机、无响应的情况,提升系统运行速度。本发明实施例提供的磁盘调度方法及装置,尤其适用于多进程系统。以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。在介绍本发明实施例提供的磁盘调度方法之前,首先澄清几个概念
进程的优先级(Priority),是指为进程进行磁盘调度的级别,在磁盘调度时,高优先级进程优先于低优先级进程,在系统繁忙时,高优先级进程可以抢占低优先级进程的磁盘读写资源,,低优先级进程不可挤占高优先级进程资源,进程的优先级可以在开发过程中指定,也可以由系统指定。进程组(Group),是正在运行的进程的载体,进程组中进程与进程之间是不平等的,按照优先级划分。具体实施中,所述的进程组(Group)可以具有多个,需要为每一个进程组分配可用的磁盘读写资源,所述的多个进程组可以按照对象进行划分,例如管理员的进程组,普通用户的进程组等等。所述的磁盘调度方法,如图2所示,包括S201、在每一次磁盘调度时,获取进程组中各发起I/O请求的进程(即请求进程)的优先级、请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源。需要说明的是,磁盘调度是一个实时调度过程,进程组中各发起I/O请求的进程所请求的磁盘读写资源,也是随着该进程当前发起的I/o请求的实际需求而实时变化的;在磁盘调度时,针对进程组中未发起I/o请求的进程,无需进行磁盘调度。S202、按照进程的优先级从高到低的顺序,针对每一个优先级,根据当前优先级的各进程请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源,为当前优先级的各进程进行磁盘读写资源的分配。需要说明的是,针对具有多个进程组的情况,由于为每一个进程组分配了可用的磁盘读写资源,因此针对各进程组的磁盘调度方法是完全一致的。针对具有多个进程组的情况,在每一个进程启动之前,需要为其指定一个组标识,例如指定管理员的进程的组标识为01,指定普通用户的进程的组标识为02。基于此,当接收到新启动的进程发起的I/O请求时,根据该新启动的进程的组标识将其加入相应的进程组中。下面,介绍一种较佳的磁盘调度方法,由于针对各进程组的磁盘调度方法是完全一致的,因此以任一进程组为例进行说明。如图3所示,具体包括如下步骤S301、获取进程组中各发起I/O请求的进程(即请求进程)的优先级、请求的磁盘读写资源、以及进程组当前可用的磁盘读写资源;S302、按照进程的优先级从高到低的顺序进行当前优先级的更新,初始化为最高优先级,后续依次更新为下一优先级;S303、根据当前优先级中未分配磁盘读写资源的进程数量、以及进程组当前可用的磁盘读写资源,确定平均可用磁盘读写资源;S304、判断是否存在请求的磁盘读写资源小于或等于平均可用磁盘读写资源的进程,如果是,则执行S305,如果否,则执行S308 ;S305、为请求的磁盘读写资源小于或等于平均可用磁盘读写资源的进程分配请求的磁盘读写资源;S306、根据分配结果更新进程组当前可用的磁盘读写资源;S307、判断当前优先级中是否还存在未分配磁盘读写资源的进程,如果是,返回执行S303,如果否,则当前优先级的各进程的磁盘读写资源分配结束,返回执行S302 ;S308、为当前优先级中未分配磁盘读写资源的各进程分配平均可用磁盘读写资源,至此,进程组已经没有可用的磁盘读写资源,因此进程组中各进程的磁盘读写资源分配结束。较佳的,本发明实施例中还提出进程的重要度(Importance),同一优先级的进程可以有不同的重要度,在同一优先级下根据重要度为各请求进程分配磁盘读写资源。进程的优先级可以在开发过程中配置,也可以由系统配置,具体可以根据进程的运行次数和运行时间确定。在引入进程的重要度之后,介绍另一种较佳的磁盘调度方法,由于针对各进程组的磁盘调度方法是完全一致的,因此以任一进程组为例进行说明。如图4所示,具体包括如下步骤S401、获取进程组中各发起I/O请求的进程(即请求进程)的优先级、请求的磁盘读写资源、以及进程组当前可用的磁盘读写资源;S402、按照进程的优先级从高到低的顺序进行当前优先级的更新,初始化为最高优先级,后续依次更新为下一优先级;S403、根据当前优先级中未分配磁盘读写资源的各进程的重要度、以及进程组当前可用的磁盘读写资源,确定各进程对应的最优可用磁盘读写资源;S404、判断是否存在请求的磁盘读写资源小于或等于对应的最优可用磁盘读写资源的进程,如果是,则执行S405,如果否,则执行S408 ;S405、为请求的磁盘读写资源小于或等于对应的最优可用磁盘读写资源的进程分配请求的磁盘读写资源;S406、根据分配结果更新所述进程组当前可用的磁盘读写资源;S407、判断当前优先级中是否还存在未分配磁盘读写资源的进程,如果是,返回执行S403,如果否,则当前优先级的各进程的磁盘读写资源分配结束,返回执行S402 ;S408、为当前优先级中未分配磁盘读写资源的各进程分配对应的最优可用磁盘读写资源,至此,进程组已经没有可用的磁盘读写资源,因此进程组中各进程的磁盘读写资源分配结束。在S403的具体实施中,包括如下步骤确定当前优先级中未分配磁盘读写资源的各进程的重要度之和;确定每一个进程对应的最优可用磁盘读写资源为所述进程组当前可用的磁盘读写资源与该进程的权重之积,其中,每一个进程的权重为该进程的重要度与所述重要度之和的比值。为了便于理解本发明,下面举例说明基于优先级(Priority)和重要度(Importance)的磁盘调度流程。每个磁盘调度装置都可以具有多个进程组(Group),每个Group中的进程有两个属性{Priority、Importance}, Priority表示优先级,进行资源调度时高优先级严格优先于低优先级,Importance表示重要度,在同一 Priority的各进程中,表示每个进程期望分配的百分比;每个进程还有1/0压力属性{Require} ,Require表示请求的磁盘读写资源;并且进程组对应一个可用的抓取压力属性{Avaliable}, Available表示进程组可用的磁盘读写资源。磁盘调度算法为严格按照Priority将Group中发起1/0请求的进程(即请求进程)分组,按照Priority从高到低的顺序为各个Priority中的进程分配磁盘读写资源;单个Priority中的多个进程根据Importance进行磁盘读写资源的分配,具体分配方式为
BestChoice = Avaliable*Importance/ (该 Priority 中未分配磁盘读写资源的各进程的Importance之和);其中,BestChoice表示进程对应的最优可用磁盘读写资源;Require不超过其对应的BestChoice的进程优先分配磁盘读写资源,并按照Require 分配;Require超过其对应的BestChoice的进程按照BestChoice分配。假设中有四个进程发起I/O请求,该四个进程分别为Group-A、Group-B、Group-C、Group-D,该四个进程的Group当前可用的磁盘读写资源为10,磁盘读写资源的单位一般为数据量/秒。该四个进程的属性如表I所示,其中Allocated表示为进程分配的磁盘读写资源表I
权利要求
1.一种磁盘调度方法,其特征在于,包括在每一次磁盘调度时,获取进程组中各发起输入输出I/o请求的进程的优先级、请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源;按照进程的优先级从高到低的顺序,针对每一个优先级,根据当前优先级的各进程请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源,为当前优先级的各进程进行磁盘读写资源的分配。
2.如权利要求1所述的方法,其特征在于,所述进程组具有多个,以及所述方法还包括当接收到新启动的进程发起的I/o请求时,根据该新启动的进程的组标识将其加入相应的进程组中。
3.如权利要求1或2所述的方法,其特征在于,所述根据当前优先级的各进程请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源,为当前优先级的各进程进行磁盘读写资源的分配,具体包括根据当前优先级中未分配磁盘读写资源的进程数量、以及所述进程组当前可用的磁盘读写资源,确定平均可用磁盘读写资源;如果存在请求的磁盘读写资源小于或等于所述平均可用磁盘读写资源的进程,为其分配请求的磁盘读写资源,并根据分配结果更新所述进程组当前可用的磁盘读写资源,如果当前优先级中还存在未分配磁盘读写资源的进程,返回执行上一步,否则,当前优先级的各进程的磁盘读写资源分配结束;否则,为当前优先级中未分配磁盘读写资源的各进程分配所述平均可用磁盘读写资源,所述进程组中各进程的磁盘读写资源分配结束。
4.如权利要求1或2所述的方法,其特征在于,进程组中各进程还配置有重要度,以及所述根据当前优先级的各进程请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源,为当前优先级的各进程进行磁盘读写资源的分配,具体包括根据当前优先级中未分配磁盘读写资源的各进程的重要度、以及所述进程组当前可用的磁盘读写资源,确定各进程对应的最优可用磁盘读写资源;如果存在请求的磁盘读写资源小于或等于对应的最优可用磁盘读写资源的进程,为其分配请求的磁盘读写资源,并根据分配结果更新所述进程组当前可用的磁盘读写资源,如果当前优先级中还存在未分配磁盘读写资源的进程,返回执行上一步,否则,当前优先级的各进程的磁盘读写资源分配结束;否则,为当前优先级中未分配磁盘读写资源的各进程分配对应的最优可用磁盘读写资源,所述进程组中各进程的磁盘读写资源分配结束。
5.如权利要求4所述的方法,其特征在于,所述根据当前优先级中未分配磁盘读写资源的各进程的重要度、以及所述进程组当前可用的磁盘读写资源,确定各进程对应的最优可用磁盘读写资源,具体包括确定当前优先级中未分配磁盘读写资源的各进程的重要度之和;确定每一个进程对应的最优可用磁盘读写资源为所述进程组当前可用的磁盘读写资源与该进程的权重之积,其中,每一个进程的权重为该进程的重要度与所述重要度之和的比值。
6.一种磁盘调度装置,其特征在于,包括获取模块,用于在每一次磁盘调度时,获取存储在通用块层的进程组中各发起输入输出I/O请求的进程的优先级、请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源;调度模块,用于按照进程的优先级从高到低的顺序,针对每一个优先级,根据当前优先级的各进程请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源,为当前优先级的各进程进行磁盘读写资源的分配,并将分配结果分发给块驱动器。
7.如权利要求6所述的装置,其特征在于,还包括管理模块,用于当接收到新启动的进程发起的I/O请求时,根据该新启动的进程的组标识将其加入通用块层相应的进程组中,所述进程组具有多个。
8.如权利要求6或7所述的装置,其特征在于,调度模块,具体包括第一更新子模块,用于按照进程的优先级从高到低的顺序进行当前优先级的更新; 第一确定子模块,用于根据当前优先级中未分配磁盘读写资源的进程数量、以及所述进程组当前可用的磁盘读写资源,确定平均可用磁盘读写资源;第一判断子模块,用于判断是否存在请求的磁盘读写资源小于或等于所述平均可用磁盘读写资源的进程,如果是,触发第一调度子模块,否则,触发第二调度子模块;第一调度子模块,用于为请求的磁盘读写资源小于或等于所述平均可用磁盘读写资源的进程分配请求的磁盘读写资源,并根据分配结果更新所述进程组当前可用的磁盘读写资源,如果当前优先级中还存在未分配磁盘读写资源的进程,触发第一确定子模块,否则,当前优先级的各进程的磁盘读写资源分配结束,触发第一更新子模块;第二调度子模块,用于为当前优先级中未分配磁盘读写资源的各进程分配所述平均可用磁盘读写资源,所述进程组中各进程的磁盘读写资源分配结束。
9.如权利要求6或7所述的装置,其特征在于,调度模块,具体包括第二更新子模块,用于按照进程的优先级从高到低的顺序进行当前优先级的更新; 第二确定子模块,用于根据当前优先级中未分配磁盘读写资源的各进程的重要度、以及所述进程组当前可用的磁盘读写资源,确定各进程对应的最优可用磁盘读写资源,进程组中各进程还配置有重要度;第二判断子模块,用于判断是否存在请求的磁盘读写资源小于或等于对应的最优可用磁盘读写资源的进程,如果是,触发第三调度子模块,否则,触发第四调度子模块;第三调度子模块,用于为请求的磁盘读写资源小于或等于所述最优可用磁盘读写资源的进程分配请求的磁盘读写资源,并根据分配结果更新所述进程组当前可用的磁盘读写资源,如果当前优先级中还存在未分配磁盘读写资源的进程,触发第二确定子模块,否则,当前优先级的各进程的磁盘读写资源分配结束,触发第二更新子模块;第四调度子模块,用于为当前优先级中未分配磁盘读写资源的各进程分配对应的最优可用磁盘读写资源,所述进程组中各进程的磁盘读写资源分配结束。
10.如权利要求9所述的装置,其特征在于,所述第二确定子模块,具体包括重要度确定单元,用于确定当前优先级中未分配磁盘读写资源的各进程的重要度之和;最优资源确定单元,用于确定每一个进程对应的最优可用磁盘读写资源为所述进程组当前可用 的磁盘读写资源与该进程的权重之积,其中,每一个进程的权重为该进程的重要度与所述重要度之和的比值。
全文摘要
本发明公开了一种磁盘调度方法及装置,用以解决现有磁盘调度时的I/C争抢问题,提升系统运行速度。所述磁盘调度方法,包括在每一次磁盘调度时,获取进程组中各发起I/O(输入输出)请求的进程的优先级、请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源;按照进程的优先级从高到低的顺序,针对每一个优先级,根据当前优先级的各进程请求的磁盘读写资源、以及所述进程组当前可用的磁盘读写资源,为当前优先级的各进程进行磁盘读写资源的分配。
文档编号G06F3/06GK103049213SQ20111031506
公开日2013年4月17日 申请日期2011年10月17日 优先权日2011年10月17日
发明者韩金宇, 孙少陵, 黄晓庆 申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1