一种基于申威平台的分布式块存储低延迟控制方法及系统与流程

文档序号:20077878发布日期:2020-03-10 09:59阅读:160来源:国知局
一种基于申威平台的分布式块存储低延迟控制方法及系统与流程

本发明涉及数据存储领域,尤其是一种基于申威平台的分布式块存储低延迟控制方法及系统。



背景技术:

随着基于国产处理器的服务器系统应用于各种云计算环境,国产处理器技术在通用技术市场的应用能力越来越重要。目前,国产处理器在技术支持能力总体上已经具有一定基础,但是与国际主流同类芯片技术还有不小的差距。

相比于x86处理器较为完善的生态环境,国产处理器对应用支持还存在明显不足,特别是如何通过技术优化,在国产芯片搭建分布式存储系统,能够为计算虚拟化提供稳定低io延迟的存储系统服务支撑,是快速推动国产处理器平台形成良性循环的应用生态关键手段。

申威处理器源自于dec的alpha21164,其研制得到了国家“核高基”专项资金支持。在国家“核高基”重大专项支持下、采用自主指令集,具体负责研发的单位是江南计算机所,且具有完全自主知识产权的处理器系列由其为计算基础的神威太湖之光超级计算机曾经多年蝉联全球最快的超级计算机。

在传统的io模型中,应用程序提交读写请求后睡眠,一旦io完成,中断就会将其唤醒,频繁的中断和唤醒带来大量的处理器损耗开销,在机械式硬盘时代,中断开销只占整个io时间的一个很小的百分比,因此给系统效率影响微乎其微。然而,在固态设备的时代,持续引入更低延迟的持久化设备,中断开销成为了整个io时间中不能被忽视的部分,这个问题在更低延迟的设备上只会越来越严重。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的是提供一种基于申威平台的分布式块存储低延迟控制方法,能够减少cpu额外损耗和消耗,来提升整体的io效率。

为此,本发明的第二个目的是提供一种基于申威平台的分布式块存储低延迟控制系统。

本发明所采用的技术方案是:

第一方面,本发明提供一种基于申威平台的分布式块存储低延迟控制方法,包括以下步骤:

通过uio技术进行数据包提升,具体是,将nvme固态硬盘设备的数据包提升至用户态,在所述用户态上读取所述nvme固态硬盘设备的数据包,并将所述数据包映射至所述用户态的进程空间;

调用轮询模式驱动以轮询方式处理所述数据包的发送和接收,所述nvme固态硬盘设备与所述轮询模式驱动一一对应;

所述用户态存储并发送所述数据包至申威平台存储核心进行解析与处理。

进一步地,所述数据包提升具体为:

通过uio技术拦截所述nvme固态硬盘设备的中断,重设所述nvme固态硬盘设备的中断行为;

通过dpdk技术在用户态读取所述nvme固态硬盘设备内的数据包;

通过uio技术进行申威处理器内核态注册,并将注册信息映射至所述用户态的进程空间。

进一步地,通过uio技术拦截所述nvme固态硬盘设备的中断,重设所述nvme固态硬盘设备的中断行为具体为:

所述用户态等待一个所述nvme固态硬盘设备的中断,并阻挡所述nvme固态硬盘设备的读写操作,当所述nvme固态硬盘设备产生中断时,所述nvme固态硬盘设备的读写操作立即返回;

为所述uio设备注册统一的中断处理函数,所述中断处理函数关联有uio监听器数据结构以重设中断行为以绕过所述申威处理器内核态将数据驱动提升至用户态。

进一步地,通过uio技术进行申威处理器内核态注册,并将注册信息映射至所述用户态的进程空间具体为:

将所述uio设备的uio信息结构体进行填充,所述uio信息结构体的注册信息包括:信息名称、内存大小、物理地址、偏移地址;

调用注册uio设备函数将所述uio信设备注册到所述申威处理器内核态中;读取所述uio信息结构体的注册信息并映射至所述用户态的进程空间。

进一步地,调用轮询模式驱动以轮询方式处理所述数据包的发送和接收具体为:

通过core绑定技术调用并执行所述轮询模式驱动;

根据所述轮询模式驱动提供应用编程接口,配置所述nvme固态硬盘设备及其数据包的传输队列;

根据所述轮询模式驱动控制处理器核心通过所述应用编程接口轮询一个或多个端口并将数据包发送至所述申威平台处理核心进行处理。

进一步地,所述用户态存储并发送所述数据包至申威平台存储核心进行解析与处理具体为:

读取所述nvme固态硬盘的数据包;

根据所述数据包的存储特性设置不同优先级的标签,根据所述标签的优先级按顺序预读并预先缓存所述数据包至所述申威平台存储核心;

根据自有协议规范解析所述数据包,并对所述数据包进行请求身份校验和/或crc校验和/或压缩和/或解密处理。

进一步地,所述存储特性包括:数据包在固定时间内被访问次数、更新次数以及被读取的时间。

进一步地,综上所述适用于申威处理器。

第二方面,本发明提供一种基于申威平台的分布式块存储低延迟控制系统,包括:

数据包提升模块,用于通过uio技术将nvee固态硬盘设备的数据包传输提升至用户态,所述数据包提升模块直接读取所述nvee固态硬盘设备的数据包并映射至用户态的进程空间;

轮询模块,用于调用轮询模式驱动以轮询方式处理所述nvee固态硬盘设备中数据包的发送与接收;

存储模块,用于读取所述nvee固态硬盘设备的数据包并存储至申威平台存储核心;

解析处理模块,用于对所述申威平台存储核心内的数据包进行解析和处理。

本发明的有益效果是:

本发明通过uio技术将nvme固态硬盘设备的数据驱动绕过申威处理器内核态提升至用户态并映射至用户态的进程空间,再采用轮询模式驱动对数据包的发送与接收进行轮询,最后在用户态进行数据包的存储、解析以及处理的技术手段,克服现有技术中存在由于中断导致系统效率减低、带来延迟的技术问题,实现了减少申威处理器额外损耗和消耗,来提升系统的申威平台的io效率。

附图说明

图1是一种基于申威平台的分布式存储低延迟控制系统实施例的模块框图;

图2是一种基于申威平台的分布式存储低延迟控制系统实施例中数据包提升模块的模块框图;

图3是一种基于申威平台的分布式存储低延迟控制系统实施例中轮询模块、存储模块以及解析处理模块的模块框图;

图4是一种基于申威平台的分布式存储低延迟控制方法实施例的流程图。

附图标记:10、数据包提升模块;11、拦截重设单元;111、拦截子单元;112、重设子单元;12、控制权转移单元;13、注册单元;131、填充子单元;132、注册子单元;133、映射子单元;20、轮询模块;21、绑定单元;22、应用编程接口配置单元;23、轮询单元;30、存储模块;31、读取单元;32、标签设置单元;33、存储单元;40、解析处理模块;41、解析单元;42、处理单元。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

参照图1,本发明实施例公开了一种基于申威平台的分布式存储低延迟控制系统,为了实现基于国产申威处理器平台实现的存储访问性需求,研究端到端的io全路径性能服务质量保证方法,来实现稳定、低io延迟的基于申威平台的分布式存储系统,io处理性能优化。基于申威平台的分布式存储低延迟控制系统包括:数据包提升模块10、轮询模块20、存储模块30以及解析处理模块40,数据包提升模块10用于通过uio技术将nvee固态硬盘设备的数据包传输提升至用户态,其中uio技术实施是基于申威平台实施。数据包提升模块10直接读取nvee固态硬盘设备的数据包并映射至用户态的进程空间,轮询模块20用于调用轮询模式驱动以轮询方式处理nvee固态硬盘设备中数据包的发送与接收,nvee固态硬盘设备与轮询模式驱动一一对应,存储模块30用于读取nvee固态硬盘设备的数据包并存储至申威平台存储核心。解析处理模块40用于对申威平台存储核心内的数据包进行解析和处理并将解析处理后的数据包以先进先出方式出队至nvee固态硬盘设备的存储空间。

uio技术是运行在用户空间的i/o技术。linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而uio技术则是将驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能。通过用户态用应用程序调用即可将nvee固态硬盘设备的驱动运行,从而节省申威处理器内核态驱动,进而提高nvee固态硬盘设备的驱动效率。

通过数据包提升模块10构建nvee固态硬盘设备和用户态的数据接收和发送框架,nvee固态硬盘设备内的数据包传输绕过申威处理器内核态直接上移至用户态,轮询模块20将nvee固态硬盘设备和用户态之间的数据包的接收与发送进行轮询,通过轮询以代替中断以可以在用户态做收发包处理,存储模块30在用户态直接读取nvee固态硬盘设备内的数据包并存储至申威平台存储核心,解析处理模块40接收到处理包进行解析与处理。综上,能够减少cpu额外损耗和消耗,从而提升整体的io效率,减少io延迟。

nvee固态硬盘设备的驱动主要任务有两个,第一是存储设备的内存二是处理设备产生的中断。对于第一任务,uio技术实现了映射可以处理物理内存,逻辑内存,虚拟内存,对于uio技术进行的设备驱动不需要考虑这些繁琐的细节。第二任务,对于设备的中断应答必须在内核空间进行,所以在内核空间有一部分代码用来应答中断和禁止中断,其余的工作全部留给用户空间处理。在本实施例对于设备的中断一方面是重设中断另一方面通过轮询方式来代替中断,从而加快nvee固态硬盘设备驱动的效率。

参照图1和图2,数据包提升模块10包括拦截重设单元11、控制权转移单元12以及注册单元13,拦截重设单元11用于通过uio技术拦截nvme固态硬盘设备的中断并重设nvme固态硬盘设备的中断行为从而绕过申威处理器内核态以将nvme固态硬盘设备的数据驱动提升至用户态运行。控制权转移单元12用于通过dpdk技术控制申威处理器内核态和用户态进行控制权转移,实现申威处理器内核态和用户态交互时内存不拷贝只做控制权转移,使得用户态直接读写nvme固态硬盘设备的内存缓冲以便于直接读取数据包。注册单元13通过uio技术完成在申威处理器内核态注册并将注册信息映射至用户态的进程空间,通过在申威处理器内核态注册以便于数据交互在用户态驱动处理。通过拦截重设单元11拦截nvme固态硬盘设备的中断并重设中断以绕过申威处理器内核态的数据处理流程,然后再通过控制权转移单元12将申威处理器内核态和用户态交互时数据不拷贝只是做控制权转移,以便于在用户态直接读写nvme固态硬盘设备的内存缓冲区,然后再通过注册单元13在申威处理器内核态注册以实现用户态直接驱动处理nvme固态硬盘设备发送的数据包,从而构建了用户态的直接进行数据发送和接收的框架,通过绕过申威处理器内核态直接通过用户态驱动数据包实现高效读取。

其中dpdk为数据平面开发套件,dpdk是由6wind、intel等多家公司开发,主要基于linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。

拦截重设单元11包括拦截子单元111与重设子单元112,uio技术由uio设备执行,在本实施例中拦截子单元111用于拦截nvme固态硬盘设备的中断并阻挡uio设备的读写操作,拦截子单元111在用户态等待nvee固态硬盘设备中断,通过阻塞uio设备的读写操作,当设备产生中断时,读写操作立即返回,返回也即是uio设备停止读写返回上一个操作。在其他实施列中拦截子单元111用于使用选择函数来等待中断的发生并拦截,选择函数有一个超时参数可以用来实现有限时间内等待中断。通过拦截子单元111对中断拦截以实现nvme固态硬盘设备可以跳过申威处理器内核态在用户态处理数据。

重设子单元112用于对uio设备注册统一的中断处理函数,且中断处理函数关联一个uio监听数据结构,在中断处理函数通过调用uio设备自己提供的中断处理函数,并调用了uio事件通知函数对uio设备的中断事件计数器增一,通知nvme固态硬盘设备的读写程序,以通知uio设备的读写操作“有数据可读”。由于每个uio设备的中断处理函数都是单独注册的,uio监听器数据结构主要有两个属性,这两个属性为:设备指针以及事件数量,其中设备指针为保存uio设备的指针便于访问,而事件数量为跟踪uio设备的中断事件计数器。uio监听数据结构用于跟踪每个uio设备的中断事件计数器值。在用户态执行数据驱动操作时,和uio设备关联的监听结构就被销毁。在uio设备注册时,会为uio设备注册一个通用的中断处理函数,在该函数中,会调用uio设备自身的中断处理函数,当中断发生时,uio事件通知函数被调用,uio事件通知函数被用来对nvme固态硬盘设备的中断事件计数器增一,并通知nvme固态硬盘设备有数据可读。通过重设子单元112重设中断并在用户态进行中断处理,以便于不影响数据正常的读写且能够提高数据的读写效率。

uio设备包括uio信息结构体,注册单元13包括:填充子单元131、注册子单元132以及映射子单元133,填充子单元131用于填充uio信息结构体的注册信息,其中填充的注册信息包括信息名称、内存大小、物理地址以及偏移地址,信息名称为uio设备名称。注册子单元132用于填充完毕后调用uio设备注册函数已将uio信息结构体注册到申威处理器内核态中,注册完成在注册信息存放在文件夹地址下,且文件夹下有uio信息结构体的注册信息,映射子单元133用于直接uio信息结构体的注册信息并映射至用户态的进程空间,以便于用户态直接操作nvme固态硬盘设备的内存空间实现数据包的发送和接收。

参照图3,轮询模块20包括:绑定单元21、应用编程接口配置单元22以及轮询单元23,绑定单元21用于将一个轮询模式驱动对应的nvme固态硬盘设备,轮询模式驱动通过申威平台的core绑定技术执行,轮询模式驱动即为即持续等待工作,而不是被派遣工作,依赖于内核的uio技术。应用程序编程配置单元用于根据轮询模式驱动提供应用编程接口配置于nvme固态硬盘设备以及其数据包的传输队列,其中传输队列为数据包发送和接收队列,轮询单元23用于在用户态调用轮询模式驱动并根据轮询模式驱动控制处理器核心通过应用编程接口轮询一个或多个nvme固态硬盘设备端口并将数据包发送至处理器核心进行处理。通过绑定单元21使用申威处理器核绑定技术对每个轮询模式驱动对应一个nvme固态硬盘设备,一个逻辑cpu绑定一个nvme固态硬盘设备,轮询模式驱动运行在逻辑cpu会持续有100%的利用率,轮询单元23根据轮询模式驱动不断地轮询nvme固态硬盘设备的数据报发送和接收,以通过轮询代替以往的中断,节省中断带来的延迟。

存储模块30包括:读取单元31、标签设置单元32以及存储单元33,读取单元31用于在用户态直接读取nvme固态硬盘设备发送的数据包,标签设置单元32用于根据数据包存储特性设置不同优先级的标签,且存储特性包括:数据包在固定时间内的被访问次数、更新次数以及被访问的时间。存储单元33根据标签的优先级顺序预读并预先缓存数据包至申威平台存储核心。在本实施例中对于读取次数从多到少、访问热度从强到弱的设置不同的优先级,对于优先级的数据包存储单元33会预先存储,有利于快速存储到多次访问、常使用的数据包。

解析处理模块40包括解析单元41以及处理单元42,解析单元41接收来自于存储单元33存储的数据包并对数据包进行解析,处理单元42对解析后的数据包进行请求身份校验、crc校验、压缩、解密处理,以完成数据的处理。

综上,通过数据包提升模块10建立nvme固态硬盘设备和用户态的数据传输架构,且轮询模块20对nvme固态硬盘设备向用户态发送和接收的数据包进行轮询,以通过轮询模式代替中断模式,存储模块30直接从nvme固态硬盘设备内存空间读取数据包并在用户态存储,解析处理模块40将存储的数据包进行解析处理,从而实现绕过申威处理器内核态将数据处理在用户态进行,减少中断带来的延迟,从而提升设备端口驱动的效率。

参照图4,实施例二:本发明实施例公开了一种基于申威平台的分布式块存储低延迟控制方法,该方法通过申威平台进行处理包括以下步骤:

在进行nvme固态硬盘设备驱动处理之前,需要通过识别nvme固态硬盘设备的分类符以判断是否为nvme固态硬盘设备;

分类符为nvme固态硬盘设备的说明书的定义,通过对nvme固态硬盘设备的分类符进行识别以判断是否为nvme固态硬盘设备,从而执行下一步操作,若通过分类没有识别当nvme固态硬盘设备则停止执行下一步。

通过uio技术进行数据包提升,具体是,将nvme固态硬盘设备的数据包提升至用户态,在用户态上读取nvme固态硬盘设备的数据包,并将数据包映射至用户态的进程空间;

一般情况在用户态需要等待一个nvme固态硬盘设备的中断,然后阻挡nvme固态硬盘设备的读写操作当nvme固态硬盘设备产生中断时,读写操作立即返回,其中返回为uio设备的读写操作停止并返回上一个操作以达到中断的拦截。通过中断拦截可以绕过申威处理器内核态在用户态进行数据处理。其他实施例中,对中断的拦截可以通过选择函数来等待中断的发生。选择函数有一个超时参数可以用来实现有限时间内等待中断,以便于在设定时间内等待中断到来后进行拦截,以消除中断。由于中断需要在申威处理器内核态进行处理,则通过中断拦截以节省申威处理器内核态处理。从而提升nvme固态硬盘设备的端口驱动效率。

数据包提升具体为:

通过uio技术拦截nvme固态硬盘设备的中断,重设nvme固态硬盘设备的中断行为,且具体为:

用户态等待一个nvme固态硬盘设备的中断,并阻挡nvme固态硬盘设备的读写操作,当nvme固态硬盘设备产生中断时,nvme固态硬盘设备的读写操作立即返回;

为uio设备注册统一的中断处理函数,中断处理函数关联有uio监听器数据结构以重设中断行为以绕过申威处理器内核态将数据驱动提升至用户态。

在uio设备注册时会为uio设备注册一个通用的终端处理函数,在该函数中,调用了uio设备自己提供的中断处理函数,并调用了事件通知函数对uio设备的中断事件计数增一,通知uio设备的读写操作“有数据可读”,其中每个uio设备的中断处理函数都是单独注册的。对于每一个注册的uio设备都关联一个uio监听数据结构,其中uio监听数据结构有两个属性,两个属性为设备指针和事件数量,设备指针为保存uio设备的指针,便于nvme固态硬盘设备的内存空间访问,事件数量为跟踪uio设备的中断事件计数器。通过拦截中断、并重设中断处理函数从而绕过申威内核太的数据处理流程。

通过dpdk技术在用户态读取nvme固态硬盘设备内的数据包,通过在申威平台实现dpdk技术架构,dpdk技术实现内核旁路技术,从而使数据从nvme固态硬盘设备输出,然后通过轮询模式驱动进行轮询然后再通过dpdk基础库,最后是数据存储处理业务,使得用户态直接读写nvme固态硬盘设备的内存缓冲区,完成了nvme固态硬盘设备的数据基本零拷贝从nvme固态硬盘设备到数据存储处理,从而实现数据高效读取。

通过uio技术进行申威处理器内核态注册,并将注册信息映射至用户态的进程空间。

通过uio技术进行申威处理器内核态注册,并将注册信息映射至用户态的进程空间具体为:

将uio设备的uio信息结构体进行填充,uio信息结构体的注册信息包括:信息名称、内存大小、物理地址、偏移地址;

调用注册uio设备函数将uio信设备注册到申威处理器内核态中;读取uio信息结构体的注册信息并映射至用户态的进程空间。

通过调用申威平台的内核提供的uio应用编程接口进行注册,首先需要填充uio设备的结构体信息,结构体信息填充完后调用注册uio设备函数将uio信息结构体注册到申威处理器内核态,其中注册uio设备函数为uio设备内存储的注册函数,通过调用uio设备的注册函数将uio设备注册到申威处理器内核态中。注册后,在uio设备的存储文件下会有刚才填充的结构体信息,该uio设备的结构体信息都可以直接读出并映射至用户态的进程空间,通过uio设备的结构体信息映射到用户态的进程空间,以便于用户态可以操作nvme固态硬盘设备的内存空间。

调用轮询模式驱动以轮询方式处理数据包的发送和接收,具体方式为:

通过core绑定技术调用并执行轮询模式驱动;

根据轮询模式驱动提供应用编程接口,配置nvme固态硬盘设备及其数据包的传输队列;

根据轮询模式驱动控制处理器核心通过应用编程接口轮询一个或多个端口并将数据包发送至申威平台处理核心进行处理。nvme固态硬盘设备与轮询模式驱动一一对应。

通过nvme固态硬盘设备对应一个轮询模式驱动,运行在轮询模式驱动下的core会处于用户态cpu100%的状态,而且配置应用编程接口于nvme固态硬盘设备能够同时直接访问nvme固态硬盘设备的数据包发送和接收,实现了完全无中断的快速数据处理。同时通过应用编程接口对数据包的发送和接收进行轮询以便于防止数据包传输混乱。

用户态存储并发送数据包至申威平台存储核心进行解析与处理。

读取nvme固态硬盘的数据包;

根据数据包的存储特性设置不同优先级的标签,根据标签的优先级按顺序预读并预先缓存数据包至申威平台存储核心,存储特性包括:数据包在固定时间内的被访问次数、更新次数以及被读取的时间;通过数据包的固定时间内的被访问次数、更新次数以及读取的时间以判断当前用户态已经多次处理的数据包,优先对优先级的数据包进行存储,以便于多次为访问、更新以及读取相近的数据包优先存储,以便于用户态处理更加符合nvme固态硬盘的端口驱动要求。

根据自有协议规范解析数据包,并对数据包进行请求身份校验和/或crc校验和/或压缩和/或解密处理。

申威平台存储核心中设置存储处理程序,以对存储的数据包根据自由协议规范解析数据包并对数据包进行请求身份验证和/或crc验证和/或压缩和/或解密等操作。同时解析后的数据以零拷贝的方式构建环形先出先入且无锁队列,以提供存储处理程序进行处理,数据出队后拷贝一次后释放至nvme固态硬盘设备的内存区域。

综上,通过构建用户态nvme固态硬盘设备数据包的接收和发送框架,然后绕过申威处理器内核态直接在用户态读取nvme固态硬盘设备的数据包,同时通过轮询模式驱动对nvme固态硬盘设备的数据包发送和接收进行轮询,从而实现减少cpu额外损耗和消耗,来提升申威平台的io效率。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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