一种利用多请求队列提升IO并行性和减少小IO延迟的方法技术

技术编号:8105605 阅读:450 留言:0更新日期:2012-12-21 04:12
本发明专利技术公开了一种利用多请队列提高IO并行性和减少小IO延迟的方法,包括建立多个请求队列的步骤和利用选择策略使IO请求选择相应的请求队列进行处理步骤,从而实现IO请求并行运行,其中选择策略包括:将每个进程与一个请求队列绑定,以使多个进程上的IO请求平均分配到多个请求队列上处理;将每个CPU与一个请求队列绑定,以使多个CPU上的IO请求平均分配到多个请求队列上处理。本发明专利技术还公开了上述方法在FC或FCoE存储系统中的应用。本发明专利技术将大量的IO请求根据某种策略分配到多个请求队列中,实现IO请求的并行处理,提升IO请求的处理效率,达到提高IO吞吐率的效果,并可通过给小IO请求分配更多的队列数,提升小IO的实时处理效率,来减少小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延迟,满足高负载和实时性要求。本专利技术为解决上述技术问题采用的具体方案如下(I)创建多个请求队列;(2)为所述多个请求队列制定选择策略,使IO请求选择相应的请求队列进行处理,实现IO请求并行运行;其中,所述选择策略包括将进程与一个请求队列绑定,使多个进程上的IO请求平均分配到多个请求队列上处理;将CPU与一个请求队列绑定,使多个CPU上的IO请求平均的分配到多个请求队列上处理。对小IO请求和大IO请求进行队列划分处理,并且使小IO请求的队列数大于处理大IO请求的队列数;本专利技术可以使用默认的单请求队列,而不使用或者开启多请求队列。本专利技术可以通过命令接口发送配置命令,确定请求队列的个数和选择队列的策略。本专利技术中创建多个请求队列优选采用如下具体步骤(I. I)为块设备创建一个通用统一命令接口 ;(I. 2)通过该命令接口发送创建多请求队列的命令; (I. 3)系统内核接收到创建多请求队列命令后,将分配多个请求队列,并使用默认请求队列参数对新分配的请求队列进行初始化,并完成多请求队列向系统内核的注册。在一个多核系统中,一个块设备在系统内核中只有一个请求队列,为了提升IO请求处理的并行性,在系统内核中给一个块设备创建多个请求队列,并修改IO请求发送到请求队列的入口,增加多请求队列的选择策略,可以根据不同请求队列的选择策略来满足不同存储环境的需求。存储区域网络的块设备通常都是以SCSI磁盘设备的方式挂载,为了实现多请求队列,必须修改SCSI子系统,使其支持多请求队列,提升SCSI子系统的并行性。本专利技术还公开了一种利用上述方法在FC或FCoE存储系统中的应用,其具体包括如下步骤(I)用户发起读写操作,文件系统生成IO请求,将IO请求转化为通用块层IO请求;(2)进入多请求队列的入口,依据IO请求大小选择请求队列,将通用块层IO请求发送到选择的请求队列上,并完成IO的合并、调度和初始化;(3)将经步骤(2)处理后的IO请求发送到SCSI子系统,转化为SCSI请求,并发送到实现存储网络协议的SCSI底层驱动模块;(4)SCSI底层驱动模块将所述SCSI请求转化为存储网络协议帧,通过存储网络发送目标端处理。本专利技术的技术效果是将大量的IO请求根据某种策略分配到多个请求队列中,实现IO请求的并行处理,提升IO请求的处理效率,达到提高IO吞吐率的效果,并可通过给小IO请求分配更多的队列数,提升小IO的处理效率,来减少小IO请求处理的延迟。附图说明图I为本专利技术多请求队列的创建和配置流程;图2为本专利技术多请求队列的结构,图中有8个请求队列(可不限于8个);图3为本专利技术多请求队列选择策略的结构,其中Q(X)表示请求队列X ;图4为本专利技术在存储系统中的多请求队列结构;图5为本专利技术策略三多请求队列选择流图。具体实施例方式下面结合附图和具体实施例,对本专利技术做进一步详细说明。以下实施例仅是说明性的,不构成是对本专利技术的限定。本专利技术是针对多核环境下,通过实现多请求队列和多请求队列的选择策略来提升IO并行处理能力和保证小IO实时性要求的方法。本专利技术首先需要建立多请求队列。实现多请求队列,为块设备创建统一的接口,可以为块设备创建enable、mode、bind三个接口。enable为开启和关闭多请求队列的接口,mode为使用请求队列个数的接口,bind为策略选择的接口,可以通过这三个接口修改多请求队列的运行方式。利用建立的多请求队列,确定选择策略,根据策略选择相应的请求队列进行IO请求的运行。选择策略具体如下策略O :使用默认的单个请求队列,不使用多个请求队列。策略I :开启多个请求队列,并将每个进程Pid与一个对应的请求队列Q绑定,绑 定条件采用取余运算Q=pid % nr_q的余数(Q等于pid对nr_q取余,这里pid为进程描述符ID,nr_q为请求队列的个数,Q为待绑定的队列序号),这样使多个进程能够平均地分配到多个请求队列上处理。在多任务系统中,有大量的用户进程会同时向一个块设备发起IO请求,在开启多个请求队列情况下,通过策略1,可以将大量的用户进程依据进程ID分别绑定到一个请求队列,不同进程的IO请求将会发送到与该进程绑定的请求队列上处理,从而发挥请求队列的作用和实现IO请求并行处理。进程和一个请求队列绑定是指让一个进程的所用IO请求都分配到一个固定的请求队列上处理,而分配的方式采用取余运算(pid%nr_q)。在请求队列个数确定的情况下,一个进程ID,在该进程的生存期(进程创建到进程销毁)内保持不变,那么pid%nr_q对于一个进程就是一个恒定的值。比如一个进程ID为6 (pid=6),当前使用的队列个数为4,那么6%4=2,那么这个进程的请求都会分配到序号为2的队列Q (2)上处理。又比如一个进程ID为7,那么7%4=3,那个该进程的请求都会分配到队列序号为3的队列Q (3)上。策略I的取余运算也称取摸运算,具体运算符不限于用”%”表示。策略2 :开启多个请求队列,并将每个CPU与一个对应的请求队列Q绑定,绑定条件采用取余运算Q=cpu%nr_q (Q等于cpu对nr_q取余,这里cpu为IO请求所在的处理器ID,nr_q为请求队列的个数,Q为待绑定的请求队列的序号),可以平均的分配到多个请求队列上处理。在多核系统中,一个IO请求会在一个CPU上处理,在开启多个请求队列情况下,将CPU本文档来自技高网
...

【技术保护点】
一种利用多请队列提高IO并行性和减少小IO延迟的方法,包括建立多个请求队列的步骤和利用选择策略使IO请求选择相应的请求队列进行处理步骤,从而实现IO请求并行运行,其特征在于,所述选择策略包括:A.将每个进程与一个请求队列绑定,以使多个进程上的IO请求平均分配到多个请求队列上处理;B.将每个CPU与一个请求队列绑定,以使多个CPU上的IO请求平均的分配到多个请求队列上处理。

【技术特征摘要】
1.一种利用多请队列提高IO并行性和减少小IO延迟的方法,包括建立多个请求队列的步骤和利用选择策略使IO请求选择相应的请求队列进行处理步骤,从而实现IO请求并行运行,其特征在于, 所述选择策略包括 A.将每个进程与一个请求队列绑定,以使多个进程上的IO请求平均分配到多个请求队列上处理; B.将每个CPU与一个请求队列绑定,以使多个CPU上的IO请求平均的分配到多个请求队列上处理。2.根据权利要求I所述的利用多请队列提高IO并行性和减少小IO延迟的方法,其特征在于,先将所述IO请求中分为小IO请求和大IO请求,再分别利用选择策略对所述小IO请求和大IO请求进行处理,使各CPU或各进程同时选择各自相应的请求队列并行处理。3.根据权利要求2所述的利用多请队列提高IO并行性和减少小IO延迟的方法,其特征在于,所述请求队列中,用于处理小IO请求的请求队列数大于处理大IO请求的请求队列数。4.根据权利要求2或3所述的利用多请队列提高IO并行性和减少小IO延迟的方法,其特征在于,所述小IO请求指小于4KB的请求。5.根据权利要求1-4之一所述的利用多请队列提高IO并行性和减少小IO延迟的方法,其特征在于,所述进程与请求队列的绑定关系通过下式确定Q=pid%nr_q 式中,Pid为进程描述符ID,nr_q为请求队列的个数...

【专利技术属性】
技术研发人员:刘景宁童薇冯丹吴龙飞林超
申请(专利权)人:华中科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1