一种存储阵列控制器IO队列调度方法与装置与流程

文档序号:17694670发布日期:2019-05-17 21:22阅读:515来源:国知局
一种存储阵列控制器IO队列调度方法与装置与流程

本发明属于计算机网络数据存储领域,具体涉及到一种存储阵列中的io队列调度方法与装置。



背景技术:

伴随着云计算迅速普及和各行业对于数据资产保存和利用意识的增强,以及通过互联网、大数据对产业进行变革的意愿,以大容量非易失性闪存作为介质的阵列存储技术正在数据中心迅速兴起,快速取代传统机械硬盘技术。数据中心、服务器通过通信网络连接众多的客户端计算机。用户在客户端通过通信网络,将io请求发往阵列存储控制器,完成数据的获取和更新,如附图1。

用户发往数据中心的io请求通常采用了一种称为标记命令队列(tcq)的技术,用以标记io请求的优先级和队列类型。tcq技术面向多主机、多设备应用环境,支持256级队列深度,用于服务器和数据中心。由于终端用户众多,发往数据中心的io请求数量庞大,如果不采取有效的策略进行调度,易造成io请求堆积,存储介质接口带宽利用率不足的问题,进而造成客户服务满意度下降。

固态硬盘由于一些工作机制的原因,如在写入之前必须先擦除,存在写放大效应(writeamplification),读写速度存在差异。通常io读的速度是io写速度的3~5倍。考虑io写对带宽的占用显著高于io读请求,在调度方案设计中,适当的降低io写调度优先级能提高存储阵列的整体性能表现。

现有队列调度技术在队列管理方案方面存在缺陷,易导致存储介质接口带宽利用不充分的问题。



技术实现要素:

针对现有技术的不足,本发明提出了一种存储阵列控制器io队列调度方法与装置。本发明的核心是一个io调度器,包括io请求分发单元、io请求调度单元、io请求执行单元和状态监控器。

io请求分发单元接收来自主机的io请求,按io请求类型将队列分为两大类,分别是io读和io写;对io读请求按读取目标物理地址所在的存储介质单元进一步区分划为不同的队列,读取目标物理地址所在的存储介质单元相同的io请求划入同一队列。

io请求调度单元接收来自io请求分发单元的io请求,送入不同的队列,并按优先级从大到小的顺序排序。同一队列相同优先级的io请求按先进先出原则排序。io请求调度单元接收来自状态监控器关于介质状态的信息,记为a。用ai=1表示监控器已经收到第i个存储介质单元执行最近io请求的操作结果,用ai=0表示监控器未收到第i个存储介质单元执行最近io请求的操作结果。引入写/擦除/trim一类io请求的优先级计算加权因子α,对这一类io请求的优先级进行缩放,其中α∈(0,1]。用ρij表示第i队列、第j个排序io请求的优先级。按{ρij*ai}计算每个io读队列最高优先级io的实时优先级;按{α*ρij*ai}计算io写/擦除/trim队列最高优先级io的实时优先级,其中*表示乘法运算。对计算结果进行排序,将最高优先级的io请求,发往io请求执行单元。

io请求执行单元接收来自io请求调度单元的io请求,发往下层模块进行执行读写等操作。

进一步,用ρij表示第i队列、第j个排序io的优先级,如果该优先级的io请求多于1个,则按先进先出原则调度,即ρij0>ρij1>ρij2。

进一步,对io队列的调度过程是:

1)按{ρij*ai}计算每个io读队列最高优先级io的实时优先级;

2)按{α*ρij*ai}计算io写请求队列最高优先级io的实时优先级;

3)计算结果分为3种情况描述:一是全为0,此时没有可供调度的io,或者有可供调度的io但存储介质处于busy状态;二是仅有一个非0值,则将该io请求送往io执行单元;三是有多于一个的非0值,则对计算结果进行排序,从中选出最大值所对应的io,发往io执行单元。

一种存储阵列控制器io队列调度装置,包括io请求分发单元,io请求调度单元,io请求执行单元,状态监控器;

所述io请求分发单元,接收来自主机的io请求,按io请求类型将队列分为两大类,第一类包括io读请求,第二类包括io写请求;对io读请求按读取目标物理地址所在的存储介质单元进一步区划分为不同的队列;

所述io请求调度单元,接收来自io请求分发单元的io请求,送入不同的队列,并按优先级从大到小的顺序排序,同一队列相同优先级的io请求按先进先出原则排序;所述io请求调度单元接收来自状态监控器关于介质状态的信息,记着a,用ai=1表示监控器已经收到第i个存储介质执行最近io请求的操作结果,用ai=0表示监控器未收到第i个存储介质执行最近io请求的操作结果;引入io写请求的优先级计算加权因子α,对这一类io请求的优先级进行缩放,其中α∈(0,1],用ρij表示第i队列、第j个排序io请求的优先级,按{ρij*ai}计算每个io读队列最高优先级io的实时优先级;按{α*ρij*ai}计算io写请求队列最高优先级io的实时优先级,其中*表示乘法运算,对计算结果进行排序,将最高优先级的io请求,发往io请求执行单元;

所述io请求执行单元,接收来自io请求调度单元的io请求,发往下层模块进行执行读写等操作;

所述状态监控器,监控关于介质状态的信息。

本发明的关键技术一是多维度(优先级,io请求类型,存储介质状态信息)信息约束下的队列调度技术,二是io写请求的优先级缩放技术。与现有技术相比,创造性体现在:按io请求类型将队列分为两大类,分别是io读和io写;对io读请求按读取目标物理地址所在的存储介质单元进一步区分为不同的队列;对io写请求的优先级引入加权因子进行优先级缩放。

本发明技术方案技术进步体现在,在满足用户qos满意度的同时,提升了存储器的读写速度以及每秒处理io请求能力两个方面的性能表现。

本发明解决了控制器存储介质接口带宽利用不充分的问题,具有简单、实用、易实现的优点,在满足用户qos满意度的同时,提升了存储器的读写速度以及每秒处理io请求能力两个方面的性能表现,呈现的积极效果有:一,不同用户特别是高优先级用户的qos服务满意度得到保障;二,存储器读写速度性能提升;三,存储器每秒处理io请求的能力提升。

附图说明

图1是计算机网络结构图;

图2是存储阵列硬件结构图;

图3是存储阵列控制器软件功能结构图;

图4是本发明io调度器结构图;

图5是io请求分发处理流程;

图6是分类后的io队列;

图7是同一队列内相同优先级io请求遵循的先进先出原则示意图;

图8是io请求调度处理流程图。

具体实施方式

为了更加清楚明白理解本发明的目的、技术方案和优点,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。

请参阅图1,来自客户端计算机的io请求通过通信网络发往数据中心,存储阵列通过主机接口接收来自网络的io请求,参阅图2和图3。其中,图2是存储阵列的硬件结构图,存储阵列控制器通过存储介质接口挂载多颗存储介质单元,这些存储介质单元可独立并行工作。图3是存储阵列控制器的软件功能结构图,运行的软件主要包括阵列控制软件、ssd(solidstatedrives)固件、io调度器。

主机访问存储控制器通过逻辑地址块(lba),而存储控制器通过物理地址访问存储介质。存储控制器维护逻辑地址到物理地址的映射表,这个表可以存于片上的ram资源、固态存储介质或者板载的dram资源。在本实施例中,映射表存储于板载dram。

io调度器接收主机接口传入的各类io请求,并按io请求的类型进行分类。io读请求划分为一类,io写请求划分为一类。按读目标介质地址对io读请求继续分类。io读请求的元数据包含有目标单元id,这是一个逻辑地址。用此逻辑地址到存于板载dram的逻辑地址物理地址映射表查找对应的物理地址。如查到的物理地址归属存储介质-1,则该io请求列入存储介质-1的io读请求队列,如图2。图5描述了该io请求分发流程。图6是按图5描述的分类方法得到的io队列。

图6得到的io队列,以队列为单位,按优先级从大到小进行排序。对相同优先级的io请求,按先进先出原则排列。如图7,队列i有3个io请求的优先级相同,按到达时间的先后循序从右到左排列,编号为0/1/2,调度顺序从右到左。

如图2所示的存储阵列,在一个flash通道上挂载多颗flash存储介质,这些flash颗粒以一个或一组为单位独立并行地工作。在完成读/写等io请求操作后,返回操作结果(成功或失败)给存储阵列控制器。存储阵列控制器内的监控器监控到此状态信息,可得知存储介质的工作状态。用ai表示第i个存储介质单元的工作状态,1表示已接收到最近一个io请求的操作结果,存储介质处于idle状态;0表示未收到最近一个io请求的操作结果,存储介质处于busy状态。

由于固态存储存在写放大效应等原因,io读的速度要显著的快于io写,这导致调度器在等待io写完成的时间上要显著的长于io读。为了提高存储阵列整体的读写性能表现和每秒处理io请求能力,对第二类io队列也就是io写队列引入实时优先级计算加权因子α。α是一个大于0、小等于1的小数。在本实施例中,α=0.618。

用ρij表示第i队列、第j个排序io的优先级,如果该优先级的io请求多于1个,则按先进先出原则调度,即ρij0>ρij1>ρij2。

对io队列的调度过程是:

1)按{ρij*ai}计算每个io读队列最高优先级io的实时优先级;

2)按{α*ρijai}计算io写队列最高优先级io的实时优先级;

3)计算结果分为3种情况描述:一是全为0,此时没有可供调度的io,或者有可供调度的io但存储介质处于busy状态;二是仅有一个非0值,则将该io请求送往io执行单元;三是有多于一个的非0值,则对计算结果进行排序,从中选出最大值所对应的io,发往io执行单元。

该io调度过程也可以用图8描述。图8描述的过程与上述过程只是介质状态信息利用的顺序不同,但过程等价、结果相同。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1