基于系统资源的i/o请求合并调度系统与方法

文档序号:8257811阅读:307来源:国知局
基于系统资源的i/o请求合并调度系统与方法
【技术领域】
[0001]本发明涉及计算机系统及存储技术,具体涉及一种基于系统资源的i/o请求合并调度系统与方法。
【背景技术】
[0002]在三网融合、云计算和物联网等新兴概念迅猛发展的背景下,随着市场需求的不断拉动,各种高速率、低延迟的网络数据应用持续增长。这些高速网络数据应用对存储系统的性能提出了更高的要求,同时也为主机的系统资源管理带来了更大的挑战。
[0003]当前业界普遍采用Linux内核自带的1 Scheduler对I/O请求队列进行调度。1Scheduler主要包括合并和排序两方面功能。合并是指将两个或多个LBA地址相同或相邻扇区请求结合成一个新的请求,这样只需要一次寻道即可,这显然减少了系统开销和磁盘寻址次数;排序是指把I/O请求按照LBA地址增长的方向排列,从而减少磁盘机械臂的转动,缩短请求的实际寻道时间。为了权衡I/O性能和公平性,在Linux2.6内核中,实现了四种I/O调度方式:NOOP、Deadline、Anticipatory和CFQ。每种方式的侧重点和实现方式不同,但在基本的合并操作方面,这四种调度方式基本相同。
[0004]上述现有技术的四种调度方式中的合并操作没有对LBA地址不连续的请求进行合并,同时也没有兼顾系统的资源利用情况。这会影响存储I/o性能的进一步提升。

【发明内容】

[0005]本发明的目的在于克服现有技术中的I/O请求调度方式中的合并操作无法对LBA地址不连续的请求进行合并的缺陷,从而提供一种既能对地址连续的I/O请求进行合并调度,又能对地址非连续的I/o请求进行合并调度的系统与方法。
[0006]为了实现上述目的,本发明提供了一种基于系统资源的I/O请求合并调度系统,位于文件系统101与存储设备106之间,包括系统监控模块103、调度管理模块104和请求调度模块105 ;其中,所述系统监控模块103实时地收集计算机的系统参数,并将所收集到的系统参数发送调度管理模块104 ;所述调度管理模块104根据所述系统参数评估计算机的资源利用情况,根据评估结果设置合并距离和最大合并数;所述请求调度模块105根据所述合并距离和最大合并数对I/O请求进行合并调度,以及拆分所述存储系统对合并后I/O请求的响应,所述I/O请求包括LBA地址不连续I/O请求与LBA地址连续I/O请求。
[0007]上述技术方案中,所述系统监控模块103实时采集的系统参数包括CPU利用率、内存占用率、I/O吞吐率、请求的访问时间。
[0008]上述技术方案中,所述调度管理模块104在评估计算机的资源利用情况时,将系统监控模块103所采集的系统参数与计算机所配置的资源情况进行比较,由此得到当前的计算机资源利用情况;当计算机系统资源充足时,所述调度管理模块104在设置合并距离与最大合并数时相应地增大合并距离和最大合并数,当计算机系统资源紧张时,所述调度管理模块104在设置合并距离与最大合并数时相应地减小合并距离和最大合并数。
[0009]上述技术方案中,所述请求调度模块105在处理LBA地址不连续I/O请求时,可先计算这些请求间的LBA地址间隔,对LBA地址间隔小于合并距离、数目不超过最大合并数的若干LBA地址不连续I/O请求进行合并调度;对实现了合并调度的LBA地址不连续I/O请求加以记录,当存储系统对这些合并后的I/O请求予以响应时,请求调度模块105可根据记录中的信息对响应进行拆分处理。
[0010]本发明还提供了基于所述的基于系统资源的I/O请求合并调度系统所实现的合并调度方法,包括:
[0011]步骤I)、初始化阶段;用户对系统监控模块103、调度管理模块104和请求调度模块105进行一系列的参数配置,包括系统监控周期、I/O响应时间上限、默认合并距离和合并数目;
[0012]步骤2)、系统监控模块103实时采集计算机的系统参数,所述系统参数包括CPU利用率、内存占用率、I/o吞吐率、请求的访问时间;
[0013]步骤3)、调度管理模块104根据系统监控模块103实时收集到的系统参数评估计算机系统当前的资源利用情况,并根据评估结果设置合并距离和最大合并数;
[0014]步骤4)、当上层文件系统的I/O请求队列中存在I/O请求时,请求调度模块105根据合并距离和最大合并数对I/O请求进行合并调度;
[0015]步骤5)、当处理完I/O请求队列中一定数目的请求后,回到步骤2),重新评估系统资源利用情况,并设置新的合并距离和最大合并数,继续调度I/o请求。
[0016]上述技术方案中,所述的步骤4)包括:
[0017]步骤4-1)、请求调度模块105检查上层的文件系统的I/O请求队列中是否存在I/O请求,若存在,执行下一步,否则重新执行步骤2);
[0018]步骤4-2)、请求调度模块105根据所述I/O请求队列中位置相邻I/O请求的LBA地址和请求长度,计算队列中所有相邻请求之间的间隔距离;
[0019]步骤4-3)、判断步骤4-2)中计算得到的位置相邻I/O请求间的间隔距离是否小于步骤3)中所设置的合并距离,若小于,执行下一步,否则,重新执行步骤4-1);
[0020]步骤4-4)、合并间隔距离小于合并距离的I/O请求,并将原请求从请求队列中删除;
[0021]步骤4-5)、检查当前合并的I/O请求的数目是否超过步骤3)中所设置的最大合并数,若是,执行下一步,否则,执行步骤4-7);
[0022]步骤4-6)、只合并最大合并数的I/O请求,然后执行下一步;
[0023]步骤4-7)、将合并后的I/O请求发送到下层的存储系统;
[0024]步骤4-8)、记录进行合并的I/O请求;
[0025]步骤4-9)、判断请求调度模块105是否收到了存储设备所返回的响应,若收到,执行下一步,否则,重新执行步骤2);
[0026]步骤4-10)、请求调度模块105将存储设备所返回的响应与步骤4-8)所得到的记录进行比较,如果该响应所对应的请求是合并后I/o请求,执行下一步,否则,执行步骤4-12);
[0027]步骤4-11)、请求调度模块105根据记录中的信息对响应进行拆分处理;
[0028]步骤4-12)、将响应提交给上层的文件系统。
[0029]本发明的优点在于:
[0030]本发明通过评估系统资源利用情况,对若干连续或不连续的I/O请求进行动态地合并调度,提高了存储的I/o性能,优化利用了系统资源。
【附图说明】
[0031]图1是本发明的I/O请求合并调度系统的结构示意图;
[0032]图2是本发明的I/O请求合并调度方法的流程图。
[0033]图面说明
[0034]101文件系统102 I/O请求合并调度系统
[0035]103系统监控模块 104调度管理模块
[0036]105请求调度模块 106存储设备
【具体实施方式】
[0037]现结合附图对本发明作进一步的描述。
[0038]图1为本发明的I/O请求合并调度系统的结构示意图,如图所示,该系统(在图1中用102表示)位于文件系统101与存储设备106之间,其包括系统监控模块103、调度管理模块104和请求调度模块105 ;其中,所述系统监控模块103实时地收集计算机的系统参数,并将所收集到的系统参数发送调度管理模块104 ;所述调度管理模块104根据所述系统参数评估计算机的资源利用情况,根据评估结果设置合并距离和最大合并数;所述请求调度模块105根据合并距离和最大合并数对LBA地址不连续I/O请求(也可简称为不连续I/O请求)进行合并调度,以及拆分所述存储系统对合并后I/o请求的响应。
[0039]下面对系统中的各个模块做进一步的说明。
[0040]所述系统监控模块103实时采集的系统参数包括CPU利用率、内存占用率、I/O吞吐率、请求的访问时间等。
[0041]所述调度管理模块104在评估计算机的资源利用情况时,将系统监控模块103所采集的系统参数与计算机所配置的资源情况进行比较,由此得到当前的计算机资源利用情况,如计算机资源充足或紧张。当系统资源充足时,该模块在设置合并距离与最大合并数时可相应地增大合并距离和最大合并数;当系统资源紧张时,该模块在设置合并距离与最大合并数时可相应地减小合并距离和最大合并数。
[0042]所述请求调度模块105在处理LBA地址不连续I/O请求时,可先计算这些请求间的LBA地址间隔,对LBA地址间隔小于合并距离、数目不超过最大合并数的若干LBA地址不连续I/O请求进行合并调度;对实现了
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1