一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

网络存储业务的描述符队列和内存优化方法、系统及应用与流程

2021-10-24 06:16:00 来源:中国专利 TAG:网络存储 队列 描述 业务 内存优化


1.本发明属于网络存储技术领域,尤其涉及一种网络存储业务的描述符队列和内存优化方法、系统及应用。


背景技术:

2.目前,在以太网广泛使用的今天,网络文件传输并存储是非常常见的一种服务,普通服务器将网络传输与存储分成两个步骤进行。然而进程间切换会导致更多的cpu开销和数据拷贝,虽然存在一些用户态驱动旨在降低数据的拷贝,然而仍然存在进程间通信等事件会增大cpu的开销或等待时间。
3.在现有的网卡架构中,多采用多队列技术和描述符来完成数据包的传输和发送,其中队列为内存中物理地址连续的一块环形缓冲区,用于容纳描述符,描述符指向了内存中真实有效的一块数据的起始地址和长度。此外,还包括指示网卡发送或者接收的必要信息;在现有的存储设备架构中,存在诸如openchanel等形式的多队列存储描述符队列,其队列也为内存中物理地址连续的一块环形缓冲区,用于容纳描述符,描述符指向了内存中真实有效的一块数据的起始地址和长度,此外,还包含了指示存储器读取或者写入的必要信息。
4.但是,现有网络传输的队列结构与存储器类似,却没有结合应用,在面对网络存储业务时不能发挥最大效率。同时,现有技术将网络业务与存储业务分离后,至少需要两个线程进行数据处理,容易导致更多的进程间通知时件和等待时间,增大cpu开销。因此,亟需一种新的网络存储业务的描述符队列和内存优化方法,以弥补现有技术的缺陷。
5.通过上述分析,现有技术存在的问题及缺陷为:
6.(1)现有网络传输的队列结构与存储器类似,却没有结合应用,在面对网络存储业务时不能发挥最大效率,网络传输控制系统与存储器控制系统分属于不同的子系统,需要进行线程间通信,导致较大的cpu开销,并且在部分场景下还涉及数据的copy。
7.(2)将网络业务与存储业务分离后,至少需要两个线程进行数据处理,容易导致更多的进程间通知时件和等待时间,增大cpu开销。
8.解决以上问题及缺陷的难度为:新的方法需要将网络业务描述符队列和存储业务描述符队列融合起来,尽量使用硬件完成描述符的调制解调以降低cpu开销。
9.解决以上问题及缺陷的意义为:本发明提高了网络存储业务的服务性能,降低了cpu负载,可以在相同处理能力的cpu上提供更强的网络存储业务能力。


技术实现要素:

10.针对现有技术存在的问题,本发明提供了一种网络存储业务的描述符队列和内存优化方法、系统及应用。
11.本发明是这样实现的,一种网络存储业务的描述符队列和内存优化方法,所述网络存储业务的描述符队列和内存优化方法包括:在网络数据读取方向:将网卡的发送描述
符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
12.进一步,在网络数据读取方向,所述网络存储业务的描述符队列和内存优化方法包括:
13.(1)主机创建描述符环形缓冲区并使用描述符填充描述符缓冲区,所述描述符指向主存上分配好的内存空间做为数据buffer使用,主机将所述描述符环形缓冲区的地址同时通知给存储器设备的读取通道和网卡设备的发送通道,即存储器设备的读取通道和网卡设备的发送通道共用一个描述符环形缓冲区。
14.(2)主机将可用的描述符通过配置寄存器的方式通知存储器设备,存储设备检查可用的描述符个数,并通过dma将描述符从描述符环形队列中搬移到存储器设备;存储器设备提取出描述符中所包含的buffer的地址、长度信息以及所要读取数据在存储器上的地址信息,并使用dma的方式将数据搬移到内存中的缓冲区。
15.(3)存储器设备将数据搬移的执行状态写回到描述符队列中对应描述符的状态字段中,并以点对点p2p操作的方式通知网卡在发送描述符环形缓冲区上有新的描述符可用。
16.(4)网卡设备检查可用的发送描述符个数,并读取描述符环形缓冲区;解析描述符并提取描述符中的buffer地址、长度和存储器设备搬移数据的状态信息,并使用dma的方式从主存的buffer中读取数据,最终数据通过网络发送。
17.本发明通过这些步骤,将本来在cpu上做的一部分工作卸载到硬件上执行,即将控制面留在cpu上执行,而数据面卸载到硬件dma执行。
18.进一步,步骤(1)中,所述存储器设备指的是ssd或者其他非易失性存储设备而非主存。
19.进一步,步骤(1)中,所述描述符包括三个部分:需要读取的存储器文件句柄、指向主存buffer的指针和存储器执行状态。
20.其中,所述描述符环形缓冲区采用多队列的形式管理并支持通过存储设备的读取通道和网卡的发送通道共用缓冲区传递控制信息,包括:
21.驱动负责维护描述符缓冲区的生产者指针,而存储器做为使用者维护消费者者指针,驱动没生成新的读取请求后,调制成描述符置入描述符环形缓冲区并更新生产者指针,存储器检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符后,使用硬件更新网卡的消费者指针,以使得该描述符被网卡处理。
22.进一步,在网络数据存储方向,所述网络存储业务的描述符队列和内存优化方法包括:
23.(1)主机创建描述符环形缓冲区并使用描述符填充描述符缓冲区,所述描述符指向主存上分配好的内存空间做为数据buffer使用,主机将所述描述符环形缓冲区的地址同时通知给网卡设备的接收通道和存储器设备的存储通道,即存储器设备的存储通道和网卡设备的接收通道共用一个描述符环形缓冲区。
24.(2)网卡将描述符预读取到网卡的接收通道并提取出描述符中所包含的buffer的地址、长度信息以及所要存储数据在存储器上的地址信息,然后等待存储业务的接收,当从远端接收到存储业务数据时,将数据以dma的方式搬移到描述符指向的buffer缓冲区。
25.(3)网卡设备将网络数据的接收信息和数据搬移状态写回到描述符的状态字段,
并通过p2p的方式通知存储器设备存在可用描述符。
26.(4)存储器设备读取可用的描述符并按序进行解析后,使用dma的方式将数据从buffer缓冲区搬移到存储器设备并存储。
27.网络存储应用分为两个方向,本发明在两个方向上都使用了这个机制,是比较相似的,但是数据流方向相反。
28.进一步,步骤(1)中,所述描述符包括三个部分:需要存储的存储器文件句柄、指向主存buffer的指针和网卡执行状态。
29.其中,所述描述符环形缓冲区采用队列的形式管理并支持通过存储设备的存储通道和网卡的接收通道共用缓冲区来传递控制信息,包括:
30.驱动负责维护描述符缓冲区的生产者指针,而网卡做为使用者维护消费者指针,驱动每生成新的存储请求后,调制成描述符置入描述符环形缓冲区并更新生产者指针,网卡设备检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符后,使用硬件更新存储器的消费者指针,以使得该描述符被存储器处理。
31.本发明的另一目的在于提供一种实施所述网络存储业务的描述符队列和内存优化方法的针对网络存储业务优化系统内存读写的控制方法,所述针对网络存储业务优化系统内存读写的控制方法包括:
32.(1)内存池开辟:本机制仅在系统初始化时执行且执行一次,用于开辟与描述符数目一致多个的内存块,所述内存块用于和描述符队列中的描述符一一绑定,即描述符中的物理地址指向对应的内存块,且描述符中的状态信息指示该内存块中数据的填充信息。
33.(2)内存池循环使用:由于描述符队列是环形队列,描述符的地址将会被循环填充数据、读取描述符,所述描述符包含真实数据的信息,即buffer的地址和状态,故buffer也在被循环使用,做为中间容器从网卡和存储器搬移数据。
34.(3)内存池回收:当系统关闭或存储器业务关闭时,通过回收描述符指向的buffer来释放系统内存。
35.本发明的另一目的在于提供一种应用所述网络存储业务的描述符队列和内存优化方法的网络存储业务的描述符队列和内存优化系统,所述网络存储业务的描述符队列和内存优化系统包括:
36.网络数据读取模块,用于在网络数据读取方向,将网卡的发送描述符队列与存储器的读取描述符队列相结合;
37.网络数据存储模块,用于在网络数据存储方向,将网卡的接收描述符队列与存储器的写入描述符队列相结合。
38.本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
39.在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
40.本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的网络存储业务的描述符队列和内存优化系统。
41.结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的网
络存储业务的描述符队列和内存优化方法,通过系统中的内存buffer做为中间容器,使用双向dma完成了cpu的零拷贝数据传输;网卡与存储器共用描述符环队列,并使用描述符传递状态信息和控制指令,进一步的降低了cpu的开销,这使得其特别适合于高性能网络存储业务场景。
42.本发明通过内存池的开辟、循环使用和回收机制,进一步的降低了网络存储业务在运行过程中带来了系统内存开辟、回收开销,是得之前需要多次开辟、回收的内存开销降低为1次。本发明提高了网络存储业务的服务性能,降低了cpu负载,可以在相同处理能力的cpu上提供更强的网络存储业务能力。
附图说明
43.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
44.图1是本发明实施例提供的网络存储业务的描述符队列和内存优化方法流程图。
45.图2是本发明实施例提供的在网络数据读取方向的描述符与队列缓冲区的示意图。
46.图3是本发明实施例提供的在网络数据存储方向的描述符与队列缓冲区的示意图。
具体实施方式
47.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
48.针对现有技术存在的问题,本发明提供了一种网络存储业务的描述符队列和内存优化方法、系统及应用,下面结合附图对本发明作详细的描述。
49.如图1所示,本发明实施例提供的网络存储业务的描述符队列和内存优化方法包括以下步骤:
50.s101,在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;
51.s102,在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
52.本发明实施例提供的网络存储业务的描述符队列和内存优化系统包括:
53.网络数据读取模块,用于在网络数据读取方向,将网卡的发送描述符队列与存储器的读取描述符队列相结合;
54.网络数据存储模块,用于在网络数据存储方向,将网卡的接收描述符队列与存储器的写入描述符队列相结合。
55.下面结合具体实施例对本发明的技术方案作进一步描述。
56.实施例1
57.针对现有技术存在的问题,本发明提供了一种将网络传输业务与存储业务相结合的方法来优化网络存储业务。具体涉及一种针对网络存储业务中描述符队列的优化方法。
58.本发明是这样的,一种针对网络存储业务的描述符队列优化方法,包括:
59.在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
60.在网络数据读取方向:
61.第一步,主机创建一个描述符环形缓冲区并使用描述符填充描述符缓冲区,这些描述符指向了主存上分配好的内存空间做为数据buffer使用,主机将这个描述符环形缓冲区的地址同时通知给存储器设备(本发明中的存储器设备指的是ssd或者其他非易失性存储设备而非主存)的读取通道和网卡设备的发送通道,即存储器设备的读取通道和网卡设备的发送通道共用一个描述符环形缓冲区。
62.第二步,主机将可用的描述符通过配置寄存器的方式通知存储器设备,存储设备检查可用的描述符个数,并通过dma将描述符从描述符环形队列中搬移到存储器设备,而后存储器设备提取出描述符中所包含的buffer的地址、长度信息以及所要读取数据在存储器上的地址信息,然后使用dma的方式将数据搬移到内存中的缓冲区。
63.第三步,存储器设备将数据搬移的执行状态写回到描述符队列中对应描述符的状态字段中,并以p2p(点对点)操作的方式通知网卡在发送描述符环形缓冲区上有新的描述符可用。
64.第四步,网卡设备检查可用的发送描述符个数,并读取描述符环形缓冲区,而后解析描述符并提取描述符中的buffer地址、长度和存储器设备搬移数据的状态信息,并使用dma的方式从主存的buffer中读取数据,最终数据通过网络发送。
65.进一步的,所述描述符环形缓冲区采用多队列的形式管理并支持通过存储设备的读取通道和网卡的发送通道共用缓冲区来传递控制信息,具体实施方式包括:
66.驱动负责维护描述符缓冲区的生产者指针,而存储器做为使用者维护消费者者指针,驱动没生成新的读取请求后,将其调制成描述符置入描述符环形缓冲区并更新生产者指针,存储器检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符,随后,使用硬件更新网卡的消费者指针,以使得该描述符被网卡处理。
67.上述描述符包含三个部分:需要读取的存储器文件句柄、指向主存buffer的指针和存储器执行状态。描述符与队列缓冲区见图2。
68.在网络数据存储方向:
69.第一步,主机创建一个描述符环形缓冲区并使用描述符填充描述符缓冲区,这些描述符指向了主存上分配好的内存空间做为数据buffer使用,主机将这个描述符环形缓冲区的地址同时通知给网卡设备的接收通道和存储器设备的存储通道,即存储器设备的存储通道和网卡设备的接收通道共用一个描述符环形缓冲区。
70.第二步,网卡将描述符预读取到网卡的接收通道并提取出描述符中所包含的buffer的地址、长度信息以及所要存储数据在存储器上的地址信息,然后等待存储业务的接收,当从远端接收到存储业务数据时,将数据以dma的方式搬移到描述符指向的buffer缓冲区。
71.第三步,网卡设备将网络数据的接收信息和数据搬移状态写回到描述符的状态字段。并通过p2p的方式通知存储器设备存在可用描述符。
72.第四步,存储器设备读取可用的描述符并按序进行解析,之后使用dma的方式将数据从buffer缓冲区搬移到存储器设备并存储。
73.进一步的,所述描述符环形缓冲区采用队列的形式管理并支持通过存储设备的存储通道和网卡的接收通道共用缓冲区来传递控制信息,具体实施方式包括:
74.驱动负责维护描述符缓冲区的生产者指针,而网卡做为使用者维护消费者指针,驱动每生成新的存储请求后,将其调制成描述符置入描述符环形缓冲区并更新生产者指针,网卡设备检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符,随后,使用硬件更新存储器的消费者指针,以使得该描述符被存储器处理。
75.上述描述符包含三个部分:需要存储的存储器文件句柄、指向主存buffer的指针和网卡执行状态。描述符与队列缓冲区见图3。
76.本发明的另一目的在于提供一种实施所述优化方法的针对网络存储业务优化系统内存读写的控制方法,包括:
77.内存池开辟:本机制仅在系统初始化时执行且执行一次,用于开辟与描述符数目一致多个的内存块,这些内存块用于和描述符队列中的描述符一一绑定,即描述符中的物理地址指向了对应的内存块,且描述符中的状态信息指示了该内存块中数据的填充信息。
78.内存池循环使用:由于描述符队列是环形队列,描述符的地址将会被循环填充数据、读取描述符,这些描述符包含了真实数据的信息,即buffer的地址和状态,因此buffer也在被循环使用,做为中间容器从网卡和存储器搬移数据。
79.内存池回收:当系统关闭或存储器业务关闭时,通过回收描述符指向的buffer来释放系统内存。
80.实施例2
81.以网络监控业务为例,服务器需要从网络摄像头不断接收视频数据,并存储到本地的存储器。视频数据从远程网络接入到服务器,并进行存储。本发明针对网络存储的优化包括:
82.s101,在系统初始化时,分配存储描述符环形队列,并分配给网卡和存储器设备共享该描述符队列,以供网卡传递状态信息和控制指令到存储器设备;
83.s102,在系统初始化时,分配内存池,并填充到对应描述符环形队列的地址,以使得这些内存做为中间容器从网卡向存储器搬移数据。
84.所述步骤s101具体包括:
85.step1:主机在内存中开辟一块物理地址连续的内存块做为描述符环形缓冲区。这个环形缓冲区可以存在多个用于对应硬件上的多通道设备。在初始化内存块操作完成,主机将内存缓存区的基地址和长度配置到网卡和存储器设备的寄存器以告知其描述符环形缓冲区的信息。
86.step2:当网络摄像头接入到服务器后,就会定时向服务器发送数据帧,此时主机需要将网络数据存储。
87.step3:主机为存储器设备分配文件句柄,即获取存储器设备的写入地址,而后将
该信息和控制信息填充到描述符,并通过更新生产者指针通知网卡有新的描述符可用。
88.step4:网卡通过dma方式读取描述符并解析出可用buffer地址,当接收到数据后即可采用dma方式将数据搬移到buffer中,并以p2p方式通知存储器,buffer存在数据。
89.step5:存储器从对应的描述符队列中获取描述符,解析其状态信息和控制指令,而后将数据从buffer中搬移到存储器中,而后将状态写回到描述符以供主机循环使用。
90.所述步骤s102具体包括:
91.step1:主机在内存中开辟描述符缓冲区大小时会分配好一个队列中所能容纳的描述符个数n,而后主机需要开辟n个数据buffer,这些buffer与描述符一一绑定。
92.step2:主机将各个buffer的物理地址和长度填充到描述符的对应位置,此后,buffer就可以随着描述符中状态信息的改变循环使用。
93.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
94.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜