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

文档序号:8319015阅读:来源:国知局
则的管理, 为CFD提供分类规则f。CDM的分类规则f是1/0的文件Fk、进程P k和时间戳Tk到分类集合 Ck的映射函数,可表达为f (Fk, Pk, Tk) - Ck。比如,mplayer播放Avatar, avi文件的1/0被 设置为实时性要求高的媒体类1/0 (MM),设置规则可抽象为(Avatar. avi,mplayer, 表示当1/0请求传递给CFD具有前两个参数值,则该1/0为丽类1/0,与时间无关。规则 (*,mplayer, *)=MM,则表示mplayer进程对文件系统产生的所有1/0请求都被归为MM类。 分类规则可以通过CDM模块由服务器统一预制形成缺省的分类规则,也可按需更改。CDM为 不同的1/0类别分配不同的优先权重,即1/0请求完成分类后,就带有优先权重。
[0036] 分类聚合处理位于设备驱动层中的虚拟磁盘驱动中,在收到从文件层通过操作系 统的设备模块传递下来I/O请求时,根据附加的分类标记C k,I/O被插入到各自类别的I/O 队列中。分类控制缓存(Classification-Based Caching,CBC)模块在本地缓存中查找该 I/O请求所需的数据块,如果找到,则返回。
[0037] 本发明通过在文件驱动层对混杂I/O类型进行分类,支持用户自定义的虚拟1/ 〇优先策略,实现了低开销、对操作系统少修改的方式,让块设备驱动层为虚拟I/O的分类 聚合提供前提条件。基于分类的I/O调度可以提供差异化的存储服务,而不是简单的进行 FCFS (First Come First Served,先来先服务)调度,解决了云计算环境下终端设备产生的 大量混杂类型I/O导致系统性能不高的问题。
[0038] 在本发明的另一实施例中,如果在本地缓存中未查找到该I/O请求所需的数据 块,则由分类聚合调度模块(Classification-based Aggregation scheduling,CBAS)对队 列中的I/O进行调度处理。
[0039] CBAS的基本思想是以round-robin的方式处理所有队列,但为不同类别的I/O 队列赋予不同的处理优先权重。与优先权重对应的是每一轮处理分配给该类队列的处理 时间。与现有基于优先权的混杂数据调度方法的重要不同是,CBAS不是一种分配CPU处 理时间的特权方式调度方法,也没有规定一个固定的时间片。CBAS通过规定了一个指导 性的每轮处理的总时间,根据分配给每类1/0的优先权重来规定每类1/0处理在每轮处 理中的所占时间,一类队列处理时间用尽后,开始处理下一类的1/0。在该实施例中,使用 round-robin的方式处理分类队列,为不同类别的1/0队列赋予不同的处理优先权重,根据 分配给每类的优先权重来规定每类1/0处理在每轮处理中的所占时间,实现不同类型虚拟 1/0的差异化处理。由于采用异步的方式处理虚拟磁盘1/0,因此分类聚合调度模块不会出 现闲置等待的情况。
[0040] 对某一队列的1/0进行处理时,分类聚合调度模块还可以对该队列中的1/0进行 聚合,将连续块的请求聚合为一个请求,并插入到一个新的队列中。在该实施例中,将小1/ 0聚合成大的1/0再发送到服务器上处理,会减少1/0的平均路径长度和跨网络处理开销。 CBAS聚合发送算法的示例如下所示。
[0041] 算法中Qi是当前队列,Q' i是聚合后的队列,M是分类队列的总数,Pi是第i个队 列的优先权重,TK_ d是每一轮的标准处理时间,Tltest是该队列处理所剩的处理时间,Tswving 是将一个聚合1/0取出处理的时间。allServed过程的功能是检查队列是否为空。Update 过程的功能是将Qi中新产生的1/0请求从队列中取出,并按先后顺序插入到聚合队列V i 中。Aggregate过程的功能是对聚合1/0队列V i中的1/0请求聚合,将连续块请求的1/ 〇聚合成一个大的1/0。
[0042] 算法流程如下:首先计算出当前队列Qi处理所剩的处理时间,调用Update将Q i中 新产生的1/0请求从队列中取出,并按先后顺序插入到聚合队列Qi 。此时原1/0请求 复制到内存堆空间中,用来收到异步1/0数据后形成1/0应答回复上层,其内存地址作为索 引被记录下来。接着,调用allServed检查队列CT i是否为空。如果队列为空,返回stepl, 处理下一个队列。如果队列不为空,调用Aggregate对队列Q',中的1/0请求聚合,将连 续块请求的1/0聚合成一个大的1/0,聚合后的1/0请求在队列中的顺序改变,聚合前最小 块号的1/0请求的位置将作为新位置。同时原1/0和聚合1/0之间的映射信息被临时记录。 在CBAS算法Step2中,当执行一次Aggregate后,位于Q' i首部的聚合I/O被取出处理, 此时原I/O的请求队列和聚合I/O后的请求之间的映射信息和聚合信息被记录下,用于接 收到I/O应答时重定向至原I/O请求的应答。
[0043]
【主权项】
1. 一种虚拟I/O调度方法,其特征在于: 当上层应用对文件系统产生I/O请求Rk时,C抑通过文件系统的过滤驱动截获请求Rk, 根据文件Fk、进程Pk和时间戳Tk将该请求分类,将分类标记Ck附加在请求Rk中,并根据附 加的分类标记Ck将该I/O请求插入到各自类别的I/O队列中; 在本地缓存中查找该I/O请求所需的数据块,如果找到,则返回。
2. 根据权利要求1所述虚拟I/O调度方法,其特征在于: 在本地缓存中未查找到该I/O请求所需的数据块时,为不同类别的I/O队列赋予不同 的处理优先权重; 对某一队列的I/O进行处理时,对队列中的I/O进行聚合,将连续块的请求聚合为一个 请求; 未工作的N抓实例被唤醒,将该I/O请求封装成N抓包,调用本地网卡驱动,发送到服 务器上处理,W从服务器获取I/O请求所需的数据块。
3. 根据权利要求1或2所述虚拟I/O调度方法,其特征在于: 创建文件Fk、进程Pk和时间戳Tk到分类集合Ck的映射函数f,并根据该映射函数将请 求分类。
4. 根据权利要求2所述虚拟I/O调度方法,其特征在于: 根据分配给每类I/O的优先权重来规定每类I/O处理在每轮处理中的所占时间。
5. 根据权利要求2所述虚拟I/O调度方法,其特征在于: 预先创建多个NBD实例,当处理一个聚合I/O请求时,未工作的NBD实例被唤醒。
6. -种虚拟I/O调度系统,包括C抑和CBC,其特征在于: CFD,当上层应用对文件系统产生I/O请求Rk时,通过文件系统的过滤驱动截获请求Rk, 根据文件Fk、进程Pk和时间戳Tk将该请求分类,将分类标记Ck附加在请求Rk中,并根据附 加的分类标记Ck将该I/O请求插入到各自类别的I/O队列中; CBC,在本地缓存中查找该I/O请求所需的数据块,如果找到,则返回。
7. 根据权利要求6所述虚拟I/O调度系统,其特征在于: CBAS,在本地缓存中未查找到该I/O请求所需的数据块时,为不同类别的I/O队列赋予 不同的处理优先权重,根据分配给每类I/O的优先权重来规定每类I/O处理在每轮处理中 的所占时间;对某一队列的I/O进行处理时,对队列中的I/O进行聚合,将连续块的请求聚 合为一个请求,并插入到一个新的队列中;当处理一个聚合I/O请求时,未工作的N抓实例 被唤醒,CBAS将该I/O请求封装成N抓包,调用本地网卡驱动,发送到服务器上处理,W从 服务器获取I/O请求所需的数据块。
8. 根据权利要求6或7所述虚拟I/O调度系统,其特征在于: CDM创建文件Fk、进程Pk和时间戳Tk到分类集合Ck的映射函数f。
9. 根据权利要求7所述虚拟I/O调度系统,其特征在于: 根据分配给每类I/O的优先权重来规定每类I/O处理在每轮处理中的所占时间。
10. 根据权利要求7所述虚拟I/O调度系统,其特征在于: 预先创建多个NBD实例,当处理一个聚合I/O请求时,未工作的NBD实例被唤醒。
【专利摘要】本发明公开了一种虚拟I/O调度方法和系统。该方法包括:当上层应用对文件系统产生I/O请求Rk时,CFD通过文件系统的过滤驱动截获请求Rk,根据文件Fk、进程Pk和时间戳Tk将该请求分类,将分类标记Ck附加在请求Rk中,并根据附加的分类标记Ck将该I/O请求插入到各自类别的I/O队列中;在本地缓存中查找该I/O请求所需的数据块,如果找到,则返回。本发明实现了低开销、对操作系统少修改的方式,解决了云计算环境下终端设备产生的大量混杂类型I/O导致系统性能不高的问题。
【IPC分类】G06F9-50, G06F9-455
【公开号】CN104636201
【申请号】CN201310573986
【发明人】谢朝阳, 高原, 郭健
【申请人】中国电信股份有限公司
【公开日】2015年5月20日
【申请日】2013年11月15日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1