一种虚拟i/o调度方法和系统的制作方法

文档序号:8319015阅读:288来源:国知局
一种虚拟i/o调度方法和系统的制作方法
【技术领域】
[0001] 本发明涉及云计算领域,特别是涉及一种虚拟I/O调度方法和系统。
【背景技术】
[0002] 当今计算时代正在由信息共享向服务共享过渡,在这个跨越中出现了新的计算模 式一云计算。云计算支持用户根据自己的需求,从使用的各种设备(包括固定和移动及家 庭各类设备)找到相关计算服务,而这些服务又是存储在位于分布式网络的服务器。云计算 作为一种网络化按需加载的分布式系统,终端系统会产生大量的混杂类型的虚拟I/O。其 中包括系统类的I/O请求、非实时性文件I/O请求和实时性文件I/O请求等,图1所示为云 计算环境下虚拟I/O的处理过程。然而近年来CPU计算速度的飞速提升并没有带来计算机 I/O处理速度的提高,I/O-直是计算机性能的瓶颈,对于云计算模式也不例外。因此,改善 终端系统性能的一个有效方法是提高I/O的处理性能。
[0003] 传统的I/O调度方法存在以下问题:
[0004] 第一、通用的I/O调度算法(如SCAN,SSTF)都将力图减少物理磁盘的寻道时间和 旋转时间作为提高磁盘系统响应时间和吞吐率的一个重要因素。但云计算终端是由虚拟磁 盘机制向加载的操作系统提供平面寻址的虚拟块设备,因此终端的磁盘I/O处理和调度机 制无需考虑磁盘的物理属性。
[0005] 第二、支持QoS控制的I/O的调度算法需要操作系统中有支持硬实时的QoS控制 模块来提供QoS控制参数,会给上至应用程序下到物理磁盘调度带来较大开销,而且对操 作系统的修改也较大,实现复杂。
[0006] 第三、云计算在处理虚拟磁盘I/O的路径上增加了网络传输以及服务器上的I/O 处理,路径较单机系统更长,所以大量小I/O产生的小数据包会使得网络传输的性能降低, 网络I/O的性能下降。因此将小I/O聚合对于I/O处理路径较长的云计算系统有重要影响。 现有聚合小I/O的方法如Collective 1/0,无法获得上层的语义信息,即没有区分I/O的类 型,从而聚合的效率不高。

【发明内容】

[0007] 鉴于以上,本发明提出一种虚拟I/O调度方法和系统,以解决现有技术存在的至 少一个问题。
[0008] 根据本发明一方面,提出一种虚拟I/O调度方法,包括:当上层应用对文件系统产 生I/O请求R k时,CFD通过文件系统的过滤驱动截获请求Rk,根据文件Fk、进程Pk和时间戳 T k将该请求分类,将分类标记Ck附加在请求Rk中,并根据附加的分类标记C k将该I/O请求 插入到各自类别的I/O队列中;在本地缓存中查找该I/O请求所需的数据块,如果找到,则 返回。
[0009] 进一步,在本地缓存中未查找到该I/O请求所需的数据块时,为不同类别的I/O队 列赋予不同的处理优先权重;对某一队列的I/O进行处理时,对队列中的I/O进行聚合,将 连续块的请求聚合为一个请求;未工作的NBD实例被唤醒,将该I/O请求封装成NBD包,调 用本地网卡驱动,发送到服务器上处理,以从服务器获取I/O请求所需的数据块。
[0010] 进一步,创建文件Fk、进程Pk和时间戳Tk到分类集合C k的映射函数f,并根据该映 射函数将请求分类。
[0011] 进一步,根据分配给每类I/O的优先权重来规定每类I/O处理在每轮处理中的所 占时间。
[0012] 进一步,预先创建多个NBD实例,当处理一个聚合I/O请求时,未工作的NBD实例 被唤醒。
[0013] 根据本发明一方面,提出一种虚拟I/O调度系统,包括CFD和CBC,其中:CFD,当上 层应用对文件系统产生I/O请求R k时,通过文件系统的过滤驱动截获请求Rk,根据文件Fk、 进程P k和时间戳Tk将该请求分类,将分类标记Ck附加在请求Rk中,并根据附加的分类标记 C k将该I/O请求插入到各自类别的I/O队列中;CBC,在本地缓存中查找该I/O请求所需的 数据块,如果找到,则返回。
[0014] 进一步,CBAS,在本地缓存中未查找到该I/O请求所需的数据块时,为不同类别的 I/O队列赋予不同的处理优先权重,根据分配给每类I/O的优先权重来规定每类I/O处理在 每轮处理中的所占时间;对某一队列的I/O进行处理时,对队列中的I/O进行聚合,将连续 块的请求聚合为一个请求,并插入到一个新的队列中;当处理一个聚合I/O请求时,未工作 的NBD实例被唤醒,CBAS将该I/O请求封装成NBD包,调用本地网卡驱动,发送到服务器上 处理,以从服务器获取I/O请求所需的数据块。
[0015] 进一步,CDM创建文件Fk、进程Pk和时间戳T k到分类集合Ck的映射函数f。
[0016] 进一步,根据分配给每类I/O的优先权重来规定每类I/O处理在每轮处理中的所 占时间。
[0017] 进一步,预先创建多个NBD实例,当处理一个聚合I/O请求时,未工作的NBD实例 被唤醒。
[0018] 本发明通过在文件驱动层对混杂I/O类型进行分类,支持用户自定义的虚拟I/O 优先策略,实现了低开销、对操作系统少修改的方式,解决了云计算环境下终端设备产生的 大量混杂类型I/O导致系统性能不高的问题。
[0019] 本发明将小I/O聚合成大的I/O再发送到服务器上处理,减少I/O的平均路径长 度和跨网络处理开销。
[0020] 本发明通过在终端上引入缓存提高响应速度;通过并行处理虚拟I/O的传送提高 跨网络处理磁盘I/O的吞吐率。
【附图说明】
[0021] 此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0022] 图1所示为现有技术中云计算环境下虚拟I/O的处理过程。
[0023] 图2所示为本发明一实施例中的一种虚拟I/O调度系统的结构示意图。
[0024] 图3所示为本发明一实施例中的一种虚拟I/O调度方法的流程示意图。
【具体实施方式】
[0025] 现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具 体说明,否则在这些实施例中阐述的部件和步骤的相对布置和数值不限制本发明的范围。
[0026] 同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际 的比例关系绘制的。
[0027] 以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明 及其应用或使用的任何限制。
[0028] 对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适 当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
[0029] 在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不 是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
[0030] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一 个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
[0031] 图2所示为本发明一实施例中的一种虚拟I/O调度系统的结构示意图。本发明提 出一种云计算系统中的终端虚拟I/O机制,包括在云计算终端上的I/O处理部分、网络封装 部分和发送部分。按功能层次分为位于操作系统的文件系统中的分类标记部分、位于操作 系统的设备驱动层中的聚合处理部分和并行发送部分,共三个部分。
[0032] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照 附图,对本发明进一步详细说明。
[0033] 分类处理为下层的I/O处理提供上层的语义信息,是优化云计算终端的虚拟I/O 处理的基础。本发明没有提供复杂的QoS服务,因为那样会带来很大的开销。基于性能方 面的考虑,通过一种低开销、对操作系统少修改的方式,让设备驱动层为虚拟I/O的分类聚 合提供前提条件。
[0034] 分类标记通过分类过滤驱动模块(Classification Filter Driver, CFD)完成。 CFD是一个虚拟的设备驱动,当上层应用对文件系统产生一个I/O请求Rk时,CFD通过文件 系统的过滤驱动截获请求R k,并根据文件Fk、进程Pk和时间戳Tk组成的三元组,将该请求分 类,并将分类标记C k附加在请求Rk中。通过对操作系统的块级I/O数据结构(如Linux中 的BIO结构,Windows中的IRP结构)增加一个分类标记域,使得由操作系统产生的每一个 I/O请求都关联上一个分类标记。这样可以利用操作系统原有的设备模型的分层机制,将分 类信息传递到下层的设备驱动层,这样既不影响操作系统其他机制,而且时间和空间上的 开销都很小。
[0035] 分类指导模块(Classification Direction Module,CDM)负责分类规
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1