CN113535395A - 网络存储业务的描述符队列和内存优化方法、系统及应用 - Google Patents
网络存储业务的描述符队列和内存优化方法、系统及应用 Download PDFInfo
- Publication number
- CN113535395A CN113535395A CN202110793832.3A CN202110793832A CN113535395A CN 113535395 A CN113535395 A CN 113535395A CN 202110793832 A CN202110793832 A CN 202110793832A CN 113535395 A CN113535395 A CN 113535395A
- Authority
- CN
- China
- Prior art keywords
- descriptor
- memory
- network
- queue
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 180
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000005457 optimization Methods 0.000 title claims abstract description 34
- 239000000872 buffer Substances 0.000 claims abstract description 116
- 238000013500 data storage Methods 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 16
- 230000005540 biological transmission Effects 0.000 claims abstract description 14
- 239000000284 extract Substances 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 5
- 238000007726 management method Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 230000002457 bidirectional effect Effects 0.000 abstract description 2
- 230000007547 defect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/282—Cycle stealing DMA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明属于网络存储技术领域,公开了一种网络存储业务的描述符队列和内存优化方法、系统及应用,所述网络存储业务的描述符队列和内存优化方法包括:在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。本发明通过系统中的内存Buffer做为中间容器,使用双向DMA完成CPU的零拷贝数据传输;网卡与存储器共用描述符环队列,并使用描述符传递状态信息和控制指令,降低CPU的开销,使得其特别适合于高性能网络存储业务场景。本发明提高网络存储业务的服务性能,降低CPU负载,在相同处理能力的CPU上提供更强的网络存储业务能力。
Description
技术领域
本发明属于网络存储技术领域,尤其涉及一种网络存储业务的描述符队列和内存优化方法、系统及应用。
背景技术
目前,在以太网广泛使用的今天,网络文件传输并存储是非常常见的一种服务,普通服务器将网络传输与存储分成两个步骤进行。然而进程间切换会导致更多的CPU开销和数据拷贝,虽然存在一些用户态驱动旨在降低数据的拷贝,然而仍然存在进程间通信等事件会增大CPU的开销或等待时间。
在现有的网卡架构中,多采用多队列技术和描述符来完成数据包的传输和发送,其中队列为内存中物理地址连续的一块环形缓冲区,用于容纳描述符,描述符指向了内存中真实有效的一块数据的起始地址和长度。此外,还包括指示网卡发送或者接收的必要信息;在现有的存储设备架构中,存在诸如OpenChanel等形式的多队列存储描述符队列,其队列也为内存中物理地址连续的一块环形缓冲区,用于容纳描述符,描述符指向了内存中真实有效的一块数据的起始地址和长度,此外,还包含了指示存储器读取或者写入的必要信息。
但是,现有网络传输的队列结构与存储器类似,却没有结合应用,在面对网络存储业务时不能发挥最大效率。同时,现有技术将网络业务与存储业务分离后,至少需要两个线程进行数据处理,容易导致更多的进程间通知时件和等待时间,增大CPU开销。因此,亟需一种新的网络存储业务的描述符队列和内存优化方法,以弥补现有技术的缺陷。
通过上述分析,现有技术存在的问题及缺陷为:
(1)现有网络传输的队列结构与存储器类似,却没有结合应用,在面对网络存储业务时不能发挥最大效率,网络传输控制系统与存储器控制系统分属于不同的子系统,需要进行线程间通信,导致较大的CPU开销,并且在部分场景下还涉及数据的Copy。
(2)将网络业务与存储业务分离后,至少需要两个线程进行数据处理,容易导致更多的进程间通知时件和等待时间,增大CPU开销。
解决以上问题及缺陷的难度为:新的方法需要将网络业务描述符队列和存储业务描述符队列融合起来,尽量使用硬件完成描述符的调制解调以降低CPU开销。
解决以上问题及缺陷的意义为:本发明提高了网络存储业务的服务性能,降低了CPU负载,可以在相同处理能力的CPU上提供更强的网络存储业务能力。
发明内容
针对现有技术存在的问题,本发明提供了一种网络存储业务的描述符队列和内存优化方法、系统及应用。
本发明是这样实现的,一种网络存储业务的描述符队列和内存优化方法,所述网络存储业务的描述符队列和内存优化方法包括:在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
进一步,在网络数据读取方向,所述网络存储业务的描述符队列和内存优化方法包括:
(1)主机创建描述符环形缓冲区并使用描述符填充描述符缓冲区,所述描述符指向主存上分配好的内存空间做为数据Buffer使用,主机将所述描述符环形缓冲区的地址同时通知给存储器设备的读取通道和网卡设备的发送通道,即存储器设备的读取通道和网卡设备的发送通道共用一个描述符环形缓冲区。
(2)主机将可用的描述符通过配置寄存器的方式通知存储器设备,存储设备检查可用的描述符个数,并通过DMA将描述符从描述符环形队列中搬移到存储器设备;存储器设备提取出描述符中所包含的Buffer的地址、长度信息以及所要读取数据在存储器上的地址信息,并使用DMA的方式将数据搬移到内存中的缓冲区。
(3)存储器设备将数据搬移的执行状态写回到描述符队列中对应描述符的状态字段中,并以点对点P2P操作的方式通知网卡在发送描述符环形缓冲区上有新的描述符可用。
(4)网卡设备检查可用的发送描述符个数,并读取描述符环形缓冲区;解析描述符并提取描述符中的Buffer地址、长度和存储器设备搬移数据的状态信息,并使用DMA的方式从主存的Buffer中读取数据,最终数据通过网络发送。
本发明通过这些步骤,将本来在CPU上做的一部分工作卸载到硬件上执行,即将控制面留在CPU上执行,而数据面卸载到硬件DMA执行。
进一步,步骤(1)中,所述存储器设备指的是SSD或者其他非易失性存储设备而非主存。
进一步,步骤(1)中,所述描述符包括三个部分:需要读取的存储器文件句柄、指向主存Buffer的指针和存储器执行状态。
其中,所述描述符环形缓冲区采用多队列的形式管理并支持通过存储设备的读取通道和网卡的发送通道共用缓冲区传递控制信息,包括:
驱动负责维护描述符缓冲区的生产者指针,而存储器做为使用者维护消费者者指针,驱动没生成新的读取请求后,调制成描述符置入描述符环形缓冲区并更新生产者指针,存储器检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符后,使用硬件更新网卡的消费者指针,以使得该描述符被网卡处理。
进一步,在网络数据存储方向,所述网络存储业务的描述符队列和内存优化方法包括:
(1)主机创建描述符环形缓冲区并使用描述符填充描述符缓冲区,所述描述符指向主存上分配好的内存空间做为数据Buffer使用,主机将所述描述符环形缓冲区的地址同时通知给网卡设备的接收通道和存储器设备的存储通道,即存储器设备的存储通道和网卡设备的接收通道共用一个描述符环形缓冲区。
(2)网卡将描述符预读取到网卡的接收通道并提取出描述符中所包含的Buffer的地址、长度信息以及所要存储数据在存储器上的地址信息,然后等待存储业务的接收,当从远端接收到存储业务数据时,将数据以DMA的方式搬移到描述符指向的Buffer缓冲区。
(3)网卡设备将网络数据的接收信息和数据搬移状态写回到描述符的状态字段,并通过P2P的方式通知存储器设备存在可用描述符。
(4)存储器设备读取可用的描述符并按序进行解析后,使用DMA的方式将数据从Buffer缓冲区搬移到存储器设备并存储。
网络存储应用分为两个方向,本发明在两个方向上都使用了这个机制,是比较相似的,但是数据流方向相反。
进一步,步骤(1)中,所述描述符包括三个部分:需要存储的存储器文件句柄、指向主存Buffer的指针和网卡执行状态。
其中,所述描述符环形缓冲区采用队列的形式管理并支持通过存储设备的存储通道和网卡的接收通道共用缓冲区来传递控制信息,包括:
驱动负责维护描述符缓冲区的生产者指针,而网卡做为使用者维护消费者指针,驱动每生成新的存储请求后,调制成描述符置入描述符环形缓冲区并更新生产者指针,网卡设备检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符后,使用硬件更新存储器的消费者指针,以使得该描述符被存储器处理。
本发明的另一目的在于提供一种实施所述网络存储业务的描述符队列和内存优化方法的针对网络存储业务优化系统内存读写的控制方法,所述针对网络存储业务优化系统内存读写的控制方法包括:
(1)内存池开辟:本机制仅在系统初始化时执行且执行一次,用于开辟与描述符数目一致多个的内存块,所述内存块用于和描述符队列中的描述符一一绑定,即描述符中的物理地址指向对应的内存块,且描述符中的状态信息指示该内存块中数据的填充信息。
(2)内存池循环使用:由于描述符队列是环形队列,描述符的地址将会被循环填充数据、读取描述符,所述描述符包含真实数据的信息,即Buffer的地址和状态,故Buffer也在被循环使用,做为中间容器从网卡和存储器搬移数据。
(3)内存池回收:当系统关闭或存储器业务关闭时,通过回收描述符指向的Buffer来释放系统内存。
本发明的另一目的在于提供一种应用所述网络存储业务的描述符队列和内存优化方法的网络存储业务的描述符队列和内存优化系统,所述网络存储业务的描述符队列和内存优化系统包括:
网络数据读取模块,用于在网络数据读取方向,将网卡的发送描述符队列与存储器的读取描述符队列相结合;
网络数据存储模块,用于在网络数据存储方向,将网卡的接收描述符队列与存储器的写入描述符队列相结合。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的网络存储业务的描述符队列和内存优化系统。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的网络存储业务的描述符队列和内存优化方法,通过系统中的内存Buffer做为中间容器,使用双向DMA完成了CPU的零拷贝数据传输;网卡与存储器共用描述符环队列,并使用描述符传递状态信息和控制指令,进一步的降低了CPU的开销,这使得其特别适合于高性能网络存储业务场景。
本发明通过内存池的开辟、循环使用和回收机制,进一步的降低了网络存储业务在运行过程中带来了系统内存开辟、回收开销,是得之前需要多次开辟、回收的内存开销降低为1次。本发明提高了网络存储业务的服务性能,降低了CPU负载,可以在相同处理能力的CPU上提供更强的网络存储业务能力。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的网络存储业务的描述符队列和内存优化方法流程图。
图2是本发明实施例提供的在网络数据读取方向的描述符与队列缓冲区的示意图。
图3是本发明实施例提供的在网络数据存储方向的描述符与队列缓冲区的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种网络存储业务的描述符队列和内存优化方法、系统及应用,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的网络存储业务的描述符队列和内存优化方法包括以下步骤:
S101,在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;
S102,在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
本发明实施例提供的网络存储业务的描述符队列和内存优化系统包括:
网络数据读取模块,用于在网络数据读取方向,将网卡的发送描述符队列与存储器的读取描述符队列相结合;
网络数据存储模块,用于在网络数据存储方向,将网卡的接收描述符队列与存储器的写入描述符队列相结合。
下面结合具体实施例对本发明的技术方案作进一步描述。
实施例1
针对现有技术存在的问题,本发明提供了一种将网络传输业务与存储业务相结合的方法来优化网络存储业务。具体涉及一种针对网络存储业务中描述符队列的优化方法。
本发明是这样的,一种针对网络存储业务的描述符队列优化方法,包括:
在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
在网络数据读取方向:
第一步,主机创建一个描述符环形缓冲区并使用描述符填充描述符缓冲区,这些描述符指向了主存上分配好的内存空间做为数据Buffer使用,主机将这个描述符环形缓冲区的地址同时通知给存储器设备(本发明中的存储器设备指的是SSD或者其他非易失性存储设备而非主存)的读取通道和网卡设备的发送通道,即存储器设备的读取通道和网卡设备的发送通道共用一个描述符环形缓冲区。
第二步,主机将可用的描述符通过配置寄存器的方式通知存储器设备,存储设备检查可用的描述符个数,并通过DMA将描述符从描述符环形队列中搬移到存储器设备,而后存储器设备提取出描述符中所包含的Buffer的地址、长度信息以及所要读取数据在存储器上的地址信息,然后使用DMA的方式将数据搬移到内存中的缓冲区。
第三步,存储器设备将数据搬移的执行状态写回到描述符队列中对应描述符的状态字段中,并以P2P(点对点)操作的方式通知网卡在发送描述符环形缓冲区上有新的描述符可用。
第四步,网卡设备检查可用的发送描述符个数,并读取描述符环形缓冲区,而后解析描述符并提取描述符中的Buffer地址、长度和存储器设备搬移数据的状态信息,并使用DMA的方式从主存的Buffer中读取数据,最终数据通过网络发送。
进一步的,所述描述符环形缓冲区采用多队列的形式管理并支持通过存储设备的读取通道和网卡的发送通道共用缓冲区来传递控制信息,具体实施方式包括:
驱动负责维护描述符缓冲区的生产者指针,而存储器做为使用者维护消费者者指针,驱动没生成新的读取请求后,将其调制成描述符置入描述符环形缓冲区并更新生产者指针,存储器检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符,随后,使用硬件更新网卡的消费者指针,以使得该描述符被网卡处理。
上述描述符包含三个部分:需要读取的存储器文件句柄、指向主存Buffer的指针和存储器执行状态。描述符与队列缓冲区见图2。
在网络数据存储方向:
第一步,主机创建一个描述符环形缓冲区并使用描述符填充描述符缓冲区,这些描述符指向了主存上分配好的内存空间做为数据Buffer使用,主机将这个描述符环形缓冲区的地址同时通知给网卡设备的接收通道和存储器设备的存储通道,即存储器设备的存储通道和网卡设备的接收通道共用一个描述符环形缓冲区。
第二步,网卡将描述符预读取到网卡的接收通道并提取出描述符中所包含的Buffer的地址、长度信息以及所要存储数据在存储器上的地址信息,然后等待存储业务的接收,当从远端接收到存储业务数据时,将数据以DMA的方式搬移到描述符指向的Buffer缓冲区。
第三步,网卡设备将网络数据的接收信息和数据搬移状态写回到描述符的状态字段。并通过P2P的方式通知存储器设备存在可用描述符。
第四步,存储器设备读取可用的描述符并按序进行解析,之后使用DMA的方式将数据从Buffer缓冲区搬移到存储器设备并存储。
进一步的,所述描述符环形缓冲区采用队列的形式管理并支持通过存储设备的存储通道和网卡的接收通道共用缓冲区来传递控制信息,具体实施方式包括:
驱动负责维护描述符缓冲区的生产者指针,而网卡做为使用者维护消费者指针,驱动每生成新的存储请求后,将其调制成描述符置入描述符环形缓冲区并更新生产者指针,网卡设备检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符,随后,使用硬件更新存储器的消费者指针,以使得该描述符被存储器处理。
上述描述符包含三个部分:需要存储的存储器文件句柄、指向主存Buffer的指针和网卡执行状态。描述符与队列缓冲区见图3。
本发明的另一目的在于提供一种实施所述优化方法的针对网络存储业务优化系统内存读写的控制方法,包括:
内存池开辟:本机制仅在系统初始化时执行且执行一次,用于开辟与描述符数目一致多个的内存块,这些内存块用于和描述符队列中的描述符一一绑定,即描述符中的物理地址指向了对应的内存块,且描述符中的状态信息指示了该内存块中数据的填充信息。
内存池循环使用:由于描述符队列是环形队列,描述符的地址将会被循环填充数据、读取描述符,这些描述符包含了真实数据的信息,即Buffer的地址和状态,因此Buffer也在被循环使用,做为中间容器从网卡和存储器搬移数据。
内存池回收:当系统关闭或存储器业务关闭时,通过回收描述符指向的Buffer来释放系统内存。
实施例2
以网络监控业务为例,服务器需要从网络摄像头不断接收视频数据,并存储到本地的存储器。视频数据从远程网络接入到服务器,并进行存储。本发明针对网络存储的优化包括:
S101,在系统初始化时,分配存储描述符环形队列,并分配给网卡和存储器设备共享该描述符队列,以供网卡传递状态信息和控制指令到存储器设备;
S102,在系统初始化时,分配内存池,并填充到对应描述符环形队列的地址,以使得这些内存做为中间容器从网卡向存储器搬移数据。
所述步骤S101具体包括:
Step1:主机在内存中开辟一块物理地址连续的内存块做为描述符环形缓冲区。这个环形缓冲区可以存在多个用于对应硬件上的多通道设备。在初始化内存块操作完成,主机将内存缓存区的基地址和长度配置到网卡和存储器设备的寄存器以告知其描述符环形缓冲区的信息。
Step2:当网络摄像头接入到服务器后,就会定时向服务器发送数据帧,此时主机需要将网络数据存储。
Step3:主机为存储器设备分配文件句柄,即获取存储器设备的写入地址,而后将该信息和控制信息填充到描述符,并通过更新生产者指针通知网卡有新的描述符可用。
Step4:网卡通过DMA方式读取描述符并解析出可用Buffer地址,当接收到数据后即可采用DMA方式将数据搬移到Buffer中,并以P2P方式通知存储器,Buffer存在数据。
Step5:存储器从对应的描述符队列中获取描述符,解析其状态信息和控制指令,而后将数据从Buffer中搬移到存储器中,而后将状态写回到描述符以供主机循环使用。
所述步骤S102具体包括:
Step1:主机在内存中开辟描述符缓冲区大小时会分配好一个队列中所能容纳的描述符个数N,而后主机需要开辟N个数据Buffer,这些Buffer与描述符一一绑定。
Step2:主机将各个Buffer的物理地址和长度填充到描述符的对应位置,此后,Buffer就可以随着描述符中状态信息的改变循环使用。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种网络存储业务的描述符队列和内存优化方法,其特征在于,所述网络存储业务的描述符队列和内存优化方法在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
2.如权利要求1所述网络存储业务的描述符队列和内存优化方法,其特征在于,在网络数据读取方向,所述网络存储业务的描述符队列和内存优化方法包括:
(1)主机创建描述符环形缓冲区并使用描述符填充描述符缓冲区,所述描述符指向主存上分配好的内存空间做为数据Buffer使用,主机将所述描述符环形缓冲区的地址同时通知给存储器设备的读取通道和网卡设备的发送通道,即存储器设备的读取通道和网卡设备的发送通道共用一个描述符环形缓冲区;
(2)主机将可用的描述符通过配置寄存器的方式通知存储器设备,存储设备检查可用的描述符个数,并通过DMA将描述符从描述符环形队列中搬移到存储器设备;存储器设备提取出描述符中所包含的Buffer的地址、长度信息以及所要读取数据在存储器上的地址信息,并使用DMA的方式将数据搬移到内存中的缓冲区;
(3)存储器设备将数据搬移的执行状态写回到描述符队列中对应描述符的状态字段中,并以点对点P2P操作的方式通知网卡在发送描述符环形缓冲区上有新的描述符可用;
(4)网卡设备检查可用的发送描述符个数,并读取描述符环形缓冲区;解析描述符并提取描述符中的Buffer地址、长度和存储器设备搬移数据的状态信息,并使用DMA的方式从主存的Buffer中读取数据,最终数据通过网络发送。
3.如权利要求2所述网络存储业务的描述符队列和内存优化方法,其特征在于,步骤(1)中,所述存储器设备指的是SSD或者其他非易失性存储设备而非主存。
4.如权利要求2所述网络存储业务的描述符队列和内存优化方法,其特征在于,步骤(1)中,所述描述符包括三个部分:需要读取的存储器文件句柄、指向主存Buffer的指针和存储器执行状态;
其中,所述描述符环形缓冲区采用多队列的形式管理并支持通过存储设备的读取通道和网卡的发送通道共用缓冲区传递控制信息,包括:
驱动负责维护描述符缓冲区的生产者指针,而存储器做为使用者维护消费者者指针,驱动没生成新的读取请求后,调制成描述符置入描述符环形缓冲区并更新生产者指针,存储器检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符后,使用硬件更新网卡的消费者指针,以使得该描述符被网卡处理。
5.如权利要求1所述网络存储业务的描述符队列和内存优化方法,其特征在于,在网络数据存储方向,所述网络存储业务的描述符队列和内存优化方法包括:
(1)主机创建描述符环形缓冲区并使用描述符填充描述符缓冲区,所述描述符指向主存上分配好的内存空间做为数据Buffer使用,主机将所述描述符环形缓冲区的地址同时通知给网卡设备的接收通道和存储器设备的存储通道,即存储器设备的存储通道和网卡设备的接收通道共用一个描述符环形缓冲区;
(2)网卡将描述符预读取到网卡的接收通道并提取出描述符中所包含的Buffer的地址、长度信息以及所要存储数据在存储器上的地址信息,然后等待存储业务的接收,当从远端接收到存储业务数据时,将数据以DMA的方式搬移到描述符指向的Buffer缓冲区;
(3)网卡设备将网络数据的接收信息和数据搬移状态写回到描述符的状态字段,并通过P2P的方式通知存储器设备存在可用描述符;
(4)存储器设备读取可用的描述符并按序进行解析后,使用DMA的方式将数据从Buffer缓冲区搬移到存储器设备并存储。
6.如权利要求5所述网络存储业务的描述符队列和内存优化方法,其特征在于,步骤(1)中,所述描述符包括三个部分:需要存储的存储器文件句柄、指向主存Buffer的指针和网卡执行状态;
其中,所述描述符环形缓冲区采用队列的形式管理并支持通过存储设备的存储通道和网卡的接收通道共用缓冲区来传递控制信息,包括:
驱动负责维护描述符缓冲区的生产者指针,而网卡做为使用者维护消费者指针,驱动每生成新的存储请求后,调制成描述符置入描述符环形缓冲区并更新生产者指针,网卡设备检查到生产者指针更新后读取并处理对应的描述符,并在处理完成后将状态信息更新到对应描述符后,使用硬件更新存储器的消费者指针,以使得该描述符被存储器处理。
7.一种实施如权利要求1~6任意一项所述网络存储业务的描述符队列和内存优化方法的针对网络存储业务优化系统内存读写的控制方法,其特征在于,所述针对网络存储业务优化系统内存读写的控制方法包括:
(1)内存池开辟:本机制仅在系统初始化时执行且执行一次,用于开辟与描述符数目一致多个的内存块,所述内存块用于和描述符队列中的描述符一一绑定,即描述符中的物理地址指向对应的内存块,且描述符中的状态信息指示该内存块中数据的填充信息;
(2)内存池循环使用:由于描述符队列是环形队列,描述符的地址将会被循环填充数据、读取描述符,所述描述符包含真实数据的信息,即Buffer的地址和状态,故Buffer也在被循环使用,做为中间容器从网卡和存储器搬移数据;
(3)内存池回收:当系统关闭或存储器业务关闭时,通过回收描述符指向的Buffer来释放系统内存。
8.一种实施权利要求1~6任意一项所述网络存储业务的描述符队列和内存优化方法的网络存储业务的描述符队列和内存优化系统,其特征在于,所述网络存储业务的描述符队列和内存优化系统包括:
网络数据读取模块,用于在网络数据读取方向,将网卡的发送描述符队列与存储器的读取描述符队列相结合;
网络数据存储模块,用于在网络数据存储方向,将网卡的接收描述符队列与存储器的写入描述符队列相结合。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
在网络数据读取方向:将网卡的发送描述符队列与存储器的读取描述符队列相结合;在网络数据存储方向:将网卡的接收描述符队列与存储器的写入描述符队列相结合。
10.一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现如权利要求8所述的网络存储业务的描述符队列和内存优化系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110793832.3A CN113535395B (zh) | 2021-07-14 | 2021-07-14 | 网络存储业务的描述符队列和内存优化方法、系统及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110793832.3A CN113535395B (zh) | 2021-07-14 | 2021-07-14 | 网络存储业务的描述符队列和内存优化方法、系统及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535395A true CN113535395A (zh) | 2021-10-22 |
CN113535395B CN113535395B (zh) | 2024-09-06 |
Family
ID=78098969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110793832.3A Active CN113535395B (zh) | 2021-07-14 | 2021-07-14 | 网络存储业务的描述符队列和内存优化方法、系统及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535395B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225565A (zh) * | 2022-07-25 | 2022-10-21 | 科东(广州)软件科技有限公司 | 数据包收发配置、收取、发送方法及装置、电子设备 |
CN115842790A (zh) * | 2022-12-29 | 2023-03-24 | 三未信安科技股份有限公司 | 一种应用于PCle设备的业务数据流量控制方法 |
CN115905046A (zh) * | 2022-12-23 | 2023-04-04 | 科东(广州)软件科技有限公司 | 网卡驱动数据包处理方法、装置、电子设备及存储介质 |
CN116501657A (zh) * | 2023-06-19 | 2023-07-28 | 阿里巴巴(中国)有限公司 | 缓存数据的处理方法、设备及系统 |
CN116827880A (zh) * | 2023-08-29 | 2023-09-29 | 珠海星云智联科技有限公司 | 一种缓存空间管理方法及装置 |
CN117196929A (zh) * | 2023-09-25 | 2023-12-08 | 沐曦集成电路(上海)有限公司 | 基于定长数据包的软硬件交互系统 |
CN117234972A (zh) * | 2023-08-30 | 2023-12-15 | 中科驭数(北京)科技有限公司 | 一种主机数据读取方法及系统 |
CN117729022A (zh) * | 2023-12-15 | 2024-03-19 | 无锡众星微系统技术有限公司 | 一种软硬件结合的虚拟机防攻击保护方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870627A (en) * | 1995-12-20 | 1999-02-09 | Cirrus Logic, Inc. | System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue |
US6070194A (en) * | 1997-12-17 | 2000-05-30 | Advanced Micro Devices, Inc. | Using an index and count mechanism to coordinate access to a shared resource by interactive devices |
US20060288129A1 (en) * | 2005-06-17 | 2006-12-21 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
CN103150278A (zh) * | 2013-03-05 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于pio和dma混合的网络接口卡描述符提交方法 |
CN104506379A (zh) * | 2014-12-12 | 2015-04-08 | 北京锐安科技有限公司 | 网络数据捕获方法和系统 |
WO2015058699A1 (en) * | 2013-10-23 | 2015-04-30 | Hangzhou H3C Technologies Co., Ltd. | Data forwarding |
CN109783250A (zh) * | 2018-12-18 | 2019-05-21 | 中兴通讯股份有限公司 | 一种报文转发方法及网络设备 |
CN113079113A (zh) * | 2021-03-30 | 2021-07-06 | 扬州万方电子技术有限责任公司 | 数据传输装置和数据传输系统 |
-
2021
- 2021-07-14 CN CN202110793832.3A patent/CN113535395B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870627A (en) * | 1995-12-20 | 1999-02-09 | Cirrus Logic, Inc. | System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue |
US6070194A (en) * | 1997-12-17 | 2000-05-30 | Advanced Micro Devices, Inc. | Using an index and count mechanism to coordinate access to a shared resource by interactive devices |
US20060288129A1 (en) * | 2005-06-17 | 2006-12-21 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
CN103150278A (zh) * | 2013-03-05 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于pio和dma混合的网络接口卡描述符提交方法 |
WO2015058699A1 (en) * | 2013-10-23 | 2015-04-30 | Hangzhou H3C Technologies Co., Ltd. | Data forwarding |
CN104506379A (zh) * | 2014-12-12 | 2015-04-08 | 北京锐安科技有限公司 | 网络数据捕获方法和系统 |
CN109783250A (zh) * | 2018-12-18 | 2019-05-21 | 中兴通讯股份有限公司 | 一种报文转发方法及网络设备 |
CN113079113A (zh) * | 2021-03-30 | 2021-07-06 | 扬州万方电子技术有限责任公司 | 数据传输装置和数据传输系统 |
Non-Patent Citations (2)
Title |
---|
石飞;史岚;乔建忠;莫晓静;: "网络数据采集技术研究", 小型微型计算机系统, no. 10, 15 October 2008 (2008-10-15) * |
郑凯;: "基于PCI+Express 2.0的高速网卡中DMA的设计", 软件, no. 08, 15 August 2017 (2017-08-15) * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225565A (zh) * | 2022-07-25 | 2022-10-21 | 科东(广州)软件科技有限公司 | 数据包收发配置、收取、发送方法及装置、电子设备 |
CN115225565B (zh) * | 2022-07-25 | 2023-12-15 | 科东(广州)软件科技有限公司 | 数据包收发配置、收取、发送方法及装置、电子设备 |
CN115905046A (zh) * | 2022-12-23 | 2023-04-04 | 科东(广州)软件科技有限公司 | 网卡驱动数据包处理方法、装置、电子设备及存储介质 |
CN115905046B (zh) * | 2022-12-23 | 2023-07-07 | 科东(广州)软件科技有限公司 | 网卡驱动数据包处理方法、装置、电子设备及存储介质 |
CN115842790A (zh) * | 2022-12-29 | 2023-03-24 | 三未信安科技股份有限公司 | 一种应用于PCle设备的业务数据流量控制方法 |
CN115842790B (zh) * | 2022-12-29 | 2023-05-02 | 三未信安科技股份有限公司 | 一种应用于PCIe设备的业务数据流量控制方法 |
CN116501657A (zh) * | 2023-06-19 | 2023-07-28 | 阿里巴巴(中国)有限公司 | 缓存数据的处理方法、设备及系统 |
CN116501657B (zh) * | 2023-06-19 | 2023-11-10 | 阿里巴巴(中国)有限公司 | 缓存数据的处理方法、设备及系统 |
CN116827880B (zh) * | 2023-08-29 | 2023-11-17 | 珠海星云智联科技有限公司 | 一种缓存空间管理方法及装置 |
CN116827880A (zh) * | 2023-08-29 | 2023-09-29 | 珠海星云智联科技有限公司 | 一种缓存空间管理方法及装置 |
CN117234972A (zh) * | 2023-08-30 | 2023-12-15 | 中科驭数(北京)科技有限公司 | 一种主机数据读取方法及系统 |
CN117234972B (zh) * | 2023-08-30 | 2024-08-06 | 中科驭数(北京)科技有限公司 | 一种主机数据读取方法及系统 |
CN117196929A (zh) * | 2023-09-25 | 2023-12-08 | 沐曦集成电路(上海)有限公司 | 基于定长数据包的软硬件交互系统 |
CN117196929B (zh) * | 2023-09-25 | 2024-03-08 | 沐曦集成电路(上海)有限公司 | 基于定长数据包的软硬件交互系统 |
CN117729022A (zh) * | 2023-12-15 | 2024-03-19 | 无锡众星微系统技术有限公司 | 一种软硬件结合的虚拟机防攻击保护方法和装置 |
CN117729022B (zh) * | 2023-12-15 | 2024-10-01 | 无锡众星微系统技术有限公司 | 一种软硬件结合的虚拟机防攻击保护方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113535395B (zh) | 2024-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535395B (zh) | 网络存储业务的描述符队列和内存优化方法、系统及应用 | |
US9557922B2 (en) | System and method for peer-to-peer PCIe storage transfers | |
US7870306B2 (en) | Shared memory message switch and cache | |
US20130238582A1 (en) | Method for operating file system and communication device | |
US11201836B2 (en) | Method and device for managing stateful application on server | |
US20210004165A1 (en) | Dummy Host Command Generation For Supporting Higher Maximum Data Transfer Sizes (MDTS) | |
US11863469B2 (en) | Utilizing coherently attached interfaces in a network stack framework | |
US9311044B2 (en) | System and method for supporting efficient buffer usage with a single external memory interface | |
CN113986791A (zh) | 一种智能网卡快速dma设计方法、系统、设备及终端 | |
US11243714B2 (en) | Efficient data movement method for in storage computation | |
US20240069795A1 (en) | Access request reordering across a multiple-channel interface for memory-based communication queues | |
US20230137668A1 (en) | storage device and storage system | |
CN115643318A (zh) | 命令执行方法、装置、设备及计算机可读存储介质 | |
CN116955219B (zh) | 一种数据镜像方法、装置、主机及存储介质 | |
US20150121376A1 (en) | Managing data transfer | |
CN117992125A (zh) | 减少用于基于存储器的通信队列的索引更新消息 | |
US20140164553A1 (en) | Host ethernet adapter frame forwarding | |
US6766358B1 (en) | Exchanging messages between computer systems communicatively coupled in a computer system network | |
US8898353B1 (en) | System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface | |
US8892807B2 (en) | Emulating a skip read command | |
CN114186163A (zh) | 一种应用层网络数据缓存方法 | |
KR20150048028A (ko) | 데이터 전송 관리 방법 | |
US9104637B2 (en) | System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface | |
US20240069805A1 (en) | Access request reordering for memory-based communication queues | |
US12013788B2 (en) | Evicting a cache line with pending control request |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |