[发明专利]一种利用多请求队列提升IO并行性和减少小IO延迟的方法有效
申请号: | 201210268098.X | 申请日: | 2012-07-30 |
公开(公告)号: | CN102831014A | 公开(公告)日: | 2012-12-19 |
发明(设计)人: | 刘景宁;童薇;冯丹;吴龙飞;林超 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 李佑宏 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 利用 请求 队列 提升 io 并行 减少 延迟 方法 | ||
技术领域
本发明涉及计算机存储器技术领域,具体是一种提升IO并行性和减少小IO延迟的方法。
背景技术
目前随着高性能计算与应用服务的发展,更多的高性能存储区域网络开始利用高速网络与专有协议来构建,这主要包括基于以太网与iSCSI协议的IP-SAN、基于光纤通道和FCP协议的FC-SAN,以及基于以太网和光纤通道的新型FCoE存储区域网络。在FC-SAN和FCoE存储区域网络中,将目标端系统的存储设备通过存储网络协议挂载到发起端系统中,作为一个块设备进行访问,随着存储网络技术的发展,尤其是万兆网络的推出,发起端系统访问目标端设备的带宽也不断提升,而发起端的IO请求的并行处理能力却未得到提升。现在的服务器通常都搭载了多核处理器,发起端系统挂载的目标端块设备只有一个请求队列,所有的IO请求都需要互斥的进入请求队列,完成IO合并、IO调度、请求处理等工作,对于IO次数繁重的存储环境,单个请求队列会成为请求处理的瓶颈,不能高效的利用多核系统的并行处理能力。
在存储区域网络中,小IO请求(一般指小于4KB的请求)通常是实时性要求较高的事务处理请求,而大IO请求通常是数据传输请求。在单个请求队列环境下,没有区分小IO请求和大IO请求机制,所有IO请求以相同的方式进行处理,具有相近的延迟,不能满足实时性要求较高的小IO请求。单个请求队列在大量的小IO请求的环境下,请求队列会成为所有IO请求竞争的对象,IO合并和IO调度的效率都会降低,不能充分利用多核系统,会很大的影响IO处理的并行性,增加小IO请求的处理延迟,不能满足实时性要求。现有满足小IO请求实时性要求的方法主要是通过修改请求队列的调度器,授予小IO请求优先处理权,未能解决单个请求队列是并行处理瓶颈的问题。
发明内容
本发明提供一种利用多请队列提高IO并行性和减少小IO延迟的方法,可以提升IO并行性和减少小IO延迟,满足高负载和实时性要求。
本发明为解决上述技术问题采用的具体方案如下
(1)创建多个请求队列;
(2)为所述多个请求队列制定选择策略,使IO请求选择相应的请求队列进行处理,实现IO请求并行运行;
其中,所述选择策略包括:
将进程与一个请求队列绑定,使多个进程上的IO请求平均分配到多个请求队列上处理;
将CPU与一个请求队列绑定,使多个CPU上的IO请求平均的分配到多个请求队列上处理。
对小IO请求和大IO请求进行队列划分处理,并且使小IO请求的队列数大于处理大IO请求的队列数;
本发明可以使用默认的单请求队列,而不使用或者开启多请求队列。
本发明可以通过命令接口发送配置命令,确定请求队列的个数和选择队列的策略。
本发明中创建多个请求队列优选采用如下具体步骤:
(1.1)为块设备创建一个通用统一命令接口;
(1.2)通过该命令接口发送创建多请求队列的命令;
(1.3)系统内核接收到创建多请求队列命令后,将分配多个请求队列,并使用默认请求队列参数对新分配的请求队列进行初始化,并完成多请求队列向系统内核的注册。
在一个多核系统中,一个块设备在系统内核中只有一个请求队列,为了提升IO请求处理的并行性,在系统内核中给一个块设备创建多个请求队列,并修改IO请求发送到请求队列的入口,增加多请求队列的选择策略,可以根据不同请求队列的选择策略来满足不同存储环境的需求。存储区域网络的块设备通常都是以SCSI磁盘设备的方式挂载,为了实现多请求队列,必须修改SCSI子系统,使其支持多请求队列,提升SCSI子系统的并行性。
本发明还公开了一种利用上述方法在FC或FCoE存储系统中的应用,其具体包括如下步骤:
(1)用户发起读写操作,文件系统生成IO请求,将IO请求转化为通用块层IO请求;
(2)进入多请求队列的入口,依据IO请求大小选择请求队列,将通用块层IO请求发送到选择的请求队列上,并完成IO的合并、调度和初始化;
(3)将经步骤(2)处理后的IO请求发送到SCSI子系统,转化为SCSI请求,并发送到实现存储网络协议的SCSI底层驱动模块;
(4)SCSI底层驱动模块将所述SCSI请求转化为存储网络协议帧,通过存储网络发送目标端处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210268098.X/2.html,转载请声明来源钻瓜专利网。