一种基于Linux通用块层多队列的优化系统及方法技术方案

技术编号:22260670 阅读:30 留言:0更新日期:2019-10-10 13:55
本发明专利技术公开了一种基于Linux通用块层多队列的优化系统,包括软件队列和硬件队列,其中软件队列与硬件队列的映射关系为多对多,软件队列与硬件队列间还设有检测模块,用于实时检测各个硬件队列上的拥塞情况;基于Linux通用块层多队列的优化方法,包括:S1.Linux通用块层多队列初始化:初始化软件队列、硬件队列和检测模块,建立软件队列与硬件队列的映射关系;S2.Linux通用块层多队列请求处理。本发明专利技术提供的基于Linux通用块层多队列的优化系统及方法,通过改变软件队列与硬件队列映射关系为多对多,并在软件队列与硬件队列中间加入检测模块,以保证在各种应用场景下,最大发挥存储器件的性能。

An Optimized System and Method Based on Linux Universal Block Layer Multi-Queue

【技术实现步骤摘要】
一种基于Linux通用块层多队列的优化系统及方法
本专利技术属于软件存储
,尤其涉及一种基于Linux通用块层多队列的优化系统及方法。
技术介绍
Linux:Linux是一种自由和开放源代码的操作系统,也是目前运用领域最广泛、使用人数最多的操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。在加上用户空间的应用程序之后,成为Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子,其最初是作为支持英特尔x86架构的个人电脑的一个自由操作系统,目前Linux已经被移植到更多的计算机硬件平台,远远超出其他任何操作系统。Linux可以运行在服务器和其他大型平台之上,如大型主机和超级计算机。世界上500个最快的超级计算机90%以上运行Linux发行版或变种,包括最快的前10名超级电脑运行的都是基于Linux内核的操作系统。Linux也广泛应用在嵌入式系统上,如手机、平板电脑、路由器、电视和电子游戏机等。NVMe:NVMe全称Non-VolatileMemoryExpress,非易失性存储器标准,是一种建立在M.2接口上的协议,是专门为闪存类存储设计的协议。NVMe是使用PCI-E通道的固态硬盘的一种规范,其设计之初就有充分利用到了固态硬盘的低延时以及并行性,还有当代处理器、平台与应用的并行性。相比于传统标准,NVMe标准可以带来多方面的性能提升。近些年来,伴随着存储介质的快速发展,存储技术的迅速提升,存储器件展现出了越来越高效的性能表现。特别是,随着支持NVMe协议的固态硬盘的推出,其提供了超高的访问性能,再加上存储器件多队列特性的出现及上层硬件系统呈现多核化的情况下,Linux传统的通用块层逐渐成为了提升整体系统性能的主要瓶颈。在支持NVMe协议的固态硬盘推出之初时,面对操作系统传统通用块层的缺陷,驱动设计人员通过绕过通用块层的方式来提升系统性能,虽然该方法能很好发挥存储器件的性能,但是该方法存在通用性差,驱动设计太过复杂等问题。目前,Linux操作系统为了应对存储发展趋势,提出并实现了通用多队列块层。该实现方案很好地解决了多线并行的问题,在多核多线程应用测试中,存储器件能够取得接近最优化的性能,但是该实现方案存在一个很大的问题,实现方案中的软件队列与硬件队列的映射关系为多对一或一对一,并且软件队列与硬件队列的映射关系在运行过程中不能根据硬件队列的拥塞情况来动态调整,从而导致在单线程应用测试等情况下,不能充分发挥存储器件的多队列特性。中国专利技术专利“一种利用多请求队列提升IO并行性和减少小IO延迟的方法”(申请号CN201210268098.X),该专利技术公开了一种利用多请队列提高IO并行性和减少小IO延迟的方法,包括建立多个请求队列的步骤和利用选择策略使IO请求选择相应的请求队列进行处理步骤,从而实现IO请求并行运行,其中选择策略包括:将每个进程与一个请求队列绑定,以使多个进程上的IO请求平均分配到多个请求队列上处理;将每个CPU与一个请求队列绑定,以使多个CPU上的IO请求平均分配到多个请求队列上处理。该专利技术中通过将大量的IO请求根据某种策略分配到多个请求队列中,实现IO请求的并行处理,提升IO请求的处理效率,达到提高IO吞吐率的效果,并可通过给小IO请求分配更多的队列数,提升小IO的实时处理效率,来减少小IO请求处理的延迟,但是该专利技术并没有采取有效方法来利用存储器件的多队列特性,不能充分发挥存储器件的性能。
技术实现思路
为解决上述技术问题,本专利技术提供一种基于Linux通用块层多队列的优化系统及方法,通过改变软件队列与硬件队列映射关系为多对多,并在软件队列与硬件队列中间加入检测模块,由检测模块来实时检测各个硬件队列的拥塞情况,再根据其拥塞加权情况来疏导各个软件队列上的数据到不同的硬件队列上,以保证在各种应用场景下,最大发挥存储器件的性能。本专利技术一方面提供了一种基于Linux通用块层多队列的优化系统,包括:软件队列和硬件队列,其中所述软件队列与所述硬件队列的映射关系为多对多,所述软件队列与所述硬件队列间还设有检测模块,用于实时检测各个所述硬件队列上的拥塞情况。以上技术方案优选的,所述各个软件队列分别包括拥塞加权因子集合,用于表示所述软件队列与各个所述硬件队列的关联程度。本专利技术另一方面提供了一种基于Linux通用块层多队列的优化方法,包括:S1.Linux通用块层多队列初始化:初始化软件队列、硬件队列和检测模块,建立所述软件队列与所述硬件队列的映射关系;S2.Linux通用块层多队列请求处理:将上层应用发送的bio保存在相应的所述软件队列中,所述软件队列将所述bio转换为request加入到拥堵状态最低的所述硬件队列,所述硬件队列通过存储器件的提交队列提交给所述存储器件。以上技术方案优选的,所述S1过程具体包括:S101.配置用于并行接收中央处理器请求的所述软件队列;S102.配置用于并行处理所述请求的所述硬件队列;S103.配置各个所述硬件队列的队列深度,并分别给各个所述硬件队列预分配request空间;S104.建立所述软件队列与所述硬件队列的映射关系为多对多,在所述软件队列中确定拥塞加权因子集合;S105.初始化检测模块的结构体数组。以上技术方案优选的,所述S104过程具体包括:在描述所述软件队列的数据结构中加入用于描述硬件队列的数据结构链表与描述拥塞加权因子集合的数据结构链表,增加描述所述拥塞加权因子集合的数据结构。以上技术方案优选的,所述request空间的个数等于所述硬件队列的队列深度。以上技术方案优选的,所述结构体数组中的结构体个数与所述硬件队列的个数相等,所述拥塞加权因子集合中的拥塞加权因子个数与所述硬件队列的个数相等。以上技术方案优选的,所述软件队列与所述中央处理器的处理器核心的映射关系为一对一;所述硬件队列与存储器件的提交队列的映射关系为一对一。以上技术方案优选的,所述S2过程具体包括:S201.接收上层应用发送的bio,并将所述bio保存在所述处理器核心相应的软件队列中;S202.对各个所述硬件队列拥塞情况进行加权操作,并找出一个加权后拥塞状态最低的硬件队列;S203.将所述软件队列中的bio转换为request加入到找出的拥塞状态最低的所述硬件队列中,所述检测模块更新所述结构体数组;S204.所述硬件队列通过所述提交队列将所述request提交给所述存储器件;S205.所述硬件队列释放所述request空间,所述检测模块更新所述结构体数组。以上技术方案优选的,所述S202过程具体包括:a.以所述硬件队列的编号作为所述检测模块的结构体数组的数组下标;b.在所述结构体数组中找到所述硬件队列对应的结构体,在所述拥塞加权因子集合中找到所述硬件队列对应的拥塞加权因子;c.对所有硬件队列的相应的所述结构体与所述拥塞加权因子进行加权操作;d.比较加权后的所述硬件队列的拥塞情况,找到并选择拥塞情况最低的所述硬件队列。本专利技术具有的优点和积极效果是:本专利技术提供的基于Linux通用块层多队列的优化系统及方法是对Linux操作系统目前采用的块层多队列方案进行的进一步改进优化,通过改变软件队列与硬件队列映射关系为多对多,并在软件队列与硬件队列中间加入检测模块本文档来自技高网
...

【技术保护点】
1.一种基于Linux通用块层多队列的优化系统,包括:软件队列和硬件队列,其中所述软件队列与所述硬件队列的映射关系为多对多,所述软件队列与所述硬件队列间还设有检测模块,用于实时检测各个所述硬件队列上的拥塞情况。

【技术特征摘要】
1.一种基于Linux通用块层多队列的优化系统,包括:软件队列和硬件队列,其中所述软件队列与所述硬件队列的映射关系为多对多,所述软件队列与所述硬件队列间还设有检测模块,用于实时检测各个所述硬件队列上的拥塞情况。2.根据权利要求1所述的基于Linux通用块层多队列的优化系统,其特征在于:所述各个软件队列分别包括拥塞加权因子集合,用于表示所述软件队列与各个所述硬件队列的关联程度。3.一种基于Linux通用块层多队列的优化方法,包括:S1.Linux通用块层多队列初始化:初始化软件队列、硬件队列和检测模块,建立所述软件队列与所述硬件队列的映射关系;S2.Linux通用块层多队列请求处理:将上层应用发送的bio保存在相应的所述软件队列中,所述软件队列将所述bio转换为request加入到拥堵状态最低的所述硬件队列,所述硬件队列通过存储器件的提交队列提交给所述存储器件。4.根据权利要求3所述的基于Linux通用块层多队列的优化方法,其特征在于:所述S1过程具体包括:S101.配置用于并行接收中央处理器请求的所述软件队列;S102.配置用于并行处理所述请求的所述硬件队列;S103.配置各个所述硬件队列的队列深度,并分别给各个所述硬件队列预分配request空间;S104.建立所述软件队列与所述硬件队列的映射关系为多对多,在所述软件队列中确定拥塞加权因子集合;S105.初始化检测模块的结构体数组。5.根据权利要求4所述的基于Linux通用块层多队列的优化方法,其特征在于:所述S104过程具体包括:在描述所述软件队列的数据结构中加入用于描述硬件队列的数据结构链表与描述拥塞加权因子集合的数据结构链表,增加描述所述拥塞加权因子集合的数据结构。6.根据权利要求4所述的基于Lin...

【专利技术属性】
技术研发人员:胡海张铎孙立明刘云刘正元肖林逵魏立峰孔金珠吴庆波
申请(专利权)人:天津麒麟信息技术有限公司
类型:发明
国别省市:天津,12

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

1